From: <ps...@us...> - 2008-10-20 13:00:56
|
Revision: 1256 http://znc.svn.sourceforge.net/znc/?rev=1256&view=rev Author: psychon Date: 2008-10-20 13:00:54 +0000 (Mon, 20 Oct 2008) Log Message: ----------- Some changes to the vhost interface from *status This adds AddVHost, RemVHost and ListVHosts. If this vhost list (which is the same webadmin uses for displaying drop-down lists) is none-empty, then users can only set one of these vhosts via SetVHost. If the list is empty, everything is allowed. Modified Paths: -------------- trunk/ClientCommand.cpp trunk/znc.cpp Modified: trunk/ClientCommand.cpp =================================================================== --- trunk/ClientCommand.cpp 2008-10-19 16:31:26 UTC (rev 1255) +++ trunk/ClientCommand.cpp 2008-10-20 13:00:54 UTC (rev 1256) @@ -749,6 +749,49 @@ PutStatus("Unable to unload [" + sMod + "] Modules are not enabled."); #endif return; + } else if (sCommand.Equals("ADDVHOST") && m_pUser->IsAdmin()) { + CString sVHost = sLine.Token(1); + + if (sVHost.empty()) { + PutStatus("Usage: AddVHost <VHost>"); + return; + } + + if (CZNC::Get().AddVHost(sVHost)) { + PutStatus("Done"); + } else { + PutStatus("The VHost [" + sVHost + "] is already in the list"); + } + } else if ((sCommand.Equals("REMVHOST") || sCommand.Equals("DELVHOST")) && m_pUser->IsAdmin()) { + CString sVHost = sLine.Token(1); + + if (sVHost.empty()) { + PutStatus("Usage: RemVHost <VHost>"); + return; + } + + if (CZNC::Get().RemVHost(sVHost)) { + PutStatus("Done"); + } else { + PutStatus("The VHost [" + sVHost + "] is not in the list"); + } + } else if (sCommand.Equals("LISTVHOSTS") && (m_pUser->IsAdmin() || !m_pUser->DenySetVHost())) { + const VCString& vsVHosts = CZNC::Get().GetVHosts(); + + if (vsVHosts.empty()) { + PutStatus("No VHosts configured"); + return; + } + + CTable Table; + Table.AddColumn("VHost"); + + VCString::const_iterator it; + for (it = vsVHosts.begin(); it != vsVHosts.end(); it++) { + Table.AddRow(); + Table.SetCell("VHost", *it); + } + PutStatus(Table); } else if (sCommand.Equals("SETVHOST") && (m_pUser->IsAdmin() || !m_pUser->DenySetVHost())) { CString sVHost = sLine.Token(1); @@ -757,6 +800,29 @@ return; } + if (sVHost.Equals(m_pUser->GetVHost())) { + PutStatus("You already have this VHost!"); + return; + } + + const VCString& vsVHosts = CZNC::Get().GetVHosts(); + if (!m_pUser->IsAdmin() && !vsVHosts.empty()) { + VCString::const_iterator it; + bool bFound = false; + + for (it = vsVHosts.begin(); it != vsVHosts.end(); it++) { + if (sVHost.Equals(*it)) { + bFound = true; + break; + } + } + + if (!bFound) { + PutStatus("You may not use this VHost. See [ListVHosts] for a list"); + return; + } + } + m_pUser->SetVHost(sVHost); PutStatus("Set VHost to [" + m_pUser->GetVHost() + "]"); } else if (sCommand.Equals("CLEARVHOST") && (m_pUser->IsAdmin() || !m_pUser->DenySetVHost())) { @@ -986,8 +1052,25 @@ Table.SetCell("Arguments", "<#chan> [linecount]"); Table.SetCell("Description", "Set the buffer count for a channel"); + if (m_pUser->IsAdmin()) { + Table.AddRow(); + Table.SetCell("Command", "AddVHost"); + Table.SetCell("Arguments", "<vhost (ip preferred)>"); + Table.SetCell("Description", "Adds a VHost for normal users to use"); + + Table.AddRow(); + Table.SetCell("Command", "RemVHost"); + Table.SetCell("Arguments", "<vhost>"); + Table.SetCell("Description", "Removes a VHost from the list"); + } + if (m_pUser->IsAdmin() || !m_pUser->DenySetVHost()) { Table.AddRow(); + Table.SetCell("Command", "ListVHosts"); + Table.SetCell("Arguments", ""); + Table.SetCell("Description", "Shows the configured list of vhosts"); + + Table.AddRow(); Table.SetCell("Command", "SetVHost"); Table.SetCell("Arguments", "<vhost (ip preferred)>"); Table.SetCell("Description", "Set the VHost for this connection"); Modified: trunk/znc.cpp =================================================================== --- trunk/znc.cpp 2008-10-19 16:31:26 UTC (rev 1255) +++ trunk/znc.cpp 2008-10-20 13:00:54 UTC (rev 1256) @@ -1593,8 +1593,15 @@ } bool CZNC::RemVHost(const CString& sHost) { - // @todo - return true; + VCString::iterator it; + for (it = m_vsVHosts.begin(); it != m_vsVHosts.end(); it++) { + if (sHost.Equals(*it)) { + m_vsVHosts.erase(it); + return true; + } + } + + return false; } void CZNC::Broadcast(const CString& sMessage, bool bAdminOnly, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-10-21 17:41:58
|
Revision: 1257 http://znc.svn.sourceforge.net/znc/?rev=1257&view=rev Author: psychon Date: 2008-10-21 17:41:52 +0000 (Tue, 21 Oct 2008) Log Message: ----------- Support out-of-tree builds The autoconf documentation turned out to be helpful: http://www.gnu.org/software/autoconf/manual/autoconf.html#Build-Directories Modified Paths: -------------- trunk/Makefile.in trunk/man/Makefile.in trunk/modules/Makefile.in Modified: trunk/Makefile.in =================================================================== --- trunk/Makefile.in 2008-10-20 13:00:54 UTC (rev 1256) +++ trunk/Makefile.in 2008-10-21 17:41:52 UTC (rev 1257) @@ -1,3 +1,7 @@ +# Support out-of-tree builds +srcdir := @srcdir@ +VPATH := @srcdir@ + prefix := @prefix@ exec_prefix := @exec_prefix@ datarootdir := @datarootdir@ @@ -49,7 +53,7 @@ %.o: %.cpp Makefile @mkdir -p .depend - $(CXX) $(CXXFLAGS) -c -o $@ $< -MMD -MF .depend/$<.dep + $(CXX) $(CXXFLAGS) -c -o $@ $< -MMD -MF .depend/$@.dep install: znc mkdir -p $(DESTDIR)$(bindir) @@ -57,7 +61,7 @@ install -m 0755 znc $(DESTDIR)$(bindir) install -m 0755 znc-config $(DESTDIR)$(bindir) install -m 0755 znc-buildmod $(DESTDIR)$(bindir) - install -m 0644 *.h $(DESTDIR)$(prefix)/include/znc + install -m 0644 $(srcdir)/*.h $(DESTDIR)$(prefix)/include/znc @if test -n "@MODTARGET@"; then \ $(MAKE) -C modules install DESTDIR=$(DESTDIR); \ fi Modified: trunk/man/Makefile.in =================================================================== --- trunk/man/Makefile.in 2008-10-20 13:00:54 UTC (rev 1256) +++ trunk/man/Makefile.in 2008-10-21 17:41:52 UTC (rev 1257) @@ -1,3 +1,6 @@ +# Support out-of-tree builds +VPATH := @srcdir@ + prefix := @prefix@ exec_prefix := @exec_prefix@ datarootdir := @datarootdir@ Modified: trunk/modules/Makefile.in =================================================================== --- trunk/modules/Makefile.in 2008-10-20 13:00:54 UTC (rev 1256) +++ trunk/modules/Makefile.in 2008-10-21 17:41:52 UTC (rev 1257) @@ -1,3 +1,7 @@ +# Support out-of-tree builds +srcdir := @srcdir@ +VPATH := @srcdir@ + prefix := @prefix@ exec_prefix := @exec_prefix@ datarootdir := @datarootdir@ @@ -9,7 +13,7 @@ localstatedir := @localstatedir@ CXX := @CXX@ # CXXFLAGS are for the main binary, so don't use them here, use MODFLAGS instead -MODFLAGS := @CPPFLAGS@ @MODFLAGS@ -I.. +MODFLAGS := @CPPFLAGS@ @MODFLAGS@ -I$(srcdir)/.. LDFLAGS := @LDFLAGS@ # LIBS are not and should not be used in here. # The znc binary links already against those. @@ -18,14 +22,16 @@ MODDIR := @MODDIR@ DATADIR := @DATADIR@ +FILES := $(basename $(wildcard $(srcdir)/*.cpp)) +# Strip away the srcdir, we want them to be created in the current dir +FILES := $(shell echo $(FILES) | sed -e "s:$(srcdir)/::g") + ifeq "@NOSSL@" "1" -FILES := $(foreach file, $(wildcard *.cpp), \ - $(if $(shell grep REQUIRESSL $(file)), \ +FILES := $(foreach file, $(FILES), \ + $(if $(shell grep REQUIRESSL $(srcdir)/$(file).cpp), \ , \ $(basename $(file)) \ )) -else -FILES := $(basename $(wildcard *.cpp)) endif ifneq "$(PERL)" "" @@ -57,8 +63,9 @@ rm -rf $(DESTDIR)$(MODDIR)/*.so install_metadirs: create_install_dir - for a in *; do \ - if [ -d $$a ] && [ -f $${a}.so ]; then \ + for a in $(srcdir)/*; do \ + d=$$(echo $$a | sed -e "s:$(srcdir)/::g"); \ + if [ -d $$a ] && [ -f $${d}.so ]; then \ cp -Rp $$a $(DESTDIR)$(DATADIR); \ fi \ done @@ -68,10 +75,10 @@ %.so: %.cpp Makefile @mkdir -p .depend - $(CXX) $(MODFLAGS) $(LDFLAGS) -shared -o $@ $< $($(basename $<)FLAGS) -MMD -MF .depend/$<.dep + $(CXX) $(MODFLAGS) $(LDFLAGS) -shared -o $@ $< $($(basename $@)FLAGS) -MMD -MF .depend/$@.dep modperl_install: create_install_dir - for i in *.pm; do \ + for i in $(srcdir)/*.pm; do \ install -m 0644 $$i $(DESTDIR)$(MODDIR); \ done This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-10-22 19:41:02
|
Revision: 1258 http://znc.svn.sourceforge.net/znc/?rev=1258&view=rev Author: psychon Date: 2008-10-22 19:40:51 +0000 (Wed, 22 Oct 2008) Log Message: ----------- Make ZNC compile on Mac OS out of the box Thanks to ashikase for pointing out the needed linker and compiler flags. Thanks to GiZMo for testing on his mac 10.5.4. This also cleans up configure.in a little by adding appendMod. Modified Paths: -------------- trunk/configure trunk/configure.in trunk/modules/Makefile.in trunk/znc-config.in Modified: trunk/configure =================================================================== --- trunk/configure 2008-10-21 17:41:52 UTC (rev 1257) +++ trunk/configure 2008-10-22 19:40:51 UTC (rev 1258) @@ -630,6 +630,8 @@ host_vendor host_os MODFLAGS +MODULES +MODLINK MODTARGET NOSSL PERL @@ -2426,6 +2428,14 @@ fi } +appendMod () { + if test "$MODFLAGS" != ""; then + MODFLAGS="$MODFLAGS $*" + else + MODFLAGS=$* + fi +} + appendLD () { if test "$LDFLAGS" != ""; then LDFLAGS="$LDFLAGS $*" @@ -2440,7 +2450,7 @@ freebsd*) appendCXX -I/usr/local/include appendLib -L/usr/local/lib -lcompat - MODFLAGS="$MODFLAGS -L/usr/local/lib" + appendMod -L/usr/local/lib ;; solaris*) appendLib -lsocket -lnsl @@ -2449,6 +2459,9 @@ cygwin) ISCYGWIN=1 ;; + darwin*) + ISDARWIN=1 + ;; esac # cygwin @@ -3055,17 +3068,30 @@ fi appendCXX -D_MODULES - MODFLAGS="$MODFLAGS $CXXFLAGS" - if test -z "$ISSUN"; then + appendMod "$CXXFLAGS" + + if test -z "$ISSUN" -a -z "$ISDARWIN"; then + # This is an unknown compiler flag on some OS appendLD -Wl,--export-dynamic fi MODTARGET="modules" - # FIXME why don't we do this for sun? + # FIXME why do we need this for sun? if test -n "$ISSUN"; then - MODFLAGS="$MODFLAGS -mimpure-text" + appendMod -mimpure-text fi + if test -z "$ISDARWIN"; then + MODLINK="-shared" + else + # Mac OS X differentiates between shared libs (-dynamiclib) + # and loadable modules (-bundle). + MODLINK="-bundle -flat_namespace -undefined suppress" + # TODO test if -twolevel_namespace and/or + # -undefined dynamic_lookup work + # (dynamic_lookup might only work on 10.4 and later) + fi + appendCXX "-D_MODDIR_=\\\"${MODDIR}\\\"" appendCXX "-D_DATADIR_=\\\"${DATADIR}\\\"" @@ -3241,6 +3267,8 @@ + + ac_config_files="$ac_config_files Makefile" ac_config_files="$ac_config_files znc-config" @@ -3938,6 +3966,8 @@ host_vendor!$host_vendor$ac_delim host_os!$host_os$ac_delim MODFLAGS!$MODFLAGS$ac_delim +MODULES!$MODULES$ac_delim +MODLINK!$MODLINK$ac_delim MODTARGET!$MODTARGET$ac_delim NOSSL!$NOSSL$ac_delim PERL!$PERL$ac_delim @@ -3948,7 +3978,7 @@ LTLIBOBJS!$LTLIBOBJS$ac_delim _ACEOF - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 61; then + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 63; then break elif $ac_last_try; then { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 Modified: trunk/configure.in =================================================================== --- trunk/configure.in 2008-10-21 17:41:52 UTC (rev 1257) +++ trunk/configure.in 2008-10-22 19:40:51 UTC (rev 1258) @@ -24,6 +24,14 @@ fi } +appendMod () { + if test "$MODFLAGS" != ""; then + MODFLAGS="$MODFLAGS $*" + else + MODFLAGS=$* + fi +} + appendLD () { if test "$LDFLAGS" != ""; then LDFLAGS="$LDFLAGS $*" @@ -38,7 +46,7 @@ freebsd*) appendCXX -I/usr/local/include appendLib -L/usr/local/lib -lcompat - MODFLAGS="$MODFLAGS -L/usr/local/lib" + appendMod -L/usr/local/lib ;; solaris*) appendLib -lsocket -lnsl @@ -47,6 +55,9 @@ cygwin) ISCYGWIN=1 ;; + darwin*) + ISDARWIN=1 + ;; esac # cygwin @@ -159,17 +170,30 @@ fi appendCXX -D_MODULES - MODFLAGS="$MODFLAGS $CXXFLAGS" - if test -z "$ISSUN"; then + appendMod "$CXXFLAGS" + + if test -z "$ISSUN" -a -z "$ISDARWIN"; then + # This is an unknown compiler flag on some OS appendLD -Wl,--export-dynamic fi MODTARGET="modules" - # FIXME why don't we do this for sun? + # FIXME why do we need this for sun? if test -n "$ISSUN"; then - MODFLAGS="$MODFLAGS -mimpure-text" + appendMod -mimpure-text fi + if test -z "$ISDARWIN"; then + MODLINK="-shared" + else + # Mac OS X differentiates between shared libs (-dynamiclib) + # and loadable modules (-bundle). + MODLINK="-bundle -flat_namespace -undefined suppress" + # TODO test if -twolevel_namespace and/or + # -undefined dynamic_lookup work + # (dynamic_lookup might only work on 10.4 and later) + fi + appendCXX "-D_MODDIR_=\\\"${MODDIR}\\\"" appendCXX "-D_DATADIR_=\\\"${DATADIR}\\\"" @@ -202,6 +226,7 @@ AC_SUBST([MODFLAGS]) AC_SUBST([LDFLAGS]) AC_SUBST([LIBS]) +AC_SUBST([MODLINK]) AC_SUBST([MODTARGET]) AC_SUBST([NOSSL]) AC_SUBST([PERL]) Modified: trunk/modules/Makefile.in =================================================================== --- trunk/modules/Makefile.in 2008-10-21 17:41:52 UTC (rev 1257) +++ trunk/modules/Makefile.in 2008-10-22 19:40:51 UTC (rev 1258) @@ -14,6 +14,7 @@ CXX := @CXX@ # CXXFLAGS are for the main binary, so don't use them here, use MODFLAGS instead MODFLAGS := @CPPFLAGS@ @MODFLAGS@ -I$(srcdir)/.. +MODLINK := @MODLINK@ LDFLAGS := @LDFLAGS@ # LIBS are not and should not be used in here. # The znc binary links already against those. @@ -75,7 +76,7 @@ %.so: %.cpp Makefile @mkdir -p .depend - $(CXX) $(MODFLAGS) $(LDFLAGS) -shared -o $@ $< $($(basename $@)FLAGS) -MMD -MF .depend/$@.dep + $(CXX) $(MODFLAGS) $(LDFLAGS) $(MODLINK) -o $@ $< $($(basename $@)FLAGS) -MMD -MF .depend/$@.dep modperl_install: create_install_dir for i in $(srcdir)/*.pm; do \ Modified: trunk/znc-config.in =================================================================== --- trunk/znc-config.in 2008-10-21 17:41:52 UTC (rev 1257) +++ trunk/znc-config.in 2008-10-22 19:40:51 UTC (rev 1258) @@ -8,6 +8,7 @@ CXX="@CXX@" CXXFLAGS="@CPPFLAGS@ @MODFLAGS@ -I@prefix@/include/znc" +MODLINK="@MODLINK@" # LIBS="@LIBS@" # No libs needed, ZNC links against $LIBS and thus modules don't need to. LIBS="" @@ -19,6 +20,7 @@ echo "USAGE: $0 <flag>" echo " --cxx [$CXX]" echo " --cflags [$CXXFLAGS]" + echo " --modlink [$MODLINK]" echo " --libs [$LIBS]" echo " --moddir [$MODDIR]" echo " --datadir [$DATADIR]" @@ -32,6 +34,8 @@ echo $CXX;; --cflags) echo $CXXFLAGS;; + --modlink) + echo $MODLINK;; --include) # Left here for backwards compatibility ;; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-10-29 17:26:37
|
Revision: 1266 http://znc.svn.sourceforge.net/znc/?rev=1266&view=rev Author: psychon Date: 2008-10-29 17:26:30 +0000 (Wed, 29 Oct 2008) Log Message: ----------- Rename OnUserAttached and OnUserDetached and add OnClientConnect OnUserAttached is renamed to OnClientLogin and OnUserDetached to OnClientDisconnect. This adds some new function with different arguments for the old names to cause warnings from -Woverloaded-virtual while compiling. This patch also adds OnClientConnect() which is called when the low-level raw connection is established. (No SSL-handshake was done at this point yet!) Modified Paths: -------------- trunk/Client.cpp trunk/Modules.cpp trunk/Modules.h trunk/modules/away.cpp trunk/modules/awaynick.cpp trunk/modules/email.cpp trunk/modules/modperl.cpp trunk/modules/partyline.cpp trunk/modules/schat.cpp trunk/modules/simple_away.cpp trunk/modules/watch.cpp trunk/znc.h Modified: trunk/Client.cpp =================================================================== --- trunk/Client.cpp 2008-10-28 17:21:53 UTC (rev 1265) +++ trunk/Client.cpp 2008-10-29 17:26:30 UTC (rev 1266) @@ -660,7 +660,7 @@ SendMotd(); - MODULECALL(OnUserAttached(), m_pUser, this, ); + MODULECALL(OnClientLogin(), m_pUser, this, ); } void CClient::StartLoginTimeout() { @@ -693,7 +693,7 @@ m_pIRCSock = NULL; - MODULECALL(OnUserDetached(), m_pUser, this, ); + MODULECALL(OnClientDisconnect(), m_pUser, this, ); } void CClient::ReachedMaxBuffer() { Modified: trunk/Modules.cpp =================================================================== --- trunk/Modules.cpp 2008-10-28 17:21:53 UTC (rev 1265) +++ trunk/Modules.cpp 2008-10-29 17:26:30 UTC (rev 1266) @@ -473,8 +473,8 @@ void CModule::OnJoin(const CNick& Nick, CChan& Channel) {} void CModule::OnPart(const CNick& Nick, CChan& Channel) {} -void CModule::OnUserAttached() {} -void CModule::OnUserDetached() {} +void CModule::OnClientLogin() {} +void CModule::OnClientDisconnect() {} CModule::EModRet CModule::OnUserRaw(CString& sLine) { return CONTINUE; } CModule::EModRet CModule::OnUserCTCPReply(CString& sTarget, CString& sMessage) { return CONTINUE; } CModule::EModRet CModule::OnUserCTCP(CString& sTarget, CString& sMessage) { return CONTINUE; } @@ -539,6 +539,7 @@ /////////////////// CModule::EModRet CGlobalModule::OnConfigLine(const CString& sName, const CString& sValue, CUser* pUser, CChan* pChan) { return CONTINUE; } CModule::EModRet CGlobalModule::OnDeleteUser(CUser& User) { return CONTINUE; } +void CGlobalModule::OnClientConnect(CClient* pClient, const CString& sHost, unsigned short uPort) {} CModule::EModRet CGlobalModule::OnLoginAttempt(CSmartPtr<CAuthBase> Auth) { return CONTINUE; } void CGlobalModule::OnFailedLogin(const CString& sUsername, const CString& sRemoteIP) {} @@ -591,8 +592,8 @@ bool CModules::OnMode(const CNick& OpNick, CChan& Channel, char uMode, const CString& sArg, bool bAdded, bool bNoChange) { MODUNLOADCHK(OnMode(OpNick, Channel, uMode, sArg, bAdded, bNoChange)); return false; } bool CModules::OnRaw(CString& sLine) { MODHALTCHK(OnRaw(sLine)); } -bool CModules::OnUserAttached() { MODUNLOADCHK(OnUserAttached()); return false; } -bool CModules::OnUserDetached() { MODUNLOADCHK(OnUserDetached()); return false; } +bool CModules::OnClientLogin() { MODUNLOADCHK(OnClientLogin()); return false; } +bool CModules::OnClientDisconnect() { MODUNLOADCHK(OnClientDisconnect()); return false; } bool CModules::OnUserRaw(CString& sLine) { MODHALTCHK(OnUserRaw(sLine)); } bool CModules::OnUserCTCPReply(CString& sTarget, CString& sMessage) { MODHALTCHK(OnUserCTCPReply(sTarget, sMessage)); } bool CModules::OnUserCTCP(CString& sTarget, CString& sMessage) { MODHALTCHK(OnUserCTCP(sTarget, sMessage)); } @@ -635,6 +636,10 @@ GLOBALMODHALTCHK(OnDeleteUser(User)); } +void CGlobalModules::OnClientConnect(CClient* pClient, const CString& sHost, unsigned short uPort) { + GLOBALMODCALL(OnClientConnect(pClient, sHost, uPort)); +} + bool CGlobalModules::OnLoginAttempt(CSmartPtr<CAuthBase> Auth) { GLOBALMODHALTCHK(OnLoginAttempt(Auth)); } Modified: trunk/Modules.h =================================================================== --- trunk/Modules.h 2008-10-28 17:21:53 UTC (rev 1265) +++ trunk/Modules.h 2008-10-29 17:26:30 UTC (rev 1266) @@ -254,8 +254,10 @@ virtual void OnJoin(const CNick& Nick, CChan& Channel); virtual void OnPart(const CNick& Nick, CChan& Channel); - virtual void OnUserAttached(); - virtual void OnUserDetached(); + virtual void OnUserAttached(bool thisFunctionWasRemoved, bool UseOnClientLogin) {} + virtual void OnUserDetached(bool thisFunctionWasRemoved, bool UseOnClientDisconnect) {} + virtual void OnClientLogin(); + virtual void OnClientDisconnect(); virtual EModRet OnUserRaw(CString& sLine); virtual EModRet OnUserCTCPReply(CString& sTarget, CString& sMessage); virtual EModRet OnUserCTCP(CString& sTarget, CString& sMessage); @@ -395,8 +397,8 @@ virtual bool OnJoin(const CNick& Nick, CChan& Channel); virtual bool OnPart(const CNick& Nick, CChan& Channel); - virtual bool OnUserAttached(); - virtual bool OnUserDetached(); + virtual bool OnClientLogin(); + virtual bool OnClientDisconnect(); virtual bool OnUserRaw(CString& sLine); virtual bool OnUserCTCPReply(CString& sTarget, CString& sMessage); virtual bool OnUserCTCP(CString& sTarget, CString& sMessage); @@ -441,6 +443,7 @@ virtual EModRet OnConfigLine(const CString& sName, const CString& sValue, CUser* pUser, CChan* pChan); virtual EModRet OnDeleteUser(CUser& User); + virtual void OnClientConnect(CClient* pClient, const CString& sHost, unsigned short uPort); virtual EModRet OnLoginAttempt(CSmartPtr<CAuthBase> Auth); virtual void OnFailedLogin(const CString& sUsername, const CString& sRemoteIP); private: @@ -453,6 +456,7 @@ virtual bool OnConfigLine(const CString& sName, const CString& sValue, CUser* pUser, CChan* pChan); virtual bool OnDeleteUser(CUser& User); + virtual void OnClientConnect(CClient* pClient, const CString& sHost, unsigned short uPort); virtual bool OnLoginAttempt(CSmartPtr<CAuthBase> Auth); virtual void OnFailedLogin(const CString& sUsername, const CString& sRemoteIP); private: Modified: trunk/modules/away.cpp =================================================================== --- trunk/modules/away.cpp 2008-10-28 17:21:53 UTC (rev 1265) +++ trunk/modules/away.cpp 2008-10-29 17:26:30 UTC (rev 1266) @@ -138,11 +138,11 @@ } } - virtual void OnUserAttached() + virtual void OnClientLogin() { Back(true); } - virtual void OnUserDetached() + virtual void OnClientDisconnect() { Away(); } Modified: trunk/modules/awaynick.cpp =================================================================== --- trunk/modules/awaynick.cpp 2008-10-28 17:21:53 UTC (rev 1265) +++ trunk/modules/awaynick.cpp 2008-10-29 17:26:30 UTC (rev 1266) @@ -94,11 +94,11 @@ RemTimer("BackNickTimer"); } - virtual void OnUserAttached() { + virtual void OnClientLogin() { StartBackNickTimer(); } - virtual void OnUserDetached() { + virtual void OnClientDisconnect() { if (!m_pUser->IsUserAttached()) { StartAwayNickTimer(); } Modified: trunk/modules/email.cpp =================================================================== --- trunk/modules/email.cpp 2008-10-28 17:21:53 UTC (rev 1265) +++ trunk/modules/email.cpp 2008-10-29 17:26:30 UTC (rev 1266) @@ -62,14 +62,14 @@ return true; } - virtual void OnUserAttached() + virtual void OnClientLogin() { stringstream s; s << "You have " << m_ssUidls.size() << " emails."; PutModule(s.str()); StartTimer(); } - virtual void OnUserDetached() + virtual void OnClientDisconnect() { RemTimer("EMAIL::" + m_pUser->GetUserName()); } Modified: trunk/modules/modperl.cpp =================================================================== --- trunk/modules/modperl.cpp 2008-10-28 17:21:53 UTC (rev 1265) +++ trunk/modules/modperl.cpp 2008-10-29 17:26:30 UTC (rev 1266) @@ -302,8 +302,8 @@ void UnSetUser() { m_pUser = NULL; } virtual bool OnLoad(const CString & sArgs, CString & sMessage); - virtual void OnUserAttached() { CBNone("OnUserAttached"); } - virtual void OnUserDetached() { CBNone("OnUserDetached"); } + virtual void OnClientLogin() { CBNone("OnClientLogin"); } + virtual void OnClientDisconnect() { CBNone("OnClientDisconnect"); } virtual void OnIRCDisconnected() { CBNone("OnIRCDisconnected"); } virtual void OnIRCConnected() { CBNone("OnIRCConnected"); } Modified: trunk/modules/partyline.cpp =================================================================== --- trunk/modules/partyline.cpp 2008-10-28 17:21:53 UTC (rev 1265) +++ trunk/modules/partyline.cpp 2008-10-29 17:26:30 UTC (rev 1266) @@ -148,7 +148,7 @@ m_spInjectedPrefixes.erase(m_pUser); } - virtual void OnUserAttached() { + virtual void OnClientLogin() { if (m_spInjectedPrefixes.find(m_pUser) == m_spInjectedPrefixes.end()) { m_pClient->PutClient(":" + GetIRCServer(m_pUser) + " 005 " + m_pUser->GetIRCNick().GetNick() + " CHANTYPES=" + m_pUser->GetChanPrefixes() + "~ :are supported by this server."); } @@ -193,7 +193,7 @@ } } - virtual void OnUserDetached() { + virtual void OnClientDisconnect() { if (!m_pUser->IsUserAttached() && !m_pUser->IsBeingDeleted()) { for (set<CPartylineChannel*>::iterator it = m_ssChannels.begin(); it != m_ssChannels.end(); it++) { const set<CString>& ssNicks = (*it)->GetNicks(); Modified: trunk/modules/schat.cpp =================================================================== --- trunk/modules/schat.cpp 2008-10-28 17:21:53 UTC (rev 1265) +++ trunk/modules/schat.cpp 2008-10-29 17:26:30 UTC (rev 1266) @@ -135,7 +135,7 @@ return true; } - virtual void OnUserAttached() + virtual void OnClientLogin() { CString sName = "SCHAT::" + m_pUser->GetUserName(); for (u_int a = 0; a < m_pManager->size(); a++) Modified: trunk/modules/simple_away.cpp =================================================================== --- trunk/modules/simple_away.cpp 2008-10-28 17:21:53 UTC (rev 1265) +++ trunk/modules/simple_away.cpp 2008-10-29 17:26:30 UTC (rev 1266) @@ -79,11 +79,11 @@ SetAway(false); } - virtual void OnUserAttached() { + virtual void OnClientLogin() { SetBack(); } - virtual void OnUserDetached() { + virtual void OnClientDisconnect() { /* There might still be other clients */ if (!m_pUser->IsUserAttached()) SetAway(); Modified: trunk/modules/watch.cpp =================================================================== --- trunk/modules/watch.cpp 2008-10-28 17:21:53 UTC (rev 1265) +++ trunk/modules/watch.cpp 2008-10-29 17:26:30 UTC (rev 1266) @@ -163,7 +163,7 @@ Process(OpNick, "* " + OpNick.GetNick() + " sets mode: " + sModes + " " + sArgs + " on " + Channel.GetName(), Channel.GetName()); } - virtual void OnUserAttached() { + virtual void OnClientLogin() { CString sBufLine; while (m_Buffer.GetNextLine(m_pUser->GetCurNick(), sBufLine)) { PutUser(sBufLine); Modified: trunk/znc.h =================================================================== --- trunk/znc.h 2008-10-28 17:21:53 UTC (rev 1265) +++ trunk/znc.h 2008-10-29 17:26:30 UTC (rev 1266) @@ -234,7 +234,9 @@ } virtual Csock* GetSockObj(const CString& sHost, unsigned short uPort) { - return new CClient(sHost, uPort); + CClient *pClient = new CClient(sHost, uPort); + CZNC::Get().GetModules().OnClientConnect(pClient, sHost, uPort); + return pClient; } virtual void SockError(int iErrno) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sil...@us...> - 2008-11-20 11:45:54
|
Revision: 1270 http://znc.svn.sourceforge.net/znc/?rev=1270&view=rev Author: silverleo Date: 2008-11-20 11:45:51 +0000 (Thu, 20 Nov 2008) Log Message: ----------- Enable IPv6 support by default Modified Paths: -------------- trunk/configure trunk/configure.in Modified: trunk/configure =================================================================== --- trunk/configure 2008-11-11 09:44:14 UTC (rev 1269) +++ trunk/configure 2008-11-20 11:45:51 UTC (rev 1270) @@ -1224,7 +1224,7 @@ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-debug enable debuging - --enable-ipv6 enable ipv6 support + --disable-ipv6 disable ipv6 support --disable-modules disable modules --disable-openssl disable openssl --disable-perl disable perl @@ -2487,7 +2487,7 @@ if test "${enable_ipv6+set}" = set; then enableval=$enable_ipv6; IPV6="$enableval" else - IPV6="no" + IPV6="yes" fi # Check whether --enable-modules was given. Modified: trunk/configure.in =================================================================== --- trunk/configure.in 2008-11-11 09:44:14 UTC (rev 1269) +++ trunk/configure.in 2008-11-20 11:45:51 UTC (rev 1270) @@ -75,9 +75,9 @@ [DEBUG="$enableval"], [DEBUG="no"]) AC_ARG_ENABLE( [ipv6], - AS_HELP_STRING([--enable-ipv6], [enable ipv6 support]), + AS_HELP_STRING([--disable-ipv6], [disable ipv6 support]), [IPV6="$enableval"], - [IPV6="no"]) + [IPV6="yes"]) AC_ARG_ENABLE( [modules], AS_HELP_STRING([--disable-modules], [disable modules]), [MODULES="$enableval"], This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sil...@us...> - 2008-11-24 17:56:38
|
Revision: 1271 http://znc.svn.sourceforge.net/znc/?rev=1271&view=rev Author: silverleo Date: 2008-11-24 17:56:34 +0000 (Mon, 24 Nov 2008) Log Message: ----------- Added OnIRCRegistration(). Patch from Freman. Thanks :) Modified Paths: -------------- trunk/IRCSock.cpp trunk/Modules.cpp trunk/Modules.h trunk/modules/modperl.cpp trunk/modules/sample.cpp Modified: trunk/IRCSock.cpp =================================================================== --- trunk/IRCSock.cpp 2008-11-20 11:45:51 UTC (rev 1270) +++ trunk/IRCSock.cpp 2008-11-24 17:56:34 UTC (rev 1271) @@ -805,12 +805,19 @@ DEBUG_ONLY(cout << GetSockName() << " == Connected()" << endl); m_pUser->IRCConnected(this); - if (!m_sPass.empty()) { - PutIRC("PASS " + m_sPass); + CString sPass = m_sPass; + CString sNick = m_pUser->GetNick(); + CString sIdent = m_pUser->GetIdent(); + CString sRealName = m_pUser->GetRealName(); + + MODULECALL(OnIRCRegistration(sPass, sNick, sIdent, sRealName), m_pUser, NULL, return); + + if (!sPass.empty()) { + PutIRC("PASS " + sPass); } - PutIRC("NICK " + m_pUser->GetNick()); - PutIRC("USER " + m_pUser->GetIdent() + " \"" + m_pUser->GetIdent() + "\" \"" + m_pUser->GetIdent() + "\" :" + m_pUser->GetRealName()); + PutIRC("NICK " + sNick); + PutIRC("USER " + sIdent + " \"" + sIdent + "\" \"" + sIdent + "\" :" + sRealName); } void CIRCSock::Disconnected() { Modified: trunk/Modules.cpp =================================================================== --- trunk/Modules.cpp 2008-11-20 11:45:51 UTC (rev 1270) +++ trunk/Modules.cpp 2008-11-24 17:56:34 UTC (rev 1271) @@ -448,6 +448,7 @@ void CModule::OnPostRehash() {} void CModule::OnIRCDisconnected() {} void CModule::OnIRCConnected() {} +CModule::EModRet CModule::OnIRCRegistration(CString& sPass, CString& sNick, CString& sIdent, CString& sRealName) { return CONTINUE; } CModule::EModRet CModule::OnBroadcast(CString& sMessage) { return CONTINUE; } CModule::EModRet CModule::OnDCCUserSend(const CNick& RemoteNick, unsigned long uLongIP, unsigned short uPort, const CString& sFile, unsigned long uFileSize) { return CONTINUE; } @@ -580,6 +581,7 @@ bool CModules::OnPreRehash() { MODUNLOADCHK(OnPreRehash()); return false; } bool CModules::OnPostRehash() { MODUNLOADCHK(OnPostRehash()); return false; } bool CModules::OnIRCConnected() { MODUNLOADCHK(OnIRCConnected()); return false; } +bool CModules::OnIRCRegistration(CString& sPass, CString& sNick, CString& sIdent, CString& sRealName) { MODHALTCHK(OnIRCRegistration(sPass, sNick, sIdent, sRealName)); } bool CModules::OnBroadcast(CString& sMessage) { MODHALTCHK(OnBroadcast(sMessage)); } bool CModules::OnIRCDisconnected() { MODUNLOADCHK(OnIRCDisconnected()); return false; } bool CModules::OnDCCUserSend(const CNick& RemoteNick, unsigned long uLongIP, unsigned short uPort, const CString& sFile, unsigned long uFileSize) { MODHALTCHK(OnDCCUserSend(RemoteNick, uLongIP, uPort, sFile, uFileSize)); } Modified: trunk/Modules.h =================================================================== --- trunk/Modules.h 2008-11-20 11:45:51 UTC (rev 1270) +++ trunk/Modules.h 2008-11-24 17:56:34 UTC (rev 1271) @@ -229,6 +229,7 @@ virtual void OnPostRehash(); virtual void OnIRCDisconnected(); virtual void OnIRCConnected(); + virtual EModRet OnIRCRegistration(CString& sPass, CString& sNick, CString& sIdent, CString& sRealName); virtual EModRet OnBroadcast(CString& sMessage); virtual EModRet OnDCCUserSend(const CNick& RemoteNick, unsigned long uLongIP, unsigned short uPort, const CString& sFile, unsigned long uFileSize); @@ -372,6 +373,7 @@ virtual bool OnPostRehash(); virtual bool OnIRCDisconnected(); virtual bool OnIRCConnected(); + virtual bool OnIRCRegistration(CString& sPass, CString& sNick, CString& sIdent, CString& sRealName); virtual bool OnBroadcast(CString& sMessage); virtual bool OnDCCUserSend(const CNick& RemoteNick, unsigned long uLongIP, unsigned short uPort, const CString& sFile, unsigned long uFileSize); Modified: trunk/modules/modperl.cpp =================================================================== --- trunk/modules/modperl.cpp 2008-11-20 11:45:51 UTC (rev 1270) +++ trunk/modules/modperl.cpp 2008-11-24 17:56:34 UTC (rev 1271) @@ -333,6 +333,10 @@ virtual EModRet OnUserRaw(CString& sLine) { return(CBSingle("OnUserRaw", sLine)); } virtual EModRet OnRaw(CString& sLine) { return(CBSingle("OnRaw", sLine)); } + virtual EModRet OnIRCRegistration(CString& sPass, CString& sNick, CString& sIdent, CString& sRealName) { + return(CBFour("OnIRCRegistration", sPass, sNick, sIdent, sRealName)); + } + virtual void OnModCommand(const CString& sCommand) { if (CBSingle("OnModCommand", sCommand) == 0) Modified: trunk/modules/sample.cpp =================================================================== --- trunk/modules/sample.cpp 2008-11-20 11:45:51 UTC (rev 1270) +++ trunk/modules/sample.cpp 2008-11-24 17:56:34 UTC (rev 1271) @@ -52,6 +52,11 @@ PutModule("You got disconnected BoyOh."); } + virtual EModRet OnIRCRegistration(CString& sPass, CString& sNick, CString& sIdent, CString& sRealName) { + sRealName += " - ZNC"; + return CONTINUE; + } + virtual EModRet OnBroadcast(CString& sMessage) { PutModule("------ [" + sMessage + "]"); sMessage = "======== [" + sMessage + "] ========"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sil...@us...> - 2008-11-25 10:53:44
|
Revision: 1272 http://znc.svn.sourceforge.net/znc/?rev=1272&view=rev Author: silverleo Date: 2008-11-25 10:53:40 +0000 (Tue, 25 Nov 2008) Log Message: ----------- Added OnTimerAutoJoin(). Patch from Freman. Thanks :) Modified Paths: -------------- trunk/Modules.cpp trunk/Modules.h trunk/User.cpp trunk/modules/modperl.cpp trunk/modules/sample.cpp Modified: trunk/Modules.cpp =================================================================== --- trunk/Modules.cpp 2008-11-24 17:56:34 UTC (rev 1271) +++ trunk/Modules.cpp 2008-11-25 10:53:40 UTC (rev 1272) @@ -497,6 +497,7 @@ CModule::EModRet CModule::OnPrivNotice(CNick& Nick, CString& sMessage) { return CONTINUE; } CModule::EModRet CModule::OnChanNotice(CNick& Nick, CChan& Channel, CString& sMessage) { return CONTINUE; } CModule::EModRet CModule::OnTopic(CNick& Nick, CChan& Channel, CString& sTopic) { return CONTINUE; } +CModule::EModRet CModule::OnTimerAutoJoin(CChan& Channel) { return CONTINUE; } void* CModule::GetDLL() { return m_pDLL; } bool CModule::PutIRC(const CString& sLine) { @@ -622,6 +623,7 @@ bool CModules::OnPrivNotice(CNick& Nick, CString& sMessage) { MODHALTCHK(OnPrivNotice(Nick, sMessage)); } bool CModules::OnChanNotice(CNick& Nick, CChan& Channel, CString& sMessage) { MODHALTCHK(OnChanNotice(Nick, Channel, sMessage)); } bool CModules::OnTopic(CNick& Nick, CChan& Channel, CString& sTopic) { MODHALTCHK(OnTopic(Nick, Channel, sTopic)); } +bool CModules::OnTimerAutoJoin(CChan& Channel) { MODHALTCHK(OnTimerAutoJoin(Channel)); } bool CModules::OnStatusCommand(CString& sCommand) { MODHALTCHK(OnStatusCommand(sCommand)); } bool CModules::OnModCommand(const CString& sCommand) { MODUNLOADCHK(OnModCommand(sCommand)); return false; } bool CModules::OnModNotice(const CString& sMessage) { MODUNLOADCHK(OnModNotice(sMessage)); return false; } Modified: trunk/Modules.h =================================================================== --- trunk/Modules.h 2008-11-24 17:56:34 UTC (rev 1271) +++ trunk/Modules.h 2008-11-25 10:53:40 UTC (rev 1272) @@ -280,6 +280,7 @@ virtual EModRet OnPrivNotice(CNick& Nick, CString& sMessage); virtual EModRet OnChanNotice(CNick& Nick, CChan& Channel, CString& sMessage); virtual EModRet OnTopic(CNick& Nick, CChan& Channel, CString& sTopic); + virtual EModRet OnTimerAutoJoin(CChan& Channel); void * GetDLL(); static double GetCoreVersion() { return VERSION; } @@ -422,6 +423,7 @@ virtual bool OnPrivNotice(CNick& Nick, CString& sMessage); virtual bool OnChanNotice(CNick& Nick, CChan& Channel, CString& sMessage); virtual bool OnTopic(CNick& Nick, CChan& Channel, CString& sTopic); + virtual bool OnTimerAutoJoin(CChan& Channel); CModule* FindModule(const CString& sModule) const; bool LoadModule(const CString& sModule, const CString& sArgs, CUser* pUser, CString& sRetMsg, bool bFake = false); Modified: trunk/User.cpp =================================================================== --- trunk/User.cpp 2008-11-24 17:56:34 UTC (rev 1271) +++ trunk/User.cpp 2008-11-25 10:53:40 UTC (rev 1272) @@ -669,6 +669,8 @@ pChan->Disable(); } else { pChan->IncJoinTries(); + MODULECALL(OnTimerAutoJoin(*pChan), this, NULL, continue); + PutIRC("JOIN " + pChan->GetName() + " " + pChan->GetKey()); // Limit the number of joins Modified: trunk/modules/modperl.cpp =================================================================== --- trunk/modules/modperl.cpp 2008-11-24 17:56:34 UTC (rev 1271) +++ trunk/modules/modperl.cpp 2008-11-25 10:53:40 UTC (rev 1272) @@ -336,6 +336,7 @@ virtual EModRet OnIRCRegistration(CString& sPass, CString& sNick, CString& sIdent, CString& sRealName) { return(CBFour("OnIRCRegistration", sPass, sNick, sIdent, sRealName)); } + virtual EModRet OnTimerAutoJoin(CChan& Channel) { return(CBSingle("OnTimerAutoJoin", CHAN(Channel))); } virtual void OnModCommand(const CString& sCommand) { Modified: trunk/modules/sample.cpp =================================================================== --- trunk/modules/sample.cpp 2008-11-24 17:56:34 UTC (rev 1271) +++ trunk/modules/sample.cpp 2008-11-25 10:53:40 UTC (rev 1272) @@ -105,6 +105,11 @@ PutModule("* Quits: " + Nick.GetNick() + " (" + Nick.GetIdent() + "!" + Nick.GetHost() + ") (" + sMessage + ")"); } + virtual EModRet OnTimerAutoJoin(CChan& Channel) { + PutModule("Attempting to join " + Channel.GetName()); + return CONTINUE; + } + virtual void OnJoin(const CNick& Nick, CChan& Channel) { PutModule("* Joins: " + Nick.GetNick() + " (" + Nick.GetIdent() + "!" + Nick.GetHost() + ")"); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sil...@us...> - 2008-11-27 16:34:54
|
Revision: 1273 http://znc.svn.sourceforge.net/znc/?rev=1273&view=rev Author: silverleo Date: 2008-11-27 16:34:51 +0000 (Thu, 27 Nov 2008) Log Message: ----------- Revert changes from rev1125 so we compile on fbsd 4.11 Revision Links: -------------- http://znc.svn.sourceforge.net/znc/?rev=1125&view=rev Modified Paths: -------------- trunk/configure trunk/configure.in Modified: trunk/configure =================================================================== --- trunk/configure 2008-11-25 10:53:40 UTC (rev 1272) +++ trunk/configure 2008-11-27 16:34:51 UTC (rev 1273) @@ -2447,7 +2447,8 @@ case "${host_os}" in freebsd*) - appendCXX -I/usr/local/include + # -D__GNU_LIBRARY__ makes this work on fbsd 4.11 + appendCXX -I/usr/local/include -D__GNU_LIBRARY__ appendLib -L/usr/local/lib -lcompat appendMod -L/usr/local/lib ;; Modified: trunk/configure.in =================================================================== --- trunk/configure.in 2008-11-25 10:53:40 UTC (rev 1272) +++ trunk/configure.in 2008-11-27 16:34:51 UTC (rev 1273) @@ -44,7 +44,8 @@ case "${host_os}" in freebsd*) - appendCXX -I/usr/local/include + # -D__GNU_LIBRARY__ makes this work on fbsd 4.11 + appendCXX -I/usr/local/include -D__GNU_LIBRARY__ appendLib -L/usr/local/lib -lcompat appendMod -L/usr/local/lib ;; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-12-01 18:23:45
|
Revision: 1274 http://znc.svn.sourceforge.net/znc/?rev=1274&view=rev Author: psychon Date: 2008-12-01 18:23:40 +0000 (Mon, 01 Dec 2008) Log Message: ----------- Use AC_PATH_PROG instead of using 'which' for finding perl This commit should have a low impact and I can't really imagine how it would break something. Modified Paths: -------------- trunk/configure trunk/configure.in Modified: trunk/configure =================================================================== --- trunk/configure 2008-11-27 16:34:51 UTC (rev 1273) +++ trunk/configure 2008-12-01 18:23:40 UTC (rev 1274) @@ -629,11 +629,11 @@ host_cpu host_vendor host_os +PERL MODFLAGS MODLINK MODTARGET NOSSL -PERL SASL MODDIR DATADIR @@ -3096,12 +3096,47 @@ appendCXX "-D_DATADIR_=\\\"${DATADIR}\\\"" if test -z "$NOPERL"; then - { echo "$as_me:$LINENO: checking for perl" >&5 -echo $ECHO_N "checking for perl... $ECHO_C" >&6; } - PERL=`which perl` + # Extract the first word of "perl", so it can be a program name with args. +set dummy perl; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_PERL+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $PERL in + [\\/]* | ?:[\\/]*) + ac_cv_path_PERL="$PERL" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +PERL=$ac_cv_path_PERL +if test -n "$PERL"; then + { echo "$as_me:$LINENO: result: $PERL" >&5 +echo "${ECHO_T}$PERL" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test -n "$PERL"; then - { echo "$as_me:$LINENO: result: $PERL" >&5 -echo "${ECHO_T}$PERL" >&6; } { echo "$as_me:$LINENO: checking for perl_alloc in -lperl" >&5 echo $ECHO_N "checking for perl_alloc in -lperl... $ECHO_C" >&6; } if test "${ac_cv_lib_perl_perl_alloc+set}" = set; then @@ -3172,8 +3207,6 @@ fi else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } { { echo "$as_me:$LINENO: error: could not find perl binary. Try --disable-perl" >&5 echo "$as_me: error: could not find perl binary. Try --disable-perl" >&2;} { (exit 1); exit 1; }; } @@ -3964,11 +3997,11 @@ host_cpu!$host_cpu$ac_delim host_vendor!$host_vendor$ac_delim host_os!$host_os$ac_delim +PERL!$PERL$ac_delim MODFLAGS!$MODFLAGS$ac_delim MODLINK!$MODLINK$ac_delim MODTARGET!$MODTARGET$ac_delim NOSSL!$NOSSL$ac_delim -PERL!$PERL$ac_delim SASL!$SASL$ac_delim MODDIR!$MODDIR$ac_delim DATADIR!$DATADIR$ac_delim Modified: trunk/configure.in =================================================================== --- trunk/configure.in 2008-11-27 16:34:51 UTC (rev 1273) +++ trunk/configure.in 2008-12-01 18:23:40 UTC (rev 1274) @@ -199,15 +199,12 @@ appendCXX "-D_DATADIR_=\\\"${DATADIR}\\\"" if test -z "$NOPERL"; then - AC_MSG_CHECKING([for perl]) - PERL=`which perl` + AC_PATH_PROG([PERL], [perl], []) if test -n "$PERL"; then - AC_MSG_RESULT([$PERL]) AC_CHECK_LIB(perl, perl_alloc,unset NOPERL, AC_MSG_ERROR([could not find libperl. Try --disable-perl]), [`$PERL -MExtUtils::Embed -e ccopts -e ldopts`]) else - AC_MSG_RESULT([no]) AC_MSG_ERROR([could not find perl binary. Try --disable-perl]) fi fi This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-12-06 14:07:12
|
Revision: 1276 http://znc.svn.sourceforge.net/znc/?rev=1276&view=rev Author: psychon Date: 2008-12-06 14:07:00 +0000 (Sat, 06 Dec 2008) Log Message: ----------- Increase the version number to 0.062 Modified Paths: -------------- trunk/configure trunk/configure.in trunk/main.h Modified: trunk/configure =================================================================== --- trunk/configure 2008-12-03 16:17:35 UTC (rev 1275) +++ trunk/configure 2008-12-06 14:07:00 UTC (rev 1276) @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.61 for znc 0.061. +# Generated by GNU Autoconf 2.61 for znc 0.062. # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. @@ -572,8 +572,8 @@ # Identity of this package. PACKAGE_NAME='znc' PACKAGE_TARNAME='znc' -PACKAGE_VERSION='0.061' -PACKAGE_STRING='znc 0.061' +PACKAGE_VERSION='0.062' +PACKAGE_STRING='znc 0.062' PACKAGE_BUGREPORT='' ac_unique_file="znc.cpp" @@ -1151,7 +1151,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures znc 0.061 to adapt to many kinds of systems. +\`configure' configures znc 0.062 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1216,7 +1216,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of znc 0.061:";; + short | recursive ) echo "Configuration of znc 0.062:";; esac cat <<\_ACEOF @@ -1312,7 +1312,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -znc configure 0.061 +znc configure 0.062 generated by GNU Autoconf 2.61 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @@ -1326,7 +1326,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by znc $as_me 0.061, which was +It was created by znc $as_me 0.062, which was generated by GNU Autoconf 2.61. Invocation command line was $ $0 $@ @@ -3739,7 +3739,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by znc $as_me 0.061, which was +This file was extended by znc $as_me 0.062, which was generated by GNU Autoconf 2.61. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -3782,7 +3782,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -znc config.status 0.061 +znc config.status 0.062 configured by $0, generated by GNU Autoconf 2.61, with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" @@ -4338,7 +4338,7 @@ echo -echo znc 0.061 configured +echo znc 0.062 configured echo echo "debug: $DEBUG" echo "ipv6: $IPV6" Modified: trunk/configure.in =================================================================== --- trunk/configure.in 2008-12-03 16:17:35 UTC (rev 1275) +++ trunk/configure.in 2008-12-06 14:07:00 UTC (rev 1276) @@ -1,5 +1,5 @@ dnl Keep the version number in sync with main.h! -AC_INIT([znc], [0.061]) +AC_INIT([znc], [0.062]) AC_CONFIG_SRCDIR([znc.cpp]) AC_LANG([C++]) Modified: trunk/main.h =================================================================== --- trunk/main.h 2008-12-03 16:17:35 UTC (rev 1275) +++ trunk/main.h 2008-12-06 14:07:00 UTC (rev 1276) @@ -10,7 +10,7 @@ #define _MAIN_H // Keep the number in sync with configure.in (and also with configure) -#define VERSION 0.061 +#define VERSION 0.062 // You can add -DVERSION_EXTRA="stuff" to your CXXFLAGS! #ifndef VERSION_EXTRA This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-12-06 14:09:56
|
Revision: 1278 http://znc.svn.sourceforge.net/znc/?rev=1278&view=rev Author: psychon Date: 2008-12-06 14:09:51 +0000 (Sat, 06 Dec 2008) Log Message: ----------- Increase the version number to 0.063 Modified Paths: -------------- trunk/configure trunk/configure.in trunk/main.h Modified: trunk/configure =================================================================== --- trunk/configure 2008-12-06 14:08:24 UTC (rev 1277) +++ trunk/configure 2008-12-06 14:09:51 UTC (rev 1278) @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.61 for znc 0.062. +# Generated by GNU Autoconf 2.61 for znc 0.063. # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. @@ -572,8 +572,8 @@ # Identity of this package. PACKAGE_NAME='znc' PACKAGE_TARNAME='znc' -PACKAGE_VERSION='0.062' -PACKAGE_STRING='znc 0.062' +PACKAGE_VERSION='0.063' +PACKAGE_STRING='znc 0.063' PACKAGE_BUGREPORT='' ac_unique_file="znc.cpp" @@ -1151,7 +1151,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures znc 0.062 to adapt to many kinds of systems. +\`configure' configures znc 0.063 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1216,7 +1216,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of znc 0.062:";; + short | recursive ) echo "Configuration of znc 0.063:";; esac cat <<\_ACEOF @@ -1312,7 +1312,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -znc configure 0.062 +znc configure 0.063 generated by GNU Autoconf 2.61 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @@ -1326,7 +1326,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by znc $as_me 0.062, which was +It was created by znc $as_me 0.063, which was generated by GNU Autoconf 2.61. Invocation command line was $ $0 $@ @@ -3739,7 +3739,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by znc $as_me 0.062, which was +This file was extended by znc $as_me 0.063, which was generated by GNU Autoconf 2.61. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -3782,7 +3782,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -znc config.status 0.062 +znc config.status 0.063 configured by $0, generated by GNU Autoconf 2.61, with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" @@ -4338,7 +4338,7 @@ echo -echo znc 0.062 configured +echo znc 0.063 configured echo echo "debug: $DEBUG" echo "ipv6: $IPV6" Modified: trunk/configure.in =================================================================== --- trunk/configure.in 2008-12-06 14:08:24 UTC (rev 1277) +++ trunk/configure.in 2008-12-06 14:09:51 UTC (rev 1278) @@ -1,5 +1,5 @@ dnl Keep the version number in sync with main.h! -AC_INIT([znc], [0.062]) +AC_INIT([znc], [0.063]) AC_CONFIG_SRCDIR([znc.cpp]) AC_LANG([C++]) Modified: trunk/main.h =================================================================== --- trunk/main.h 2008-12-06 14:08:24 UTC (rev 1277) +++ trunk/main.h 2008-12-06 14:09:51 UTC (rev 1278) @@ -10,7 +10,7 @@ #define _MAIN_H // Keep the number in sync with configure.in (and also with configure) -#define VERSION 0.062 +#define VERSION 0.063 // You can add -DVERSION_EXTRA="stuff" to your CXXFLAGS! #ifndef VERSION_EXTRA This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-12-06 19:56:54
|
Revision: 1283 http://znc.svn.sourceforge.net/znc/?rev=1283&view=rev Author: psychon Date: 2008-12-06 19:56:38 +0000 (Sat, 06 Dec 2008) Log Message: ----------- Add traffic tracking support to CSocket Now every module that uses CSocket automatically gets its generated traffic counted. Those which use Csock directly should be shot and burried anyway ;) This adds CModule::IsGlobal(). Modified Paths: -------------- trunk/Modules.cpp trunk/Modules.h trunk/modules/schat.cpp trunk/modules/webadmin.cpp Modified: trunk/Modules.cpp =================================================================== --- trunk/Modules.cpp 2008-12-06 16:13:37 UTC (rev 1282) +++ trunk/Modules.cpp 2008-12-06 19:56:38 UTC (rev 1283) @@ -114,7 +114,17 @@ } CSocket::~CSocket() { + CUser *pUser = m_pModule->GetUser(); + m_pModule->UnlinkSocket(this); + + if (!m_pModule->IsGlobal() && pUser) { + pUser->AddBytesWritten(GetBytesWritten()); + pUser->AddBytesRead(GetBytesRead()); + } else { + CZNC::Get().AddBytesWritten(GetBytesWritten()); + CZNC::Get().AddBytesRead(GetBytesRead()); + } } void CSocket::ReachedMaxBuffer() { @@ -181,6 +191,7 @@ CModule::CModule(void* pDLL, CUser* pUser, const CString& sModName, const CString& sDataDir) { m_bFake = false; + m_bGlobal = false; m_pDLL = pDLL; m_pManager = &(CZNC::Get().GetManager());; m_pUser = pUser; @@ -779,6 +790,7 @@ } pModule->SetDescription(GetDesc()); + pModule->SetGlobal(bIsGlobal); push_back(pModule); bool bLoaded; Modified: trunk/Modules.h =================================================================== --- trunk/Modules.h 2008-12-06 16:13:37 UTC (rev 1282) +++ trunk/Modules.h 2008-12-06 19:56:38 UTC (rev 1283) @@ -329,12 +329,14 @@ // Setters void SetFake(bool b) { m_bFake = b; } + void SetGlobal(bool b) { m_bGlobal = b; } void SetDescription(const CString& s) { m_sDescription = s; } void SetArgs(const CString& s) { m_sArgs = s; } // !Setters // Getters bool IsFake() const { return m_bFake; } + bool IsGlobal() const { return m_bGlobal; } const CString& GetDescription() const { return m_sDescription; } const CString& GetArgs() const { return m_sArgs; } CUser* GetUser() { return m_pUser; } @@ -344,6 +346,7 @@ protected: bool m_bFake; + bool m_bGlobal; CString m_sDescription; vector<CTimer*> m_vTimers; vector<CSocket*> m_vSockets; Modified: trunk/modules/schat.cpp =================================================================== --- trunk/modules/schat.cpp 2008-12-06 16:13:37 UTC (rev 1282) +++ trunk/modules/schat.cpp 2008-12-06 19:56:38 UTC (rev 1283) @@ -58,8 +58,6 @@ EnableReadLine(); } - ~CSChatSock(); - virtual Csock *GetSockObj(const CS_STRING & sHostname, u_short iPort) { CSChatSock *p = new CSChatSock(sHostname, iPort); @@ -442,12 +440,6 @@ //////////////////// methods //////////////// -CSChatSock::~CSChatSock() -{ - m_pModule->GetUser()->AddBytesRead(GetBytesRead()); - m_pModule->GetUser()->AddBytesWritten(GetBytesWritten()); -} - void CSChatSock::ReadLine(const CS_STRING & sLine) { if (m_pModule) { Modified: trunk/modules/webadmin.cpp =================================================================== --- trunk/modules/webadmin.cpp 2008-12-06 16:13:37 UTC (rev 1282) +++ trunk/modules/webadmin.cpp 2008-12-06 19:56:38 UTC (rev 1283) @@ -322,9 +322,6 @@ CWebAdminAuth* pAuth = (CWebAdminAuth*) &(*m_spAuth); pAuth->SetWebAdminSock(NULL); } - - CZNC::Get().AddBytesRead(GetBytesRead()); - CZNC::Get().AddBytesWritten(GetBytesWritten()); } bool CWebAdminSock::OnPageRequest(const CString& sURI, CString& sPageRet) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-12-07 14:18:25
|
Revision: 1286 http://znc.svn.sourceforge.net/znc/?rev=1286&view=rev Author: psychon Date: 2008-12-07 14:18:23 +0000 (Sun, 07 Dec 2008) Log Message: ----------- Remove our only getcwd() call We now no longer depend on PATH_MAX which is not defined by POSIX. Modified Paths: -------------- trunk/main.h trunk/znc.cpp Modified: trunk/main.h =================================================================== --- trunk/main.h 2008-12-06 21:13:14 UTC (rev 1285) +++ trunk/main.h 2008-12-07 14:18:23 UTC (rev 1286) @@ -65,12 +65,6 @@ using std::cerr; using std::endl; -#include <limits.h> -#ifndef PATH_MAX -#define PATH_MAX 1024 -#warning PATH_MAX is undefined -#endif - #include "ZNCString.h" #endif // !_MAIN_H Modified: trunk/znc.cpp =================================================================== --- trunk/znc.cpp 2008-12-06 21:13:14 UTC (rev 1285) +++ trunk/znc.cpp 2008-12-07 14:18:23 UTC (rev 1286) @@ -398,17 +398,14 @@ } void CZNC::InitDirs(const CString& sArgvPath, const CString& sDataDir) { - char buf[PATH_MAX]; char *home; - if (getcwd(buf, PATH_MAX) == NULL) { - CUtils::PrintError("getcwd() failed, can't read my current dir"); - exit(-1); - } - // If the bin was not ran from the current directory, we need to add that dir onto our cwd CString::size_type uPos = sArgvPath.rfind('/'); - m_sCurPath = (uPos == CString::npos) ? CString(buf) : CDir::ChangeDir(buf, sArgvPath.substr(0, uPos), ""); + if (uPos == CString::npos) + m_sCurPath = "./"; + else + m_sCurPath = CDir::ChangeDir("./", sArgvPath.Left(uPos), ""); // Try to set the user's home dir, default to binpath on failure home = getenv("HOME"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-12-10 15:53:11
|
Revision: 1288 http://znc.svn.sourceforge.net/znc/?rev=1288&view=rev Author: psychon Date: 2008-12-10 15:53:07 +0000 (Wed, 10 Dec 2008) Log Message: ----------- Update to latest Csocket and use its new init interface Modified Paths: -------------- trunk/Csocket.cpp trunk/Csocket.h trunk/main.cpp trunk/znc.cpp Modified: trunk/Csocket.cpp =================================================================== --- trunk/Csocket.cpp 2008-12-09 20:25:34 UTC (rev 1287) +++ trunk/Csocket.cpp 2008-12-10 15:53:07 UTC (rev 1288) @@ -28,7 +28,7 @@ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * -* $Revision: 1.89 $ +* $Revision: 1.90 $ */ #include "Csocket.h" @@ -311,7 +311,32 @@ return( ETIMEDOUT ); } +bool InitCsocket() +{ +#ifdef _WIN32 + WSADATA wsaData; + int iResult = WSAStartup( MAKEWORD( 2, 2 ), &wsaData ); + if( iResult != NO_ERROR ) + return( false ); +#endif /* _WIN32 */ #ifdef HAVE_LIBSSL + if( !InitSSL() ) + return( false ); +#endif /* HAVE_LIBSSL */ + return( true ); +} + +void ShutdownCsocket() +{ +#ifdef HAVE_LIBSSL + ERR_free_strings(); +#endif /* HAVE_LIBSSL */ +#ifdef _WIN32 + WSACleanup(); +#endif /* _WIN32 */ +} + +#ifdef HAVE_LIBSSL bool InitSSL( ECompType eCompressionType ) { SSL_load_error_strings(); Modified: trunk/Csocket.h =================================================================== --- trunk/Csocket.h 2008-12-09 20:25:34 UTC (rev 1287) +++ trunk/Csocket.h 2008-12-10 15:53:07 UTC (rev 1288) @@ -28,7 +28,7 @@ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * -* $Revision: 1.199 $ +* $Revision: 1.200 $ */ // note to compile with win32 need to link to winsock2, using gcc its -lws2_32 @@ -261,15 +261,27 @@ CT_RLE = 2 }; +void SSLErrors( const char *filename, u_int iLineNum ); + /** - * @brief You HAVE to call this in order to use the SSL library + * @brief You HAVE to call this in order to use the SSL library, calling InitCsocket() also calls this + * so unless you need to call InitSSL for a specific reason call InitCsocket() * @return true on success */ bool InitSSL( ECompType eCompressionType = CT_NONE ); -void SSLErrors( const char *filename, u_int iLineNum ); + #endif /* HAVE_LIBSSL */ +/** + * This does all the csocket initialized inclusing InitSSL() and win32 specific initializations, only needs to be called once + */ +bool InitCsocket(); +/** + * Shutdown and release global allocated memory + */ +void ShutdownCsocket(); + //! @todo need to make this sock specific via getsockopt inline int GetSockError() { @@ -280,27 +292,6 @@ #endif /* _WIN32 */ } -#ifdef _WIN32 -inline bool InitWin32() -{ - WSADATA wsaData; - int iResult = WSAStartup( MAKEWORD( 2, 2 ), &wsaData ); - if( iResult != NO_ERROR ) - return( false ); - - return( true ); -} -inline void ShutdownWin32() -{ - WSACleanup(); -} -#define InitCsocket InitWin32 -#define ShutdownCsocket ShutdownWin32 -#else -#define InitCsocket (void)0 -#define ShutdownCsocket (void)0 -#endif /* _WIN32 */ - //! wrappers for FD_SET and such to work in templates. inline void TFD_ZERO( fd_set *set ) { Modified: trunk/main.cpp =================================================================== --- trunk/main.cpp 2008-12-09 20:25:34 UTC (rev 1287) +++ trunk/main.cpp 2008-12-10 15:53:07 UTC (rev 1288) @@ -74,10 +74,6 @@ srand(time(NULL)); CUtils::SetStdoutIsTTY(isatty(1)); -#ifdef HAVE_LIBSSL - InitSSL(); -#endif /* HAVE_LIBSSL */ - int iArg, iOptIndex = -1; bool bMakeConf = false; bool bMakePass = false; Modified: trunk/znc.cpp =================================================================== --- trunk/znc.cpp 2008-12-09 20:25:34 UTC (rev 1287) +++ trunk/znc.cpp 2008-12-10 15:53:07 UTC (rev 1288) @@ -26,6 +26,11 @@ }; CZNC::CZNC() { + if (!InitCsocket()) { + CUtils::PrintError("Failed to initialize Csocket!"); + exit(-1); + } + #ifdef _MODULES m_pModules = new CGlobalModules(); #endif @@ -68,6 +73,7 @@ delete m_pModules; #endif + ShutdownCsocket(); DeletePidFile(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-12-12 15:39:09
|
Revision: 1289 http://znc.svn.sourceforge.net/znc/?rev=1289&view=rev Author: psychon Date: 2008-12-12 15:38:57 +0000 (Fri, 12 Dec 2008) Log Message: ----------- Remove CZNC::GetConfPath() and rework GetModPath() and GetUserPath() This removes some unneeded variables. Idea by kroimon. Modified Paths: -------------- trunk/znc.cpp trunk/znc.h Modified: trunk/znc.cpp =================================================================== --- trunk/znc.cpp 2008-12-10 15:53:07 UTC (rev 1288) +++ trunk/znc.cpp 2008-12-12 15:38:57 UTC (rev 1289) @@ -438,24 +438,38 @@ } else { m_sZNCPath = sDataDir; } +} - // Other dirs that we use - m_sConfPath = m_sZNCPath + "/configs"; - m_sModPath = m_sZNCPath + "/modules"; - m_sUserPath = m_sZNCPath + "/users"; +CString CZNC::GetUserPath() const { + CString sUserPath = m_sZNCPath + "/users/"; + if (!CFile::Exists(sUserPath)) { + CDir::MakeDir(sUserPath); + } + + return sUserPath; } +CString CZNC::GetModPath() const { + CString sModPath = m_sZNCPath + "/modules/"; + if (!CFile::Exists(sModPath)) { + CDir::MakeDir(sModPath); + } + + return sModPath; +} + + CString CZNC::ExpandConfigPath(const CString& sConfigFile) { CString sRetPath; if (sConfigFile.empty()) { - sRetPath = GetConfPath() + "/znc.conf"; + sRetPath = GetZNCPath() + "/configs/znc.conf"; } else { if (sConfigFile.Left(2) == "./" || sConfigFile.Left(3) == "../") { sRetPath = GetCurPath() + "/" + sConfigFile; } else if (sConfigFile.Left(1) != "/") { - sRetPath = GetConfPath() + "/" + sConfigFile; + sRetPath = GetZNCPath() + "/configs/" + sConfigFile; } else { sRetPath = sConfigFile; } Modified: trunk/znc.h =================================================================== --- trunk/znc.h 2008-12-10 15:53:07 UTC (rev 1288) +++ trunk/znc.h 2008-12-12 15:38:57 UTC (rev 1289) @@ -146,11 +146,10 @@ #endif const CString& GetStatusPrefix() const { return m_sStatusPrefix; } const CString& GetCurPath() const { if (!CFile::Exists(m_sCurPath)) { CDir::MakeDir(m_sCurPath); } return m_sCurPath; } - const CString& GetModPath() const { if (!CFile::Exists(m_sModPath)) { CDir::MakeDir(m_sModPath); } return m_sModPath; } const CString& GetHomePath() const { if (!CFile::Exists(m_sHomePath)) { CDir::MakeDir(m_sHomePath); } return m_sHomePath; } const CString& GetZNCPath() const { if (!CFile::Exists(m_sZNCPath)) { CDir::MakeDir(m_sZNCPath); } return m_sZNCPath; } - const CString& GetConfPath() const { if (!CFile::Exists(m_sConfPath)) { CDir::MakeDir(m_sConfPath); } return m_sConfPath; } - const CString& GetUserPath() const { if (!CFile::Exists(m_sUserPath)) { CDir::MakeDir(m_sUserPath); } return m_sUserPath; } + CString GetUserPath() const; + CString GetModPath() const; CString GetPemLocation() const { return GetZNCPath() + "/znc.pem"; } const CString& GetConfigFile() const { return m_sConfigFile; } bool WritePemFile(bool bEncPem = false); @@ -198,11 +197,8 @@ CSockManager m_Manager; CString m_sCurPath; - CString m_sModPath; CString m_sHomePath; CString m_sZNCPath; - CString m_sConfPath; - CString m_sUserPath; CString m_sConfigFile; CString m_sStatusPrefix; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-12-17 15:36:53
|
Revision: 1292 http://znc.svn.sourceforge.net/znc/?rev=1292&view=rev Author: psychon Date: 2008-12-17 15:36:47 +0000 (Wed, 17 Dec 2008) Log Message: ----------- Fix a bug introduced in r1289 If the config dir (<datadir>/configs) didn't exist yet, ZNC didn't bother creating it and thus failed to do write a config. Thanks to m4v for testing a nightly and for reporting this bug. Modified Paths: -------------- trunk/znc.cpp trunk/znc.h Modified: trunk/znc.cpp =================================================================== --- trunk/znc.cpp 2008-12-14 20:27:36 UTC (rev 1291) +++ trunk/znc.cpp 2008-12-17 15:36:47 UTC (rev 1292) @@ -440,6 +440,15 @@ } } +CString CZNC::GetConfPath() const { + CString sConfPath = m_sZNCPath + "/configs/"; + if (!CFile::Exists(sConfPath)) { + CDir::MakeDir(sConfPath); + } + + return sConfPath; +} + CString CZNC::GetUserPath() const { CString sUserPath = m_sZNCPath + "/users/"; if (!CFile::Exists(sUserPath)) { @@ -464,12 +473,12 @@ CString sRetPath; if (sConfigFile.empty()) { - sRetPath = GetZNCPath() + "/configs/znc.conf"; + sRetPath = GetConfPath() + "/znc.conf"; } else { if (sConfigFile.Left(2) == "./" || sConfigFile.Left(3) == "../") { sRetPath = GetCurPath() + "/" + sConfigFile; } else if (sConfigFile.Left(1) != "/") { - sRetPath = GetZNCPath() + "/configs/" + sConfigFile; + sRetPath = GetConfPath() + "/" + sConfigFile; } else { sRetPath = sConfigFile; } Modified: trunk/znc.h =================================================================== --- trunk/znc.h 2008-12-14 20:27:36 UTC (rev 1291) +++ trunk/znc.h 2008-12-17 15:36:47 UTC (rev 1292) @@ -148,6 +148,7 @@ const CString& GetCurPath() const { if (!CFile::Exists(m_sCurPath)) { CDir::MakeDir(m_sCurPath); } return m_sCurPath; } const CString& GetHomePath() const { if (!CFile::Exists(m_sHomePath)) { CDir::MakeDir(m_sHomePath); } return m_sHomePath; } const CString& GetZNCPath() const { if (!CFile::Exists(m_sZNCPath)) { CDir::MakeDir(m_sZNCPath); } return m_sZNCPath; } + CString GetConfPath() const; CString GetUserPath() const; CString GetModPath() const; CString GetPemLocation() const { return GetZNCPath() + "/znc.pem"; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-12-19 13:44:01
|
Revision: 1294 http://znc.svn.sourceforge.net/znc/?rev=1294&view=rev Author: psychon Date: 2008-12-19 13:43:56 +0000 (Fri, 19 Dec 2008) Log Message: ----------- Remove some unused code for ipv6 from CServer (and from CUser) Modified Paths: -------------- trunk/Server.cpp trunk/Server.h trunk/User.cpp trunk/User.h Modified: trunk/Server.cpp =================================================================== --- trunk/Server.cpp 2008-12-18 16:22:31 UTC (rev 1293) +++ trunk/Server.cpp 2008-12-19 13:43:56 UTC (rev 1294) @@ -8,12 +8,11 @@ #include "Server.h" -CServer::CServer(const CString& sName, unsigned short uPort, const CString& sPass, bool bSSL, bool bIPV6) { +CServer::CServer(const CString& sName, unsigned short uPort, const CString& sPass, bool bSSL) { m_sName = sName; m_uPort = (uPort) ? uPort : 6667; m_sPass = sPass; m_bSSL = bSSL; - m_bIPV6 = bIPV6; } CServer::~CServer() {} @@ -38,7 +37,6 @@ unsigned short CServer::GetPort() const { return m_uPort; } const CString& CServer::GetPass() const { return m_sPass; } bool CServer::IsSSL() const { return m_bSSL; } -bool CServer::IsIPV6() const { return m_bIPV6; } CString CServer::GetString() const { return m_sName + " " + CString(m_bSSL ? "+" : "") + CString(m_uPort) + CString(m_sPass.empty() ? "" : " " + m_sPass); Modified: trunk/Server.h =================================================================== --- trunk/Server.h 2008-12-18 16:22:31 UTC (rev 1293) +++ trunk/Server.h 2008-12-19 13:43:56 UTC (rev 1294) @@ -13,14 +13,13 @@ class CServer { public: - CServer(const CString& sName, unsigned short uPort = 6667, const CString& sPass = "", bool bSSL = false, bool bIPV6 = false); + CServer(const CString& sName, unsigned short uPort = 6667, const CString& sPass = "", bool bSSL = false); virtual ~CServer(); const CString& GetName() const; unsigned short GetPort() const; const CString& GetPass() const; bool IsSSL() const; - bool IsIPV6() const; CString GetString() const; static bool IsValidHostName(const CString& sHostName); private: @@ -29,7 +28,6 @@ unsigned short m_uPort; CString m_sPass; bool m_bSSL; - bool m_bIPV6; }; #endif // !_SERVER_H Modified: trunk/User.cpp =================================================================== --- trunk/User.cpp 2008-12-18 16:22:31 UTC (rev 1293) +++ trunk/User.cpp 2008-12-19 13:43:56 UTC (rev 1294) @@ -730,7 +730,7 @@ return false; } -bool CUser::AddServer(const CString& sName, bool bIPV6) { +bool CUser::AddServer(const CString& sName) { if (sName.empty()) { return false; } @@ -750,22 +750,16 @@ unsigned short uPort = strtoul(sPort.c_str(), NULL, 10); CString sPass = sLine.Token(2, true); - return AddServer(sHost, uPort, sPass, bSSL, bIPV6); + return AddServer(sHost, uPort, sPass, bSSL); } -bool CUser::AddServer(const CString& sName, unsigned short uPort, const CString& sPass, bool bSSL, bool bIPV6) { +bool CUser::AddServer(const CString& sName, unsigned short uPort, const CString& sPass, bool bSSL) { #ifndef HAVE_LIBSSL if (bSSL) { return false; } #endif -#ifndef HAVE_IPV6 - if (bIPV6) { - return false; - } -#endif - if (sName.empty()) { return false; } @@ -774,7 +768,7 @@ uPort = 6667; } - CServer* pServer = new CServer(sName, uPort, sPass, bSSL, bIPV6); + CServer* pServer = new CServer(sName, uPort, sPass, bSSL); m_vServers.push_back(pServer); CheckIRCConnect(); Modified: trunk/User.h =================================================================== --- trunk/User.h 2008-12-18 16:22:31 UTC (rev 1293) +++ trunk/User.h 2008-12-19 13:43:56 UTC (rev 1294) @@ -43,8 +43,8 @@ void JoinChans(); CServer* FindServer(const CString& sName) const; bool DelServer(const CString& sName); - bool AddServer(const CString& sName, bool bIPV6 = false); - bool AddServer(const CString& sName, unsigned short uPort, const CString& sPass = "", bool bSSL = false, bool bIPV6 = false); + bool AddServer(const CString& sName); + bool AddServer(const CString& sName, unsigned short uPort, const CString& sPass = "", bool bSSL = false); CServer* GetNextServer(); CServer* GetCurrentServer() const; bool CheckPass(const CString& sPass) const; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-12-20 19:59:39
|
Revision: 1295 http://znc.svn.sourceforge.net/znc/?rev=1295&view=rev Author: psychon Date: 2008-12-20 19:59:36 +0000 (Sat, 20 Dec 2008) Log Message: ----------- Allow adding a server multiple times if a different port or pass is used This also moves the check for multiple servers from CClient to CUser::AddServer(). The idea for this is from cnu, thanks. Modified Paths: -------------- trunk/ClientCommand.cpp trunk/User.cpp Modified: trunk/ClientCommand.cpp =================================================================== --- trunk/ClientCommand.cpp 2008-12-19 13:43:56 UTC (rev 1294) +++ trunk/ClientCommand.cpp 2008-12-20 19:59:36 UTC (rev 1295) @@ -321,15 +321,11 @@ return; } - if (m_pUser->FindServer(sServer)) { - PutStatus("That server already exists"); - return; - } - if (m_pUser->AddServer(sLine.Token(1, true))) { PutStatus("Server added"); } else { PutStatus("Unable to add that server"); + PutStatus("Perhaps the server is already added or openssl is disabled?"); } } else if (sCommand.Equals("REMSERVER") || sCommand.Equals("DELSERVER")) { CString sServer = sLine.Token(1); Modified: trunk/User.cpp =================================================================== --- trunk/User.cpp 2008-12-19 13:43:56 UTC (rev 1294) +++ trunk/User.cpp 2008-12-20 19:59:36 UTC (rev 1295) @@ -768,6 +768,29 @@ uPort = 6667; } + // Check if server is already added + for (unsigned int a = 0; a < m_vServers.size(); a++) { + CServer* pServer = m_vServers[a]; + + if (!sName.Equals(pServer->GetName())) + continue; + + if (uPort != pServer->GetPort()) + continue; + + if (sPass != pServer->GetPass()) + continue; + + if (bSSL != pServer->IsSSL()) + continue; + + if (bIPV6 != pServer->IsIPV6()) + continue; + + // Server is already added + return false; + } + CServer* pServer = new CServer(sName, uPort, sPass, bSSL); m_vServers.push_back(pServer); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sil...@us...> - 2008-12-21 09:03:08
|
Revision: 1297 http://znc.svn.sourceforge.net/znc/?rev=1297&view=rev Author: silverleo Date: 2008-12-21 09:03:04 +0000 (Sun, 21 Dec 2008) Log Message: ----------- Changed ping timers and timeout settings to use more reasonable values. Also changed timeout type for irc and client sockets. Modified Paths: -------------- trunk/Client.cpp trunk/IRCSock.cpp trunk/Timers.h Modified: trunk/Client.cpp =================================================================== --- trunk/Client.cpp 2008-12-20 20:21:14 UTC (rev 1296) +++ trunk/Client.cpp 2008-12-21 09:03:04 UTC (rev 1297) @@ -679,7 +679,7 @@ void CClient::Connected() { DEBUG_ONLY(cout << GetSockName() << " == Connected();" << endl); - SetTimeout(900); // Now that we are connected, let nature take its course + SetTimeout(240, TMO_READ); // Now that we are connected, let nature take its course } void CClient::ConnectionRefused() { @@ -687,6 +687,7 @@ } void CClient::Disconnected() { + DEBUG_ONLY(cout << GetSockName() << " == Disconnected()" << endl); if (m_pUser) { m_pUser->UserDisconnected(this); } Modified: trunk/IRCSock.cpp =================================================================== --- trunk/IRCSock.cpp 2008-12-20 20:21:14 UTC (rev 1296) +++ trunk/IRCSock.cpp 2008-12-21 09:03:04 UTC (rev 1297) @@ -102,7 +102,7 @@ switch (uRaw) { case 1: {// :irc.server.com 001 nick :Welcome to the Internet Relay Network nick m_pUser->SetIRCServer(sServer); - SetTimeout(900); // Now that we are connected, let nature take its course + SetTimeout(240, TMO_READ); // Now that we are connected, let nature take its course PutIRC("WHO " + sNick); m_bAuthed = true; Modified: trunk/Timers.h =================================================================== --- trunk/Timers.h 2008-12-20 20:21:14 UTC (rev 1296) +++ trunk/Timers.h 2008-12-21 09:03:04 UTC (rev 1297) @@ -28,14 +28,14 @@ vector<CClient*>& vClients = m_pUser->GetClients(); CIRCSock* pIRCSock = m_pUser->GetIRCSock(); - if (pIRCSock && pIRCSock->GetTimeSinceLastDataTransaction() >= 270) { + if (pIRCSock && pIRCSock->GetTimeSinceLastDataTransaction() >= 180) { pIRCSock->PutIRC("PING :ZNC"); } for (size_t a = 0; a < vClients.size(); a++) { CClient* pClient = vClients[a]; - if (pClient->GetTimeSinceLastDataTransaction() >= 470) { + if (pClient->GetTimeSinceLastDataTransaction() >= 180) { pClient->PutClient("PING :ZNC"); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-12-22 17:22:39
|
Revision: 1300 http://znc.svn.sourceforge.net/znc/?rev=1300&view=rev Author: psychon Date: 2008-12-22 17:22:34 +0000 (Mon, 22 Dec 2008) Log Message: ----------- Remove virtual where it makes no sense This commit actually saves memory, since some classes no longer contain a pointer to their vtable! Modified Paths: -------------- trunk/Buffer.h trunk/Chan.h trunk/Client.h trunk/FileUtils.h trunk/MD5.h trunk/Modules.h trunk/Nick.h trunk/Server.h trunk/Template.h trunk/User.h trunk/Utils.h trunk/ZNCString.h trunk/znc.h Modified: trunk/Buffer.h =================================================================== --- trunk/Buffer.h 2008-12-21 17:10:25 UTC (rev 1299) +++ trunk/Buffer.h 2008-12-22 17:22:34 UTC (rev 1300) @@ -17,7 +17,7 @@ class CBufLine { public: CBufLine(const CString& sPre, const CString& sPost, bool bIncNick); - virtual ~CBufLine(); + ~CBufLine(); void GetLine(const CString& sTarget, CString& sRet) const; const CString& GetPre() const { return m_sPre; } @@ -38,7 +38,7 @@ class CBuffer : private vector<CBufLine> { public: CBuffer(unsigned int uLineCount = 100); - virtual ~CBuffer(); + ~CBuffer(); int AddLine(const CString& sPre, const CString& sPost, bool bIncNick = true); /// Same as AddLine, but if there is already a line with sPre it is replaced. Modified: trunk/Chan.h =================================================================== --- trunk/Chan.h 2008-12-21 17:10:25 UTC (rev 1299) +++ trunk/Chan.h 2008-12-22 17:22:34 UTC (rev 1300) @@ -51,7 +51,7 @@ } EModes; CChan(const CString& sName, CUser* pUser, bool bInConfig); - virtual ~CChan(); + ~CChan(); void Reset(); bool WriteConfig(CFile& File); Modified: trunk/Client.h =================================================================== --- trunk/Client.h 2008-12-21 17:10:25 UTC (rev 1299) +++ trunk/Client.h 2008-12-22 17:22:34 UTC (rev 1300) @@ -39,9 +39,9 @@ virtual void AcceptLogin(CUser& User) = 0; virtual void RefuseLogin(const CString& sReason) = 0; - virtual const CString& GetUsername() const { return m_sUsername; } - virtual const CString& GetPassword() const { return m_sPassword; } - virtual const CString& GetRemoteIP() const { return m_sRemoteIP; } + const CString& GetUsername() const { return m_sUsername; } + const CString& GetPassword() const { return m_sPassword; } + const CString& GetRemoteIP() const { return m_sRemoteIP; } private: CString m_sUsername; Modified: trunk/FileUtils.h =================================================================== --- trunk/FileUtils.h 2008-12-21 17:10:25 UTC (rev 1299) +++ trunk/FileUtils.h 2008-12-22 17:22:34 UTC (rev 1300) @@ -24,7 +24,7 @@ CFile(); CFile(const CString& sLongName); CFile(int iFD, const CString& sLongName); - virtual ~CFile(); + ~CFile(); enum EOptions { F_Read = O_RDONLY, @@ -147,11 +147,11 @@ m_eSortAttr = CFile::FA_Name; } - virtual ~CDir() { + ~CDir() { CleanUp(); } - virtual void CleanUp() { + void CleanUp() { for (unsigned int a = 0; a < size(); a++) { delete (*this)[a]; } Modified: trunk/MD5.h =================================================================== --- trunk/MD5.h 2008-12-21 17:10:25 UTC (rev 1299) +++ trunk/MD5.h 2008-12-22 17:22:34 UTC (rev 1300) @@ -30,7 +30,7 @@ CMD5(); CMD5(const string& sText); CMD5(const char* szText, uint32 nTextLen); - virtual ~CMD5(); + ~CMD5(); operator string() const { Modified: trunk/Modules.h =================================================================== --- trunk/Modules.h 2008-12-21 17:10:25 UTC (rev 1299) +++ trunk/Modules.h 2008-12-22 17:22:34 UTC (rev 1300) @@ -171,7 +171,7 @@ m_sName = sName; m_sPath = sPath; } - virtual ~CModInfo() {} + ~CModInfo() {} bool operator < (const CModInfo& Info) const { return (GetName() < Info.GetName()); @@ -369,68 +369,68 @@ class CModules : public vector<CModule*> { public: CModules(); - virtual ~CModules(); + ~CModules(); void SetUser(CUser* pUser) { m_pUser = pUser; } void SetClient(CClient* pClient) { m_pClient = pClient; } void UnloadAll(); - virtual bool OnBoot(); // Return false to abort - virtual bool OnPreRehash(); - virtual bool OnPostRehash(); - virtual bool OnIRCDisconnected(); - virtual bool OnIRCConnected(); - virtual bool OnIRCRegistration(CString& sPass, CString& sNick, CString& sIdent, CString& sRealName); - virtual bool OnBroadcast(CString& sMessage); + bool OnBoot(); // Return false to abort + bool OnPreRehash(); + bool OnPostRehash(); + bool OnIRCDisconnected(); + bool OnIRCConnected(); + bool OnIRCRegistration(CString& sPass, CString& sNick, CString& sIdent, CString& sRealName); + bool OnBroadcast(CString& sMessage); - virtual bool OnDCCUserSend(const CNick& RemoteNick, unsigned long uLongIP, unsigned short uPort, const CString& sFile, unsigned long uFileSize); + bool OnDCCUserSend(const CNick& RemoteNick, unsigned long uLongIP, unsigned short uPort, const CString& sFile, unsigned long uFileSize); - virtual bool OnChanPermission(const CNick& OpNick, const CNick& Nick, CChan& Channel, unsigned char uMode, bool bAdded, bool bNoChange); - virtual bool OnOp(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange); - virtual bool OnDeop(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange); - virtual bool OnVoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange); - virtual bool OnDevoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange); - virtual bool OnRawMode(const CNick& OpNick, CChan& Channel, const CString& sModes, const CString& sArgs); - virtual bool OnMode(const CNick& OpNick, CChan& Channel, char uMode, const CString& sArg, bool bAdded, bool bNoChange); + bool OnChanPermission(const CNick& OpNick, const CNick& Nick, CChan& Channel, unsigned char uMode, bool bAdded, bool bNoChange); + bool OnOp(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange); + bool OnDeop(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange); + bool OnVoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange); + bool OnDevoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange); + bool OnRawMode(const CNick& OpNick, CChan& Channel, const CString& sModes, const CString& sArgs); + bool OnMode(const CNick& OpNick, CChan& Channel, char uMode, const CString& sArg, bool bAdded, bool bNoChange); - virtual bool OnRaw(CString& sLine); + bool OnRaw(CString& sLine); - virtual bool OnStatusCommand(CString& sCommand); - virtual bool OnModCommand(const CString& sCommand); - virtual bool OnModNotice(const CString& sMessage); - virtual bool OnModCTCP(const CString& sMessage); + bool OnStatusCommand(CString& sCommand); + bool OnModCommand(const CString& sCommand); + bool OnModNotice(const CString& sMessage); + bool OnModCTCP(const CString& sMessage); - virtual bool OnQuit(const CNick& Nick, const CString& sMessage, const vector<CChan*>& vChans); - virtual bool OnNick(const CNick& Nick, const CString& sNewNick, const vector<CChan*>& vChans); - virtual bool OnKick(const CNick& Nick, const CString& sOpNick, CChan& Channel, const CString& sMessage); - virtual bool OnJoin(const CNick& Nick, CChan& Channel); - virtual bool OnPart(const CNick& Nick, CChan& Channel); + bool OnQuit(const CNick& Nick, const CString& sMessage, const vector<CChan*>& vChans); + bool OnNick(const CNick& Nick, const CString& sNewNick, const vector<CChan*>& vChans); + bool OnKick(const CNick& Nick, const CString& sOpNick, CChan& Channel, const CString& sMessage); + bool OnJoin(const CNick& Nick, CChan& Channel); + bool OnPart(const CNick& Nick, CChan& Channel); - virtual bool OnClientLogin(); - virtual bool OnClientDisconnect(); - virtual bool OnUserRaw(CString& sLine); - virtual bool OnUserCTCPReply(CString& sTarget, CString& sMessage); - virtual bool OnUserCTCP(CString& sTarget, CString& sMessage); - virtual bool OnUserAction(CString& sTarget, CString& sMessage); - virtual bool OnUserMsg(CString& sTarget, CString& sMessage); - virtual bool OnUserNotice(CString& sTarget, CString& sMessage); - virtual bool OnUserJoin(CString& sChannel, CString& sKey); - virtual bool OnUserPart(CString& sChannel, CString& sMessage); - virtual bool OnUserTopic(CString& sChannel, CString& sTopic); - virtual bool OnUserTopicRequest(CString& sChannel); + bool OnClientLogin(); + bool OnClientDisconnect(); + bool OnUserRaw(CString& sLine); + bool OnUserCTCPReply(CString& sTarget, CString& sMessage); + bool OnUserCTCP(CString& sTarget, CString& sMessage); + bool OnUserAction(CString& sTarget, CString& sMessage); + bool OnUserMsg(CString& sTarget, CString& sMessage); + bool OnUserNotice(CString& sTarget, CString& sMessage); + bool OnUserJoin(CString& sChannel, CString& sKey); + bool OnUserPart(CString& sChannel, CString& sMessage); + bool OnUserTopic(CString& sChannel, CString& sTopic); + bool OnUserTopicRequest(CString& sChannel); - virtual bool OnCTCPReply(CNick& Nick, CString& sMessage); - virtual bool OnPrivCTCP(CNick& Nick, CString& sMessage); - virtual bool OnChanCTCP(CNick& Nick, CChan& Channel, CString& sMessage); - virtual bool OnPrivAction(CNick& Nick, CString& sMessage); - virtual bool OnChanAction(CNick& Nick, CChan& Channel, CString& sMessage); - virtual bool OnPrivMsg(CNick& Nick, CString& sMessage); - virtual bool OnChanMsg(CNick& Nick, CChan& Channel, CString& sMessage); - virtual bool OnPrivNotice(CNick& Nick, CString& sMessage); - virtual bool OnChanNotice(CNick& Nick, CChan& Channel, CString& sMessage); - virtual bool OnTopic(CNick& Nick, CChan& Channel, CString& sTopic); - virtual bool OnTimerAutoJoin(CChan& Channel); + bool OnCTCPReply(CNick& Nick, CString& sMessage); + bool OnPrivCTCP(CNick& Nick, CString& sMessage); + bool OnChanCTCP(CNick& Nick, CChan& Channel, CString& sMessage); + bool OnPrivAction(CNick& Nick, CString& sMessage); + bool OnChanAction(CNick& Nick, CChan& Channel, CString& sMessage); + bool OnPrivMsg(CNick& Nick, CString& sMessage); + bool OnChanMsg(CNick& Nick, CChan& Channel, CString& sMessage); + bool OnPrivNotice(CNick& Nick, CString& sMessage); + bool OnChanNotice(CNick& Nick, CChan& Channel, CString& sMessage); + bool OnTopic(CNick& Nick, CChan& Channel, CString& sTopic); + bool OnTimerAutoJoin(CChan& Channel); CModule* FindModule(const CString& sModule) const; bool LoadModule(const CString& sModule, const CString& sArgs, CUser* pUser, CString& sRetMsg, bool bFake = false); @@ -463,13 +463,13 @@ class CGlobalModules : public CModules { public: CGlobalModules() : CModules() {} - virtual ~CGlobalModules() {} + ~CGlobalModules() {} - virtual bool OnConfigLine(const CString& sName, const CString& sValue, CUser* pUser, CChan* pChan); - virtual bool OnDeleteUser(CUser& User); - virtual void OnClientConnect(CClient* pClient, const CString& sHost, unsigned short uPort); - virtual bool OnLoginAttempt(CSmartPtr<CAuthBase> Auth); - virtual void OnFailedLogin(const CString& sUsername, const CString& sRemoteIP); + bool OnConfigLine(const CString& sName, const CString& sValue, CUser* pUser, CChan* pChan); + bool OnDeleteUser(CUser& User); + void OnClientConnect(CClient* pClient, const CString& sHost, unsigned short uPort); + bool OnLoginAttempt(CSmartPtr<CAuthBase> Auth); + void OnFailedLogin(const CString& sUsername, const CString& sRemoteIP); private: }; Modified: trunk/Nick.h =================================================================== --- trunk/Nick.h 2008-12-21 17:10:25 UTC (rev 1299) +++ trunk/Nick.h 2008-12-22 17:22:34 UTC (rev 1300) @@ -26,7 +26,7 @@ public: CNick(); CNick(const CString& sNick); - virtual ~CNick(); + ~CNick(); void Reset(); void Parse(const CString& sNickMask); Modified: trunk/Server.h =================================================================== --- trunk/Server.h 2008-12-21 17:10:25 UTC (rev 1299) +++ trunk/Server.h 2008-12-22 17:22:34 UTC (rev 1300) @@ -14,7 +14,7 @@ class CServer { public: CServer(const CString& sName, unsigned short uPort = 6667, const CString& sPass = "", bool bSSL = false); - virtual ~CServer(); + ~CServer(); const CString& GetName() const; unsigned short GetPort() const; Modified: trunk/Template.h =================================================================== --- trunk/Template.h 2008-12-21 17:10:25 UTC (rev 1299) +++ trunk/Template.h 2008-12-22 17:22:34 UTC (rev 1300) @@ -27,7 +27,7 @@ m_eEscapeTo = CString::EASCII; } - virtual ~CTemplateOptions() {} + ~CTemplateOptions() {} void Parse(const CString& sLine); @@ -50,7 +50,7 @@ m_pvRows = pRows; } - virtual ~CTemplateLoopContext() {} + ~CTemplateLoopContext() {} // Setters void SetName(const CString& s) { m_sName = s; } @@ -86,7 +86,7 @@ CTemplate() : MCString(), m_spOptions(new CTemplateOptions) {} CTemplate(const CString& sFileName) : MCString(), m_sFileName(sFileName), m_spOptions(new CTemplateOptions) {} CTemplate(const CSmartPtr<CTemplateOptions>& Options) : MCString(), m_spOptions(Options) {} - virtual ~CTemplate(); + ~CTemplate(); bool SetFile(const CString& sFileName); bool Print(ostream& oOut = cout); Modified: trunk/User.h =================================================================== --- trunk/User.h 2008-12-21 17:10:25 UTC (rev 1299) +++ trunk/User.h 2008-12-22 17:22:34 UTC (rev 1300) @@ -32,7 +32,7 @@ class CUser { public: CUser(const CString& sUserName); - virtual ~CUser(); + ~CUser(); bool PrintLine(CFile& File, const CString& sName, const CString& sValue); bool WriteConfig(CFile& File); Modified: trunk/Utils.h =================================================================== --- trunk/Utils.h 2008-12-21 17:10:25 UTC (rev 1299) +++ trunk/Utils.h 2008-12-22 17:22:34 UTC (rev 1300) @@ -41,7 +41,7 @@ class CUtils { public: CUtils(); - virtual ~CUtils(); + ~CUtils(); static CString GetIP(unsigned long addr); static unsigned long GetLongIP(const CString& sIP); Modified: trunk/ZNCString.h =================================================================== --- trunk/ZNCString.h 2008-12-21 17:10:25 UTC (rev 1299) +++ trunk/ZNCString.h 2008-12-22 17:22:34 UTC (rev 1300) @@ -77,7 +77,7 @@ CString(const char* c) : string(c) {} CString(const char* c, size_t l) : string(c, l) {} CString(const string& s) : string(s) {} - virtual ~CString() {} + ~CString() {} inline unsigned char* strnchr(const unsigned char* src, unsigned char c, unsigned int iMaxBytes, unsigned char* pFill = NULL, unsigned int* piCount = NULL) const; int CaseCmp(const CString& s, unsigned long uLen = CString::npos) const; Modified: trunk/znc.h =================================================================== --- trunk/znc.h 2008-12-21 17:10:25 UTC (rev 1299) +++ trunk/znc.h 2008-12-22 17:22:34 UTC (rev 1300) @@ -27,7 +27,7 @@ CSockManager() : TSocketManager<Csock>() {} virtual ~CSockManager() {} - virtual bool ListenHost(u_short iPort, const CString& sSockName, const CString& sBindHost, int isSSL = false, int iMaxConns = SOMAXCONN, Csock *pcSock = NULL, u_int iTimeout = 0, bool bIsIPv6 = false) { + bool ListenHost(u_short iPort, const CString& sSockName, const CString& sBindHost, int isSSL = false, int iMaxConns = SOMAXCONN, Csock *pcSock = NULL, u_int iTimeout = 0, bool bIsIPv6 = false) { CSListener L(iPort, sBindHost); L.SetSockName(sSockName); @@ -44,11 +44,11 @@ return Listen(L, pcSock); } - virtual bool ListenAll(u_short iPort, const CString& sSockName, int isSSL = false, int iMaxConns = SOMAXCONN, Csock *pcSock = NULL, u_int iTimeout = 0, bool bIsIPv6 = false) { + bool ListenAll(u_short iPort, const CString& sSockName, int isSSL = false, int iMaxConns = SOMAXCONN, Csock *pcSock = NULL, u_int iTimeout = 0, bool bIsIPv6 = false) { return ListenHost(iPort, sSockName, "", isSSL, iMaxConns, pcSock, iTimeout, bIsIPv6); } - virtual u_short ListenRand(const CString& sSockName, const CString& sBindHost, int isSSL = false, int iMaxConns = SOMAXCONN, Csock *pcSock = NULL, u_int iTimeout = 0, bool bIsIPv6 = false) { + u_short ListenRand(const CString& sSockName, const CString& sBindHost, int isSSL = false, int iMaxConns = SOMAXCONN, Csock *pcSock = NULL, u_int iTimeout = 0, bool bIsIPv6 = false) { unsigned short uPort = 0; CSListener L(0, sBindHost); @@ -68,11 +68,11 @@ return uPort; } - virtual u_short ListenAllRand(const CString& sSockName, int isSSL = false, int iMaxConns = SOMAXCONN, Csock *pcSock = NULL, u_int iTimeout = 0, bool bIsIPv6 = false) { + u_short ListenAllRand(const CString& sSockName, int isSSL = false, int iMaxConns = SOMAXCONN, Csock *pcSock = NULL, u_int iTimeout = 0, bool bIsIPv6 = false) { return(ListenRand(sSockName, "", isSSL, iMaxConns, pcSock, iTimeout, bIsIPv6)); } - virtual bool Connect(const CString& sHostname, u_short iPort , const CString& sSockName, int iTimeout = 60, bool isSSL = false, const CString& sBindHost = "", Csock *pcSock = NULL) { + bool Connect(const CString& sHostname, u_short iPort , const CString& sSockName, int iTimeout = 60, bool isSSL = false, const CString& sBindHost = "", Csock *pcSock = NULL) { CSConnection C(sHostname, iPort, iTimeout); C.SetSockName(sSockName); @@ -90,7 +90,7 @@ class CZNC { public: CZNC(); - virtual ~CZNC(); + ~CZNC(); void DeleteUsers(); int Loop(); @@ -223,7 +223,7 @@ class CRealListener : public Csock { public: CRealListener() : Csock() {} - ~CRealListener() {} + virtual ~CRealListener() {} virtual bool ConnectionFrom(const CString& sHost, unsigned short uPort) { DEBUG_ONLY(cout << GetSockName() << " == ConnectionFrom(" << sHost << ", " << uPort << ")" << endl); @@ -258,7 +258,7 @@ m_pListener = NULL; } - virtual ~CListener() { + ~CListener() { if (m_pListener) CZNC::Get().GetManager().DelSockByAddr(m_pListener); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-12-23 10:08:04
|
Revision: 1301 http://znc.svn.sourceforge.net/znc/?rev=1301&view=rev Author: psychon Date: 2008-12-23 10:07:54 +0000 (Tue, 23 Dec 2008) Log Message: ----------- Make CChan smaller This is mostly done by removing unused members, but there is also removes a cache which saved how many opped, voiced etc users are on a channel. This shouldn't result in a big slowdown, since this data is only ever used for /msg *status listchans. Also, this replaces the API to access this data with a version which should be faster especially for big channels. On amd64 the size of CChan was 600 bytes before and is 400 bytes now. Modified Paths: -------------- trunk/Chan.cpp trunk/Chan.h trunk/ClientCommand.cpp trunk/IRCSock.cpp Modified: trunk/Chan.cpp =================================================================== --- trunk/Chan.cpp 2008-12-22 17:22:34 UTC (rev 1300) +++ trunk/Chan.cpp 2008-12-23 10:07:54 UTC (rev 1301) @@ -34,13 +34,8 @@ } void CChan::Reset() { - m_bWhoDone = false; m_bIsOn = false; - m_suUserPerms.clear(); m_musModes.clear(); - m_muuPermCount.clear(); - m_uLimit = 0; - m_uClientRequests = 0; m_sTopic = ""; m_sTopicOwner = ""; m_ulTopicDate = 0; @@ -98,8 +93,6 @@ void CChan::JoinUser(bool bForce, const CString& sKey, CClient* pClient) { if (!bForce && (!IsOn() || !IsDetached())) { - IncClientRequests(); - m_pUser->PutIRC("JOIN " + GetName() + " " + ((sKey.empty()) ? GetKey() : sKey)); return; } @@ -203,32 +196,9 @@ void CChan::SetModes(const CString& sModes) { m_musModes.clear(); - m_uLimit = 0; ModeChange(sModes); } -void CChan::IncClientRequests() { - m_uClientRequests++; -} - -bool CChan::DecClientRequests() { - if (!m_uClientRequests) { - return false; - } - - m_uClientRequests--; - return true; -} - -bool CChan::Who() { - if (m_bWhoDone) { - return false; - } - - m_pUser->PutIRC("WHO " + GetName()); - return true; -} - void CChan::OnWho(const CString& sNick, const CString& sIdent, const CString& sHost) { CNick* pNick = FindNick(sNick); @@ -266,17 +236,13 @@ if (uPerm) { if (bAdd) { - if (pNick->AddPerm(uPerm)) { - IncPermCount(uPerm); - } + pNick->AddPerm(uPerm); if (pNick->GetNick().Equals(m_pUser->GetCurNick())) { AddPerm(uPerm); } } else { - if (pNick->RemPerm(uPerm)) { - DecPermCount(uPerm); - } + pNick->RemPerm(uPerm); if (pNick->GetNick().Equals(m_pUser->GetCurNick())) { RemPerm(uPerm); @@ -462,9 +428,7 @@ pNick->SetHost(sHost); for (CString::size_type i = 0; i < sPrefix.length(); i++) { - if (pNick->AddPerm(sPrefix[i])) { - IncPermCount(sPrefix[i]); - } + pNick->AddPerm(sPrefix[i]); } if (pNick->GetNick().Equals(m_pUser->GetCurNick())) { @@ -478,31 +442,19 @@ return true; } -unsigned int CChan::GetPermCount(unsigned char uPerm) const { - map<unsigned char, unsigned int>::const_iterator it = m_muuPermCount.find(uPerm); - return (it == m_muuPermCount.end()) ? 0 : it->second; -} +map<char, unsigned int> CChan::GetPermCounts() const { + map<char, unsigned int> mRet; -void CChan::DecPermCount(unsigned char uPerm) { - map<unsigned char, unsigned int>::iterator it = m_muuPermCount.find(uPerm); + map<CString,CNick*>::const_iterator it; + for (it = m_msNicks.begin(); it != m_msNicks.end(); it++) { + CString sPerms = it->second->GetPermStr(); - if (it == m_muuPermCount.end()) { - m_muuPermCount[uPerm] = 0; - } else { - if (it->second) { - m_muuPermCount[uPerm]--; + for (unsigned int p = 0; p < sPerms.size(); p++) { + mRet[sPerms[p]]++; } } -} -void CChan::IncPermCount(unsigned char uPerm) { - map<unsigned char, unsigned int>::iterator it = m_muuPermCount.find(uPerm); - - if (it == m_muuPermCount.end()) { - m_muuPermCount[uPerm] = 1; - } else { - m_muuPermCount[uPerm]++; - } + return mRet; } bool CChan::RemNick(const CString& sNick) { @@ -514,12 +466,6 @@ return false; } - const set<unsigned char>& suPerms = it->second->GetChanPerms(); - - for (it2 = suPerms.begin(); it2 != suPerms.end(); it2++) { - DecPermCount(*it2); - } - delete it->second; m_msNicks.erase(it); Modified: trunk/Chan.h =================================================================== --- trunk/Chan.h 2008-12-22 17:22:34 UTC (rev 1300) +++ trunk/Chan.h 2008-12-23 10:07:54 UTC (rev 1301) @@ -61,10 +61,6 @@ void DetachUser(); void AttachUser(); - void IncClientRequests(); - bool DecClientRequests(); - - bool Who(); void OnWho(const CString& sNick, const CString& sIdent, const CString& sHost); // Modes @@ -102,8 +98,6 @@ // !wrappers // Setters - void IncPermCount(unsigned char uPerm); - void DecPermCount(unsigned char uPerm); void SetIsOn(bool b) { m_bIsOn = b; if (!b) { Reset(); } } void SetKey(const CString& s) { m_sKey = s; } void SetTopic(const CString& s) { m_sTopic = s; } @@ -112,7 +106,6 @@ void SetDefaultModes(const CString& s) { m_sDefaultModes = s; } void SetBufferCount(unsigned int u) { m_uBufferCount = u; } void SetKeepBuffer(bool b) { m_bKeepBuffer = b; } - void SetWhoDone(bool b = true) { m_bWhoDone = b; } void SetDetached(bool b = true) { m_bDetached = b; } void SetInConfig(bool b) { m_bInConfig = b; } void SetCreationDate(unsigned long u) { m_ulCreationDate = u; } @@ -126,17 +119,15 @@ bool HasMode(unsigned char uMode) const; CString GetOptions() const; CString GetModeArg(unsigned char uMode) const; - unsigned int GetPermCount(unsigned char uPerm) const; + map<char, unsigned int> GetPermCounts() const; bool IsOn() const { return m_bIsOn; } const CString& GetName() const { return m_sName; } const map<unsigned char, CString>& GetModes() const { return m_musModes; } const CString& GetKey() const { return m_sKey; } - unsigned int GetLimit() const { return m_uLimit; } const CString& GetTopic() const { return m_sTopic; } const CString& GetTopicOwner() const { return m_sTopicOwner; } unsigned int GetTopicDate() const { return m_ulTopicDate; } const CString& GetDefaultModes() const { return m_sDefaultModes; } - const vector<CString>& GetBans() const { return m_vsBans; } const vector<CString>& GetBuffer() const { return m_vsBuffer; } const map<CString,CNick*>& GetNicks() const { return m_msNicks; } unsigned int GetNickCount() const { return m_msNicks.size(); } @@ -152,7 +143,6 @@ protected: bool m_bDetached; bool m_bIsOn; - bool m_bWhoDone; bool m_bKeepBuffer; bool m_bInConfig; bool m_bDisabled; @@ -164,18 +154,13 @@ unsigned long m_ulCreationDate; CUser* m_pUser; CNick m_Nick; - unsigned int m_uLimit; unsigned int m_uJoinTries; CString m_sDefaultModes; - vector<CString> m_vsBans; map<CString,CNick*> m_msNicks; // Todo: make this caseless (irc style) - set<unsigned int> m_suUserPerms; unsigned int m_uBufferCount; - unsigned int m_uClientRequests; // Used to tell how many times a client tried to join this chan vector<CString> m_vsBuffer; map<unsigned char, CString> m_musModes; - map<unsigned char, unsigned int> m_muuPermCount; }; #endif // !_CHAN_H Modified: trunk/ClientCommand.cpp =================================================================== --- trunk/ClientCommand.cpp 2008-12-22 17:22:34 UTC (rev 1300) +++ trunk/ClientCommand.cpp 2008-12-23 10:07:54 UTC (rev 1301) @@ -305,10 +305,10 @@ Table.SetCell("Modes", pChan->GetModeString()); Table.SetCell("Users", CString(pChan->GetNickCount())); + map<char, unsigned int> mPerms = pChan->GetPermCounts(); for (unsigned int b = 0; b < sPerms.size(); b++) { - CString sPerm; - sPerm += sPerms[b]; - Table.SetCell(sPerm, CString(pChan->GetPermCount(sPerms[b]))); + char cPerm = sPerms[b]; + Table.SetCell(CString(cPerm), CString(mPerms[cPerm])); } } Modified: trunk/IRCSock.cpp =================================================================== --- trunk/IRCSock.cpp 2008-12-22 17:22:34 UTC (rev 1300) +++ trunk/IRCSock.cpp 2008-12-23 10:07:54 UTC (rev 1301) @@ -155,20 +155,6 @@ case 376: // end motd m_pUser->AddMotdBuffer(":" + sServer + " " + sCmd + " ", " " + sRest); break; - case 471: // :irc.server.net 471 nick #chan :Cannot join channel (+l) - case 473: // :irc.server.net 473 nick #chan :Cannot join channel (+i) - case 475: // :irc.server.net 475 nick #chan :Cannot join channel (+k) - if (m_pUser->IsUserAttached()) { - CChan* pChan = m_pUser->FindChan(sRest.substr(0, sRest.find(' '))); - - if ((pChan) && (!pChan->IsOn())) { - if (!pChan->DecClientRequests()) { - return; - } - } - } - - break; case 437: // :irc.server.net 437 * badnick :Nick/channel is temporarily unavailable // :irc.server.net 437 mynick badnick :Nick/channel is temporarily unavailable @@ -185,16 +171,6 @@ } break; } - case 315: { - // :irc.server.com 315 yournick #chan :End of /WHO list. - CChan* pChan = m_pUser->FindChan(sLine.Token(3)); - - if (pChan) { - pChan->SetWhoDone(); - } - - break; - } case 331: { // :irc.server.com 331 yournick #chan :No topic is set. CChan* pChan = m_pUser->FindChan(sLine.Token(3)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-12-24 10:34:12
|
Revision: 1302 http://znc.svn.sourceforge.net/znc/?rev=1302&view=rev Author: psychon Date: 2008-12-24 10:34:07 +0000 (Wed, 24 Dec 2008) Log Message: ----------- Make CNick smaller This removes some not-so-important cache and uses a CString instead of a set<unsigned char> for saving the flags this nick has (op, voice, ...). set is huge! Before the virtual removal (r1300), CNick had 144 bytes, without the virtuals it only took 112 bytes. Now after this commit it is down to 40 bytes. (amd64) Happy Christmas tomaw ;) Modified Paths: -------------- trunk/Nick.cpp trunk/Nick.h Modified: trunk/Nick.cpp =================================================================== --- trunk/Nick.cpp 2008-12-23 10:07:54 UTC (rev 1301) +++ trunk/Nick.cpp 2008-12-24 10:34:07 UTC (rev 1302) @@ -23,8 +23,7 @@ CNick::~CNick() {} void CNick::Reset() { - m_cPerm = '\0'; - m_suChanPerms.clear(); + m_sChanPerms.clear(); } CString CNick::Concat(const CString& sNick, const CString& sSuffix, unsigned int uMaxNickLen) { @@ -77,13 +76,12 @@ } void CNick::SetUser(CUser* pUser) { m_pUser = pUser; } -void CNick::SetPermChar(char c) { m_cPerm = c; } void CNick::SetNick(const CString& s) { m_sNick = s; } void CNick::SetIdent(const CString& s) { m_sIdent = s; } void CNick::SetHost(const CString& s) { m_sHost = s; } bool CNick::HasPerm(unsigned char uPerm) const { - return (uPerm && m_suChanPerms.find(uPerm) != m_suChanPerms.end()); + return (uPerm && m_sChanPerms.find(uPerm) != CString::npos); } bool CNick::AddPerm(unsigned char uPerm) { @@ -91,39 +89,36 @@ return false; } - m_suChanPerms.insert(uPerm); - UpdatePermChar(); + m_sChanPerms.append(1, uPerm); return true; } bool CNick::RemPerm(unsigned char uPerm) { - if (!HasPerm(uPerm)) { + CString::size_type uPos = m_sChanPerms.find(uPerm); + if (uPos == CString::npos) { return false; } - m_suChanPerms.erase(uPerm); - UpdatePermChar(); + m_sChanPerms.erase(uPos); return true; } -void CNick::UpdatePermChar() { +unsigned char CNick::GetPermChar() const { CIRCSock* pIRCSock = (!m_pUser) ? NULL : m_pUser->GetIRCSock(); const CString& sChanPerms = (!pIRCSock) ? "@+" : pIRCSock->GetPerms(); - m_cPerm = 0; for (unsigned int a = 0; a < sChanPerms.size(); a++) { const unsigned char& c = sChanPerms[a]; if (HasPerm(c)) { - m_cPerm = c; - break; + return c; } } + + return '\0'; } -const set<unsigned char>& CNick::GetChanPerms() const { return m_suChanPerms; } -unsigned char CNick::GetPermChar() const { return m_cPerm; } CString CNick::GetPermStr() const { CIRCSock* pIRCSock = (!m_pUser) ? NULL : m_pUser->GetIRCSock(); const CString& sChanPerms = (!pIRCSock) ? "@+" : pIRCSock->GetPerms(); Modified: trunk/Nick.h =================================================================== --- trunk/Nick.h 2008-12-23 10:07:54 UTC (rev 1301) +++ trunk/Nick.h 2008-12-24 10:34:07 UTC (rev 1302) @@ -36,8 +36,6 @@ // Setters void SetUser(CUser* pUser); - void UpdatePermChar(); - void SetPermChar(char c); void SetNick(const CString& s); void SetIdent(const CString& s); void SetHost(const CString& s); @@ -46,7 +44,6 @@ // !Setters // Getters - const set<unsigned char>& GetChanPerms() const; CString GetPermStr() const; unsigned char GetPermChar() const; bool HasPerm(unsigned char uPerm) const; @@ -57,8 +54,7 @@ // !Getters private: protected: - set<unsigned char> m_suChanPerms; - unsigned char m_cPerm; + CString m_sChanPerms; CUser* m_pUser; CString m_sNick; CString m_sIdent; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-12-26 15:12:34
|
Revision: 1304 http://znc.svn.sourceforge.net/znc/?rev=1304&view=rev Author: psychon Date: 2008-12-26 15:12:25 +0000 (Fri, 26 Dec 2008) Log Message: ----------- Make watch save its settings and add CModule::ClearNV() Modified Paths: -------------- trunk/Modules.cpp trunk/Modules.h trunk/modules/watch.cpp Modified: trunk/Modules.cpp =================================================================== --- trunk/Modules.cpp 2008-12-25 08:48:59 UTC (rev 1303) +++ trunk/Modules.cpp 2008-12-26 15:12:25 UTC (rev 1304) @@ -279,6 +279,15 @@ return true; } +bool CModule::ClearNV(bool bWriteToDisk) { + m_mssRegistry.clear(); + + if (bWriteToDisk) { + return SaveRegistry(); + } + return true; +} + bool CModule::AddTimer(CTimer* pTimer) { if ((!pTimer) || (FindTimer(pTimer->GetName()))) { delete pTimer; Modified: trunk/Modules.h =================================================================== --- trunk/Modules.h 2008-12-25 08:48:59 UTC (rev 1303) +++ trunk/Modules.h 2008-12-26 15:12:25 UTC (rev 1304) @@ -328,6 +328,7 @@ MCString::iterator EndNV() { return m_mssRegistry.end(); } MCString::iterator BeginNV() { return m_mssRegistry.begin(); } void DelNV(MCString::iterator it) { m_mssRegistry.erase(it); } + bool ClearNV(bool bWriteToDisk = true); const CString& GetSavePath() const { if (!CFile::Exists(m_sSavePath)) { CDir::MakeDir(m_sSavePath); } return m_sSavePath; } Modified: trunk/modules/watch.cpp =================================================================== --- trunk/modules/watch.cpp 2008-12-25 08:48:59 UTC (rev 1303) +++ trunk/modules/watch.cpp 2008-12-26 15:12:25 UTC (rev 1304) @@ -154,9 +154,11 @@ public: MODCONSTRUCTOR(CWatcherMod) { m_Buffer.SetLineCount(500); + Load(); } virtual ~CWatcherMod() { + Save(); } virtual void OnRawMode(const CNick& OpNick, CChan& Channel, const CString& sModes, const CString& sArgs) { @@ -479,6 +481,55 @@ } } + void Save() { + ClearNV(false); + for (list<CWatchEntry>::iterator it = m_lsWatchers.begin(); it != m_lsWatchers.end(); it++) { + CWatchEntry& WatchEntry = *it; + CString sSave; + + sSave = WatchEntry.GetHostMask() + "\n"; + sSave += WatchEntry.GetTarget() + "\n"; + sSave += WatchEntry.GetPattern() + "\n"; + sSave += (WatchEntry.IsDisabled() ? "disabled\n" : "enabled\n"); + sSave += WatchEntry.GetSourcesStr(); + // Without this, loading fails if GetSourcesStr() + // returns an empty string + sSave += " "; + + SetNV(sSave, "", false); + } + + SaveRegistry(); + } + + void Load() { + // Just to make sure we dont mess up badly + m_lsWatchers.clear(); + + bool bWarn = false; + + for (MCString::iterator it = BeginNV(); it != EndNV(); it++) { + VCString vList; + it->first.Split("\n", vList); + + if (vList.size() != 5) { + bWarn = true; + continue; + } + + CWatchEntry WatchEntry(vList[0], vList[1], vList[2]); + if (vList[3].Equals("disabled")) + WatchEntry.SetDisabled(true); + else + WatchEntry.SetDisabled(false); + WatchEntry.SetSources(vList[4]); + m_lsWatchers.push_back(WatchEntry); + } + + if (bWarn) + PutModule("WARNING: malformed entry found while loading"); + } + list<CWatchEntry> m_lsWatchers; CBuffer m_Buffer; }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-12-30 13:05:09
|
Revision: 1311 http://znc.svn.sourceforge.net/znc/?rev=1311&view=rev Author: psychon Date: 2008-12-30 13:05:04 +0000 (Tue, 30 Dec 2008) Log Message: ----------- Remove some code duplications and move functions into classes This removes ReadFile(), WriteFile(), ReadLine(), Lower() and Upper() from Utils.h and adds CFile::ReadFile(). The biggest part of this patch fixes modules to use CFile and CString instead of these global functions. Modified Paths: -------------- trunk/FileUtils.cpp trunk/FileUtils.h trunk/Utils.h trunk/modules/away.cpp trunk/modules/email.cpp trunk/modules/savebuff.cpp trunk/modules/watch.cpp Modified: trunk/FileUtils.cpp =================================================================== --- trunk/FileUtils.cpp 2008-12-29 18:46:39 UTC (rev 1310) +++ trunk/FileUtils.cpp 2008-12-30 13:05:04 UTC (rev 1311) @@ -326,6 +326,30 @@ return false; } +bool CFile::ReadFile(CString& sData, size_t iMaxSize) { + char buff[4096]; + size_t iBytesRead = 0; + + sData.clear(); + + while (iBytesRead < iMaxSize) { + int iBytes = Read(buff, sizeof(buff)); + + if (iBytes < 0) + // Error + return false; + + if (iBytes == 0) + // EOF + return true; + + sData.append(buff, iBytes); + } + + // Buffer limit reached + return false; +} + int CFile::Write(const char *pszBuffer, u_int iBytes) { if (m_iFD == -1) { return -1; Modified: trunk/FileUtils.h =================================================================== --- trunk/FileUtils.h 2008-12-29 18:46:39 UTC (rev 1310) +++ trunk/FileUtils.h 2008-12-30 13:05:04 UTC (rev 1311) @@ -112,6 +112,7 @@ bool Open(int iFlags, mode_t iMode = 0644); int Read(char *pszBuffer, int iBytes); bool ReadLine(CString & sData, const CString & sDelimiter = "\n"); + bool ReadFile(CString& sData, size_t iMaxSize = 512 * 1024); int Write(const char *pszBuffer, u_int iBytes); int Write(const CString & sData); void Close(); Modified: trunk/Utils.h =================================================================== --- trunk/Utils.h 2008-12-29 18:46:39 UTC (rev 1310) +++ trunk/Utils.h 2008-12-30 13:05:04 UTC (rev 1311) @@ -258,87 +258,6 @@ #endif /* HAVE_LIBSSL */ -#define RF_BUFF 4096 -inline bool ReadFile(const CString & sFilename, CString & sLine) { - char inbuff[RF_BUFF]; - int bytes; - // clear ourselves out - sLine.clear(); - - FILE *f = fopen(sFilename.c_str(), "r"); - - if (!f) { - return false; - } - - while ((bytes = fread(inbuff, sizeof(char), RF_BUFF, f)) > 0) { - sLine.append(inbuff, bytes); - } - - fclose(f); - if (bytes < 0) { - return false; - } - - return true; -} - -inline bool WriteFile(const CString & sFilename, const CString & sData) { - FILE *f = fopen(sFilename.c_str(), "w"); - if (!f) { - return false; - } - - int iRet = fwrite(sData.data(), sizeof(char), sData.length(), f); - - fclose(f); - - if (iRet <= 0) { - return false; - } - - return true; -} - -inline bool ReadLine(const CString & sData, CString & sLine, CString::size_type & iPos) { - sLine.clear(); - - if (iPos >= sData.length()) { - return false; - } - - CString::size_type iFind = sData.find("\n", iPos); - - if (iFind == CString::npos) { - sLine = sData.substr(iPos, (sData.length() - iPos)); - iPos = CString::npos; - return true; - } - - sLine = sData.substr(iPos, (iFind - iPos)) + "\n"; - iPos = iFind + 1; - - return true; -} - -inline CString Lower(const CString & sLine) { - CString sRet; - for (u_int a = 0; a < sLine.length(); a++) { - sRet += tolower(sLine[a]); - } - - return sRet; -} - -inline CString Upper(const CString & sLine) { - CString sRet; - for (u_int a = 0; a < sLine.length(); a++) { - sRet += toupper(sLine[a]); - } - - return sRet; -} - /** * @class TCacheMap * @author prozac <pr...@ro...> Modified: trunk/modules/away.cpp =================================================================== --- trunk/modules/away.cpp 2008-12-29 18:46:39 UTC (rev 1310) +++ trunk/modules/away.cpp 2008-12-30 13:05:04 UTC (rev 1311) @@ -101,15 +101,17 @@ CString sFile; if (DecryptMessages(sFile)) { - CString sLine; - CString::size_type iPos = 0; - while (ReadLine(sFile, sLine, iPos)) - { + VCString vsLines; + VCString::iterator it; + + sFile.Split("\n", vsLines); + + for (it = vsLines.begin(); it != vsLines.end(); it++) { + CString sLine(*it); sLine.Trim(); AddMessage(sLine); } - } else - { + } else { m_sPassword = ""; CUtils::PrintError("[" + GetModName() + ".so] Failed to Decrypt Messages"); return(false); @@ -132,8 +134,12 @@ CString sPath = GetPath(); if (!sPath.empty()) { - WriteFile(sPath, sFile); - chmod(sPath.c_str(), 0600); + CFile File(sPath); + if (File.Open(O_WRONLY | O_CREAT | O_TRUNC, 0600)) { + File.Chmod(0600); + File.Write(sFile); + } + File.Close(); } } } @@ -379,12 +385,16 @@ CString sFile; sBuffer = ""; - if ((sMessages.empty()) || (!ReadFile(sMessages, sFile))) + CFile File(sMessages); + + if (sMessages.empty() || !File.Open(O_RDONLY) || !File.ReadFile(sFile)) { PutModule("Unable to find buffer"); return(true); // gonna be successful here } + File.Close(); + if (!sFile.empty()) { CBlowfish c(m_sPassword, BF_DECRYPT); Modified: trunk/modules/email.cpp =================================================================== --- trunk/modules/email.cpp 2008-12-29 18:46:39 UTC (rev 1310) +++ trunk/modules/email.cpp 2008-12-30 13:05:04 UTC (rev 1311) @@ -169,10 +169,13 @@ { EmailST tmp; tmp.sUidl = (char *)CMD5(m_sMailBuffer.substr(0, 255)); - CString sLine; - CString::size_type iPos = 0; - while (::ReadLine(m_sMailBuffer, sLine, iPos)) - { + VCString vsLines; + VCString::iterator it; + + m_sMailBuffer.Split("\n", vsLines); + + for (it = vsLines.begin(); it != vsLines.end(); it++) { + CString sLine(*it); sLine.Trim(); if (sLine.empty()) break; // out of the headers Modified: trunk/modules/savebuff.cpp =================================================================== --- trunk/modules/savebuff.cpp 2008-12-29 18:46:39 UTC (rev 1310) +++ trunk/modules/savebuff.cpp 2008-12-30 13:05:04 UTC (rev 1311) @@ -103,10 +103,13 @@ if (!pChan->GetBuffer().empty()) return(true); // reloaded a module probably in this case, so just verify we can decrypt the file - CString sLine; - CString::size_type iPos = 0; - while (ReadLine(sFile, sLine, iPos)) - { + VCString vsLines; + VCString::iterator it; + + sFile.Split("\n", vsLines); + + for (it = vsLines.begin(); it != vsLines.end(); it++) { + CString sLine(*it); sLine.Trim(); pChan->AddBuffer(sLine); } @@ -150,8 +153,12 @@ CString sPath = GetPath(vChans[a]->GetName()); if (!sPath.empty()) { - WriteFile(sPath, sFile); - chmod(sPath.c_str(), 0600); + CFile File(sPath); + if (File.Open(O_WRONLY | O_CREAT | O_TRUNC, 0600)) { + File.Chmod(0600); + File.Write(sFile); + } + File.Close(); } } } @@ -172,10 +179,13 @@ CString sFile; if (DecryptChannel(sArgs, sFile)) { - CString sLine; - CString::size_type iPos = 0; - while (ReadLine(sFile, sLine, iPos)) - { + VCString vsLines; + VCString::iterator it; + + sFile.Split("\n", vsLines); + + for (it = vsLines.begin(); it != vsLines.end(); it++) { + CString sLine(*it); sLine.Trim(); PutModule("[" + sLine + "]"); } @@ -200,10 +210,13 @@ PutUser(":***!zn...@zn... PRIVMSG " + sChan + " :Buffer Playback..."); if (DecryptChannel(sChan, sFile)) { - CString sLine; - CString::size_type iPos = 0; - while (ReadLine(sFile, sLine, iPos)) - { + VCString vsLines; + VCString::iterator it; + + sFile.Split("\n", vsLines); + + for (it = vsLines.begin(); it != vsLines.end(); it++) { + CString sLine(*it); sLine.Trim(); PutUser(sLine); } @@ -213,7 +226,7 @@ CString GetPath(const CString & sChannel) { - CString sBuffer = m_pUser->GetUserName() + Lower(sChannel); + CString sBuffer = m_pUser->GetUserName() + sChannel.AsLower(); CString sRet = GetSavePath(); sRet += "/" + CBlowfish::MD5(sBuffer, true); return(sRet); @@ -289,9 +302,13 @@ CString sFile; sBuffer = ""; - if ((sChannel.empty()) || (!ReadFile(sChannel, sFile))) + CFile File(sChannel); + + if (sChannel.empty() || !File.Open(O_RDONLY) || !File.ReadFile(sFile)) return(true); // gonna be successful here + File.Close(); + if (!sFile.empty()) { CBlowfish c(m_sPassword, BF_DECRYPT); Modified: trunk/modules/watch.cpp =================================================================== --- trunk/modules/watch.cpp 2008-12-29 18:46:39 UTC (rev 1310) +++ trunk/modules/watch.cpp 2008-12-30 13:05:04 UTC (rev 1311) @@ -70,7 +70,7 @@ for (unsigned int a = 0; a < m_vsSources.size(); a++) { const CWatchSource& WatchSource = m_vsSources[a]; - if (sSource.AsLower().WildCmp(Lower(WatchSource.GetSource()))) { + if (sSource.AsLower().WildCmp(WatchSource.GetSource().AsLower())) { if (WatchSource.IsNegated()) { return false; } else { @@ -80,7 +80,7 @@ } } - return (bGoodSource && Nick.GetHostMask().AsLower().WildCmp(Lower(m_sHostMask))) && sText.AsLower().WildCmp(Lower(m_sPattern)); + return (bGoodSource && Nick.GetHostMask().AsLower().WildCmp(m_sHostMask.AsLower())) && sText.AsLower().WildCmp(m_sPattern.AsLower()); } bool operator ==(const CWatchEntry& WatchEntry) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sil...@us...> - 2008-12-31 12:22:42
|
Revision: 1314 http://znc.svn.sourceforge.net/znc/?rev=1314&view=rev Author: silverleo Date: 2008-12-31 12:22:38 +0000 (Wed, 31 Dec 2008) Log Message: ----------- Add OnUnknownUserRaw() global module call. Modified Paths: -------------- trunk/Client.cpp trunk/Modules.cpp trunk/Modules.h Modified: trunk/Client.cpp =================================================================== --- trunk/Client.cpp 2008-12-30 23:17:50 UTC (rev 1313) +++ trunk/Client.cpp 2008-12-31 12:22:38 UTC (rev 1314) @@ -72,6 +72,9 @@ #ifdef _MODULES if (IsAttached()) { MODULECALL(OnUserRaw(sLine), m_pUser, this, return); + } else { + if (CZNC::Get().GetModules().OnUnknownUserRaw(this, sLine)) + return; } #endif Modified: trunk/Modules.cpp =================================================================== --- trunk/Modules.cpp 2008-12-30 23:17:50 UTC (rev 1313) +++ trunk/Modules.cpp 2008-12-31 12:22:38 UTC (rev 1314) @@ -564,6 +564,7 @@ void CGlobalModule::OnClientConnect(CClient* pClient, const CString& sHost, unsigned short uPort) {} CModule::EModRet CGlobalModule::OnLoginAttempt(CSmartPtr<CAuthBase> Auth) { return CONTINUE; } void CGlobalModule::OnFailedLogin(const CString& sUsername, const CString& sRemoteIP) {} +CModule::EModRet CGlobalModule::OnUnknownUserRaw(CClient* pClient, CString& sLine) { return CONTINUE; } CModules::CModules() { @@ -672,6 +673,10 @@ GLOBALMODCALL(OnFailedLogin(sUsername, sRemoteIP)); } +bool CGlobalModules::OnUnknownUserRaw(CClient* pClient, CString& sLine) { + GLOBALMODHALTCHK(OnUnknownUserRaw(pClient, sLine)); +} + CModule* CModules::FindModule(const CString& sModule) const { for (unsigned int a = 0; a < size(); a++) { if (sModule.Equals((*this)[a]->GetModName())) { Modified: trunk/Modules.h =================================================================== --- trunk/Modules.h 2008-12-30 23:17:50 UTC (rev 1313) +++ trunk/Modules.h 2008-12-31 12:22:38 UTC (rev 1314) @@ -458,6 +458,7 @@ virtual void OnClientConnect(CClient* pClient, const CString& sHost, unsigned short uPort); virtual EModRet OnLoginAttempt(CSmartPtr<CAuthBase> Auth); virtual void OnFailedLogin(const CString& sUsername, const CString& sRemoteIP); + virtual EModRet OnUnknownUserRaw(CClient* pClient, CString& sLine); private: }; @@ -471,6 +472,7 @@ void OnClientConnect(CClient* pClient, const CString& sHost, unsigned short uPort); bool OnLoginAttempt(CSmartPtr<CAuthBase> Auth); void OnFailedLogin(const CString& sUsername, const CString& sRemoteIP); + bool OnUnknownUserRaw(CClient* pClient, CString& sLine); private: }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |