mirror of
https://github.com/anope/anope.git
synced 2026-06-17 09:54:47 +02:00
Compare commits
375 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a1607f41b6 | |||
| 10901dd05b | |||
| 01177212bd | |||
| 64f83b3ccf | |||
| 172325ee97 | |||
| 969aacbf78 | |||
| 304e6eaabe | |||
| 564b8b8d9d | |||
| 309807c67f | |||
| 5fd1485938 | |||
| 7a741b467c | |||
| d24ae1f961 | |||
| eab5abb351 | |||
| f7b1b1907c | |||
| a563c8fb2f | |||
| def6a6deee | |||
| 1a3f890613 | |||
| d2d89ac412 | |||
| e090eaea65 | |||
| 1dbd7b406f | |||
| 27dde3266c | |||
| f1c3f0d820 | |||
| 0a78656804 | |||
| e2213e3cd2 | |||
| ec9931288b | |||
| 71ec1a93dd | |||
| 245a25877f | |||
| ae071cef75 | |||
| 57b31d43eb | |||
| 43152007c6 | |||
| 91ff17d10f | |||
| 357cd44bea | |||
| 46271fc348 | |||
| d8ca7c63bf | |||
| f7bac0839b | |||
| 862b101935 | |||
| 20d40fdc75 | |||
| 9650a3ffa5 | |||
| 14a957f8a0 | |||
| 8fb31b6441 | |||
| 969258352a | |||
| a6b09c1d9f | |||
| a9021f6284 | |||
| fa33bb2842 | |||
| cb9ab016f5 | |||
| 83e42f2adc | |||
| e0c3069c5f | |||
| 3e6d838285 | |||
| 64dd3c6655 | |||
| 9486cf9ecb | |||
| 0106d0b6bd | |||
| 3779ed916a | |||
| 3f05a42515 | |||
| d0e5a18848 | |||
| 670e73d69d | |||
| 07fffb0b90 | |||
| 1d3ca36768 | |||
| 8559c57cd6 | |||
| 792790a4d4 | |||
| 381d95e6da | |||
| 74556b77c0 | |||
| 91527cdcef | |||
| b9aa534731 | |||
| 658ecee817 | |||
| fb99dc43c9 | |||
| 144029fd61 | |||
| 2a1cd54bc7 | |||
| 0dd4a98e53 | |||
| f1577975a9 | |||
| fa833766a0 | |||
| 783f77d367 | |||
| dc840e9b99 | |||
| 0982becd98 | |||
| f83096c729 | |||
| eb7c9d0a86 | |||
| 8007cc8a3a | |||
| 30ea6365de | |||
| a11155551e | |||
| d45222798b | |||
| edb362eace | |||
| 1e9f1b09f5 | |||
| 16439f52a5 | |||
| 45640c43d3 | |||
| 6ebbec79ea | |||
| 096de4fb25 | |||
| 01946cb467 | |||
| 0e0538408d | |||
| 841b3f689e | |||
| 0315bd31f8 | |||
| 2539f34d3c | |||
| 7eb437b9fe | |||
| 0e0eb38b2a | |||
| 6fca33a2ba | |||
| 66e2dce646 | |||
| 06679e487e | |||
| 54acc25eb3 | |||
| a4c81c72c1 | |||
| 2060bacdea | |||
| 8d1fe0a36f | |||
| 165c0588d4 | |||
| 7c14f76bc8 | |||
| a86e15afe9 | |||
| 2b847c63e9 | |||
| 11b91fdc67 | |||
| 0dda705cdb | |||
| f4d7ae2e12 | |||
| 826e040d41 | |||
| 3ef227aa88 | |||
| f592417ec2 | |||
| ed13cd11ec | |||
| f8a0a645b0 | |||
| 12b0ff0593 | |||
| 13688c595b | |||
| 2b7dd6c2a0 | |||
| c5fc11f5fe | |||
| bf2f151c68 | |||
| 4c64c86ef4 | |||
| cb975f4a6c | |||
| 0383868a29 | |||
| b92711dc15 | |||
| e990259d6d | |||
| 5a4de87df1 | |||
| 9a488327b2 | |||
| f302367fc4 | |||
| 3866b002d6 | |||
| fab8b8b137 | |||
| 80d0e03f64 | |||
| a32ab376db | |||
| f39d94c84e | |||
| ac338266f4 | |||
| 7385580ffa | |||
| f4a0ee30b3 | |||
| bd94cbc25b | |||
| 3a97d196f9 | |||
| 22894e9e09 | |||
| 24f3066224 | |||
| d53c25b043 | |||
| 7dfc8e8ee8 | |||
| 3a9a0ef135 | |||
| e594937c0b | |||
| 085976adf5 | |||
| a2be8c402f | |||
| a29845cc56 | |||
| fac3b85903 | |||
| d1b5797f5d | |||
| f1fa7e1a5f | |||
| a2e9e45e37 | |||
| ee0636ac46 | |||
| ed9ec89061 | |||
| b7c6f8ec7f | |||
| 94f7962e1a | |||
| 3308ab7153 | |||
| 951de6b39d | |||
| 388fe38d00 | |||
| d034a9c36a | |||
| 49064ec67d | |||
| a9fa7edf82 | |||
| 42dd49233c | |||
| 3a422777c5 | |||
| e42f125a85 | |||
| f5a7a5d8bc | |||
| ca7769d8b4 | |||
| e5bd79ba19 | |||
| 804cb9b051 | |||
| 7582b6503f | |||
| cd9ec6fe10 | |||
| 8f60562dfa | |||
| 3bf6cdb6ac | |||
| c01f8cad22 | |||
| cea53460b0 | |||
| d8642972d9 | |||
| 9b26a0dc09 | |||
| 15c66af4e5 | |||
| 6661c3ebdb | |||
| 0c9117abce | |||
| ff17a9af7e | |||
| 1b636ed4ff | |||
| 61b6c92ee2 | |||
| e604e04847 | |||
| 461bc4c87e | |||
| d049bf0d8f | |||
| a53cbd82cc | |||
| 571ff82f69 | |||
| 7ddc6d8be5 | |||
| dd258b36d2 | |||
| 8e59e58987 | |||
| de902c6db3 | |||
| e02967bd4a | |||
| 92bf0c800f | |||
| 40c9226e3a | |||
| e897082f69 | |||
| b67dada56f | |||
| c66f28ed61 | |||
| 87e96d6f52 | |||
| f590c52321 | |||
| 911cc43d9c | |||
| 6ba8f8b264 | |||
| 94f465832f | |||
| 9ab97ae21a | |||
| 246a2c664b | |||
| ad4180e2d6 | |||
| 01906d0b74 | |||
| 005d3f9558 | |||
| a895077b54 | |||
| 7e10fca23b | |||
| b2d258328a | |||
| ef5c945e0b | |||
| 1e0bfbd15a | |||
| cb73ab9d23 | |||
| ac90a6935a | |||
| 766fe138e4 | |||
| dafccc1821 | |||
| ace25983a4 | |||
| bb7b8e27ee | |||
| 72fa53c20e | |||
| eb0c255fad | |||
| 01994c1ba1 | |||
| ec7bc8dd41 | |||
| 6ee50f852e | |||
| 6cd3b56805 | |||
| 27ad395a56 | |||
| c4247b71b2 | |||
| 5a51984db1 | |||
| b75abf9ba3 | |||
| f39c428ac5 | |||
| 60f0b2ff87 | |||
| 6242a60134 | |||
| dd198b89c0 | |||
| 2cfcf3c512 | |||
| 29bd5a7daa | |||
| 975b0cd374 | |||
| a0ebea2049 | |||
| cc8e88aec8 | |||
| 11d47efc7a | |||
| c7154edb4d | |||
| 5559f91fae | |||
| 3dd71f207d | |||
| 7776fb8548 | |||
| 7954542a86 | |||
| a1c45be517 | |||
| bab5a37970 | |||
| da1162f770 | |||
| abc8b4aa4e | |||
| 60c7b5b10f | |||
| a939b821a7 | |||
| 14150647bc | |||
| 1b265bf291 | |||
| ac279a1637 | |||
| 6ed06539be | |||
| b5242e3be0 | |||
| 84ac00e953 | |||
| 822e75b501 | |||
| e2c6825cd2 | |||
| fdcc5b5ee1 | |||
| 4f438917f1 | |||
| 250aecb683 | |||
| 4ca2b60f91 | |||
| e305db41ce | |||
| 6ad63349c1 | |||
| d0646a37dc | |||
| b80e0cb996 | |||
| 5b65c9ce87 | |||
| f07f92e30d | |||
| 594c161622 | |||
| 0570b57a99 | |||
| 727bcf1fde | |||
| 699bee06c3 | |||
| ab337e8de0 | |||
| 381f74a26e | |||
| 471043c5c4 | |||
| 29c8702c35 | |||
| 0b82d74262 | |||
| 5cb5dc197a | |||
| 664ca1bbf2 | |||
| efa7c81ca8 | |||
| 2874513e0a | |||
| 51d9b5056d | |||
| 3c219be3c7 | |||
| cc8f2117f8 | |||
| 230f9e9a35 | |||
| d468567a12 | |||
| d3d36ff73c | |||
| 4897cdf60f | |||
| ef8db98e5c | |||
| d9e57f5651 | |||
| e50c6a5efb | |||
| a331432030 | |||
| ac338268c9 | |||
| 1354bf8815 | |||
| ed1469d3b1 | |||
| 6b8277f152 | |||
| 2d69fea6d2 | |||
| af916f28f4 | |||
| 7c2db57965 | |||
| b13836f3cf | |||
| 2bd483c273 | |||
| 217a375517 | |||
| 97a42e4f7d | |||
| 113237964d | |||
| a3afe44ca6 | |||
| b60b06ad76 | |||
| 902158671a | |||
| 1873d67093 | |||
| 2629a580a1 | |||
| cfc81d5aca | |||
| 72ae5cacd4 | |||
| f2598bdb6e | |||
| 101fe6882d | |||
| a30afed7b2 | |||
| feedbd6b0d | |||
| 05bc74d9cb | |||
| e0cc7a6c0b | |||
| 2fdcb30beb | |||
| feff8c1fb1 | |||
| ea05ff108a | |||
| bcae4f00e1 | |||
| 01f65c7e64 | |||
| 958521b8c6 | |||
| 06d5233502 | |||
| a4b40f6f67 | |||
| 1d4f61e089 | |||
| 8ff16f17cc | |||
| 2bb115f6e4 | |||
| e46b0f0ccd | |||
| 572d1a94bd | |||
| 9210aae6f9 | |||
| d4b6968108 | |||
| 672acf306f | |||
| a408ceee74 | |||
| 55a564a0b4 | |||
| 027567b4b0 | |||
| 25e81f6ea9 | |||
| ea090fae8d | |||
| 74c5d989bc | |||
| 1dec3ee8fb | |||
| 446a6f6ea5 | |||
| 9d89891a90 | |||
| 1cbfdac929 | |||
| 49d1d9e79b | |||
| eb4510946f | |||
| 104b52b06e | |||
| 697f535f8b | |||
| 35ca9adc25 | |||
| 8f3958d0f4 | |||
| 57fb28e70a | |||
| 1ba8e796c7 | |||
| 645c224ff7 | |||
| 66a9b8605f | |||
| 9ee3f37bee | |||
| 9d7edd3055 | |||
| 2af1c0a5e9 | |||
| 08c8a883ef | |||
| 7cc23d874f | |||
| 324b4ee85e | |||
| 3ba4d4e97d | |||
| 9bb905229d | |||
| f98a3a85d6 | |||
| ef83568646 | |||
| 64fee38976 | |||
| 4768beb328 | |||
| 60c88393a0 | |||
| 07892e8b4b | |||
| 6c801d5780 | |||
| 0b76c8b5e6 | |||
| 942b1a8800 | |||
| 308d7937ef | |||
| 9c2591c20a | |||
| 6c51b17ef1 | |||
| 5a191ce5a6 | |||
| a68730adb1 | |||
| 9d24e8f35c | |||
| 4a8bc79a06 | |||
| b37da9de9e | |||
| a632cdc732 | |||
| c777c8d9aa |
@@ -9,7 +9,7 @@
|
||||
CURVER
|
||||
This program will help you to compile your Services, and ask you
|
||||
questions regarding the compile-time settings of it during the
|
||||
process. For more options type SOURCE_DIR/Config --help
|
||||
process. For more options type ./Config --help
|
||||
|
||||
Anope is a set of Services for IRC networks that allows users to
|
||||
manage their nicks and channels in a secure and efficient way,
|
||||
|
||||
+31
-1
@@ -1,5 +1,35 @@
|
||||
/autom4te.cache
|
||||
*.so
|
||||
*.o
|
||||
*.s
|
||||
Makefile
|
||||
Makefile.inc
|
||||
autom4te.cache/
|
||||
config.cache
|
||||
config.log
|
||||
config.status
|
||||
include/sysconf.h
|
||||
include/version.h
|
||||
include/language.h
|
||||
lang/language.h
|
||||
src/bin/anoperc
|
||||
lang/cat
|
||||
lang/de
|
||||
lang/en_us
|
||||
lang/es
|
||||
lang/fr
|
||||
lang/gr
|
||||
lang/hun
|
||||
lang/index
|
||||
lang/it
|
||||
lang/langcheck
|
||||
lang/langcomp
|
||||
lang/nl
|
||||
lang/pl
|
||||
lang/pt
|
||||
lang/ru
|
||||
lang/tr
|
||||
lang/ja_utf8
|
||||
src/services
|
||||
src/tools/anopesmtp
|
||||
src/tools/db-merger
|
||||
src/tools/epona2anope
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
branches:
|
||||
except:
|
||||
- 1.8
|
||||
-586
@@ -1,586 +0,0 @@
|
||||
# This usage of CMake requires at least version 2.4 (checks are made to determine what to use when certain versions lack functions)
|
||||
cmake_minimum_required(VERSION 2.4 FATAL_ERROR)
|
||||
if(COMMAND cmake_policy)
|
||||
cmake_policy(SET CMP0003 NEW)
|
||||
endif(COMMAND cmake_policy)
|
||||
|
||||
# If the Source dir and the Binary dir are the same, we are building in-source, which we will disallow due to Autotools being there (but only on non-Windows)
|
||||
if(${CMAKE_CURRENT_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_BINARY_DIR} AND NOT WIN32)
|
||||
message(FATAL_ERROR "You can not use CMake to build Anope from the root of it's source tree! Remove the CMakeCache.txt file from this directory, then create a separate directory (either below this directory or elsewhere), and then re-run CMake from there.")
|
||||
endif(${CMAKE_CURRENT_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_BINARY_DIR} AND NOT WIN32)
|
||||
|
||||
# Detect is we are using CMake 2.6 or better, these versions include functions that require less work than CMake 2.4 does
|
||||
if(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
|
||||
set(CMAKE26_OR_BETTER TRUE)
|
||||
set(CMAKE244_OR_BETTER TRUE)
|
||||
set(CMAKE242_OR_BETTER TRUE)
|
||||
else(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
|
||||
set(CMAKE26_OR_BETTER FALSE)
|
||||
# Also detect if we are using CMake 2.4.4 or better, the CheckCXXCompilerFlag module is non-existant in earlier versions
|
||||
if(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION} GREATER 2.4.3)
|
||||
set(CMAKE244_OR_BETTER TRUE)
|
||||
set(CMAKE242_OR_BETTER TRUE)
|
||||
else(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION} GREATER 2.4.3)
|
||||
set(CMAKE244_OR_BETTER FALSE)
|
||||
# ALSO detect if we are using CMake 2.4.2 or better, the APPEND sub-command of list() is non-existant in earlier versions
|
||||
if(CMAKE_PATCH_VERSION GREATER 1)
|
||||
set(CMAKE242_OR_BETTER TRUE)
|
||||
else(CMAKE_PATCH_VERSION GREATER 1)
|
||||
set(CMAKE242_OR_BETTER FALSE)
|
||||
endif(CMAKE_PATCH_VERSION GREATER 1)
|
||||
endif(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION} GREATER 2.4.3)
|
||||
endif(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
|
||||
|
||||
# If the user specifies -DCMAKE_BUILD_TYPE on the command line, take their definition
|
||||
# and dump it in the cache along with proper documentation, otherwise set CMAKE_BUILD_TYPE
|
||||
# to Debug prior to calling PROJECT()
|
||||
# Only do this if not using Visual Studio
|
||||
if(NOT MSVC)
|
||||
if(CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "Choose the type of build, options are: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel.")
|
||||
else(CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE DEBUG CACHE STRING "Choose the type of build, options are: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel.")
|
||||
endif(CMAKE_BUILD_TYPE)
|
||||
endif(NOT MSVC)
|
||||
|
||||
# Set the project as C++ primarily, but have C enabled for the checks required later
|
||||
project(Anope CXX)
|
||||
enable_language(C)
|
||||
|
||||
# If running under MinGW, we have to force the resource compiler settings (hopefully this will be fixed in a later version of CMake)
|
||||
if(MINGW)
|
||||
set(CMAKE_RC_COMPILER_INIT windres)
|
||||
enable_language(RC)
|
||||
set(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> <FLAGS> <DEFINES> -o <OBJECT> <SOURCE>")
|
||||
endif(MINGW)
|
||||
|
||||
# Include the checking functions used later in this CMakeLists.txt
|
||||
include(CheckFunctionExists)
|
||||
include(CheckIncludeFile)
|
||||
include(CheckTypeSize)
|
||||
include(CheckLibraryExists)
|
||||
if(CMAKE244_OR_BETTER)
|
||||
include(CheckCXXCompilerFlag)
|
||||
else(CMAKE244_OR_BETTER)
|
||||
include(TestCXXAcceptsFlag)
|
||||
endif(CMAKE244_OR_BETTER)
|
||||
|
||||
# Add an optional variable for using run-cc.pl for building, Perl will be checked later regardless of this setting
|
||||
option(USE_RUN_CC_PL "Use run-cc.pl for building" OFF)
|
||||
|
||||
# Use the following directories as includes
|
||||
include_directories(${Anope_SOURCE_DIR}/include ${Anope_BINARY_DIR}/include ${Anope_BINARY_DIR}/lang)
|
||||
|
||||
# If using Windows, always add the _WIN32 define
|
||||
if(WIN32)
|
||||
add_definitions(-D_WIN32)
|
||||
endif(WIN32)
|
||||
|
||||
# If using Visual Studio, set the C++ flags accordingly
|
||||
if(MSVC)
|
||||
# Remove the default exception handling flags, also remove default warning level flag
|
||||
string(REPLACE "/EHsc " "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
|
||||
string(REPLACE "/GX " "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
|
||||
string(REPLACE "/W3 " "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
|
||||
# Set the compile flags to have warnings on the max setting (but disable a few annoying ones), exception handling turned on, the proper defines
|
||||
set(CXXFLAGS "${CXXFLAGS} /W4 /wd4251 /wd4706 /wd4800 /wd4996 /EHs")
|
||||
add_definitions(-DMSVCPP -D_CRT_SECURE_NO_WARNINGS)
|
||||
# Otherwise, we're not using Visual Studio
|
||||
else(MSVC)
|
||||
# Set the compile flags to have all warnings on (including shadowed variables)
|
||||
set(CXXFLAGS "${CXXFLAGS} -Wall -Wshadow")
|
||||
# If on a *nix system, also set the compile flags to remove GNU extensions (favor ISO C++) as well as reject non-ISO C++ code, also remove all leading underscores in exported symbols
|
||||
if(UNIX)
|
||||
set(CXXFLAGS "${CXXFLAGS} -ansi -pedantic -fno-leading-underscore")
|
||||
# Set the module-specific compile flags to the same setting as the compile flags
|
||||
set(MODULE_CXXFLAGS "${CXXFLAGS}")
|
||||
# If we aren't on a *nix system, we are using MinGW
|
||||
else(UNIX)
|
||||
# Also, if we are building under MinGW, add another define for MinGW
|
||||
if(MINGW)
|
||||
add_definitions(-DMINGW)
|
||||
endif(MINGW)
|
||||
endif(UNIX)
|
||||
endif(MSVC)
|
||||
|
||||
# If CMake has found that the given system requires a special library for dl* calls, include it with the linker flags
|
||||
if(CMAKE_DL_LIBS)
|
||||
set(LDFLAGS "${LDFLAGS} -l${CMAKE_DL_LIBS}")
|
||||
endif(CMAKE_DL_LIBS)
|
||||
|
||||
# Under MinGW, the -shared flag isn't properly set in the module-specific linker flags, add it from the C flags for shared libraries
|
||||
if(MINGW)
|
||||
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS}")
|
||||
endif(MINGW)
|
||||
|
||||
# Under Windows, we set the executable name for Anope to be anope
|
||||
if(WIN32)
|
||||
set(PROGRAM_NAME anope)
|
||||
# Under *nix, we set the executable name for Anope to be services
|
||||
else(WIN32)
|
||||
set(PROGRAM_NAME services)
|
||||
endif(WIN32)
|
||||
|
||||
# If we are not using Visual Studio, we'll run the following checks
|
||||
if(NOT MSVC)
|
||||
# Check if the C++ compiler can accept the -pipe flag, and add it to the compile flags if it works
|
||||
if(CMAKE244_OR_BETTER)
|
||||
# If using CMake 2.4.4 or better, we can use check_cxx_compiler_flag
|
||||
check_cxx_compiler_flag(-pipe HAVE_PIPE_FLAG)
|
||||
else(CMAKE244_OR_BETTER)
|
||||
# If using CMake 2.4.3 or older, we will use check_cxx_accepts_flags instead
|
||||
check_cxx_accepts_flag(-pipe HAVE_PIPE_FLAG)
|
||||
endif(CMAKE244_OR_BETTER)
|
||||
# If the flag was accepted, add it to the list of flags
|
||||
if(HAVE_PIPE_FLAG)
|
||||
set(CXXFLAGS "${CXXFLAGS} -pipe")
|
||||
endif(HAVE_PIPE_FLAG)
|
||||
|
||||
# The following are additional library checks, they are not required for Windows
|
||||
if(NOT WIN32)
|
||||
# Check if socket is within the socket library (if the library exists), and add it to the linker flags if needed
|
||||
check_library_exists(socket socket "" HAVE_SOCKET_LIB)
|
||||
if(HAVE_SOCKET_LIB)
|
||||
set(LDFLAGS "${LDFLAGS} -lsocket")
|
||||
endif(HAVE_SOCKET_LIB)
|
||||
endif(NOT WIN32)
|
||||
endif(NOT MSVC)
|
||||
|
||||
# If DEFUMASK wasn't passed to CMake, set a default depending on if RUNGROUP was passed in or not
|
||||
if(NOT DEFUMASK)
|
||||
if(RUNGROUP)
|
||||
set(DEFUMASK "007")
|
||||
else(RUNGROUP)
|
||||
set(DEFUMASK "077")
|
||||
endif(RUNGROUP)
|
||||
endif(NOT DEFUMASK)
|
||||
|
||||
# Check for the existance of the following include files
|
||||
check_include_file(sys/types.h HAVE_SYS_TYPES_H)
|
||||
check_include_file(strings.h HAVE_STRINGS_H)
|
||||
check_include_file(sys/select.h HAVE_SYS_SELECT_H)
|
||||
|
||||
# Check for the existance of the following functions
|
||||
check_function_exists(gethostbyname HAVE_GETHOSTBYNAME)
|
||||
check_function_exists(gettimeofday HAVE_GETTIMEOFDAY)
|
||||
check_function_exists(setgrent HAVE_SETGRENT)
|
||||
check_function_exists(strcasecmp HAVE_STRCASECMP)
|
||||
check_function_exists(stricmp HAVE_STRICMP)
|
||||
check_function_exists(strlcat HAVE_STRLCAT)
|
||||
check_function_exists(strlcpy HAVE_STRLCPY)
|
||||
check_function_exists(umask HAVE_UMASK)
|
||||
check_function_exists(backtrace HAVE_BACKTRACE)
|
||||
|
||||
# Check for the existance of the following types
|
||||
check_type_size(uint8_t UINT8_T)
|
||||
check_type_size(u_int8_t U_INT8_T)
|
||||
check_type_size(int16_t INT16_T)
|
||||
check_type_size(uint16_t UINT16_T)
|
||||
check_type_size(u_int16_t U_INT16_T)
|
||||
check_type_size(int32_t INT32_T)
|
||||
check_type_size(uint32_t UINT32_T)
|
||||
check_type_size(u_int32_t U_INT32_T)
|
||||
|
||||
# Only CMake 2.6.x and later contain the STRIP sub-command for string()
|
||||
if(CMAKE26_OR_BETTER)
|
||||
# Strip the leading and trailing spaces from the compile flags
|
||||
if(CXXFLAGS)
|
||||
string(STRIP ${CXXFLAGS} CXXFLAGS)
|
||||
endif(CXXFLAGS)
|
||||
# Strip the leading and trailing spaces from the linker flags
|
||||
if(LDFLAGS)
|
||||
string(STRIP ${LDFLAGS} LDFLAGS)
|
||||
endif(LDFLAGS)
|
||||
endif(CMAKE26_OR_BETTER)
|
||||
|
||||
# A macro to handle appending to lists
|
||||
macro(append_to_list LIST)
|
||||
if(CMAKE242_OR_BETTER)
|
||||
# For CMake 2.4.2 or better, we can just use the APPEND sub-command of list()
|
||||
list(APPEND ${LIST} ${ARGN})
|
||||
else(CMAKE242_OR_BETTER)
|
||||
# For CMake 2.4.x before 2.4.2, we have to do this manually use set() instead
|
||||
set(${LIST} ${${LIST}} ${ARGN})
|
||||
endif(CMAKE242_OR_BETTER)
|
||||
endmacro(append_to_list)
|
||||
|
||||
# A macro to handle reading specific lines from a file
|
||||
macro(read_from_file FILE REGEX STRINGS)
|
||||
if(CMAKE26_OR_BETTER)
|
||||
# For CMake 2.6.x or better, we can just use this function to get the lines that match the given regular expression
|
||||
file(STRINGS ${FILE} RESULT REGEX ${REGEX})
|
||||
else(CMAKE26_OR_BETTER)
|
||||
# For CMake 2.4.x, we need to do this manually, firsly we read the file in
|
||||
file(READ ${FILE} ALL_STRINGS)
|
||||
# Next we replace all newlines with semicolons
|
||||
string(REGEX REPLACE "\n" ";" ALL_STRINGS ${ALL_STRINGS})
|
||||
# Clear the result list
|
||||
set(RESULT)
|
||||
# Iterate through all the lines of the file
|
||||
foreach(STRING ${ALL_STRINGS})
|
||||
# Check for a match against the given regular expression
|
||||
string(REGEX MATCH ${REGEX} STRING_MATCH ${STRING})
|
||||
# If we had a match, append the match to the list
|
||||
if(STRING_MATCH)
|
||||
append_to_list(RESULT ${STRING})
|
||||
endif(STRING_MATCH)
|
||||
endforeach(STRING)
|
||||
endif(CMAKE26_OR_BETTER)
|
||||
# Set the given STRINGS variable to the result
|
||||
set(${STRINGS} ${RESULT})
|
||||
endmacro(read_from_file)
|
||||
|
||||
# A macro to handle searching within a list
|
||||
macro(find_in_list LIST ITEM_TO_FIND FOUND)
|
||||
if(CMAKE26_OR_BETTER OR ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION} GREATER 2.4.7)
|
||||
# For CMake 2.6.x or better (as well as CMake 2.4.8 or better), we can use the FIND sub-command of list()
|
||||
list(FIND ${LIST} ${ITEM_TO_FIND} ITEM_FOUND)
|
||||
else(CMAKE26_OR_BETTER OR ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION} GREATER 2.4.7)
|
||||
# For CMake 2.4.x before 2.4.8, we have to do this ourselves (NOTE: This is very slow due to a lack of break() as well), firstly we set that we a temporary boolean
|
||||
set(ITEM_FOUND -1)
|
||||
set(POS 0)
|
||||
# Iterate through the list
|
||||
foreach(ITEM ${${LIST}})
|
||||
# If the item we are looking at is the item we are trying to find, set that we've found the item
|
||||
if(${ITEM} STREQUAL ${ITEM_TO_FIND})
|
||||
set(ITEM_FOUND ${POS})
|
||||
endif(${ITEM} STREQUAL ${ITEM_TO_FIND})
|
||||
math(EXPR POS "${POS} + 1")
|
||||
endforeach(ITEM)
|
||||
endif(CMAKE26_OR_BETTER OR ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION} GREATER 2.4.7)
|
||||
# Set the given FOUND variable to the result
|
||||
set(${FOUND} ${ITEM_FOUND})
|
||||
endmacro(find_in_list)
|
||||
|
||||
# A macro to handle removing duplicates from a list
|
||||
macro(remove_list_duplicates LIST)
|
||||
if(CMAKE26_OR_BETTER)
|
||||
# For CMake 2.6.x or better, this can be done automatically
|
||||
list(REMOVE_DUPLICATES ${LIST})
|
||||
else(CMAKE26_OR_BETTER)
|
||||
# For CMake 2.4.x, we have to do this ourselves, firstly we'll clear a temporary list
|
||||
set(NEW_LIST)
|
||||
# Iterate through the old list
|
||||
foreach(ITEM ${${LIST}})
|
||||
# Check if the item is in the new list
|
||||
find_in_list(NEW_LIST ${ITEM} FOUND_ITEM)
|
||||
if(FOUND_ITEM EQUAL -1)
|
||||
# If the item was not found, append it to the list
|
||||
append_to_list(NEW_LIST ${ITEM})
|
||||
endif(FOUND_ITEM EQUAL -1)
|
||||
endforeach(ITEM)
|
||||
# replace the old list with the new list
|
||||
set(${LIST} ${NEW_LIST})
|
||||
endif(CMAKE26_OR_BETTER)
|
||||
endmacro(remove_list_duplicates)
|
||||
|
||||
# Search for the following programs
|
||||
find_program(GREP grep)
|
||||
find_program(SH sh)
|
||||
find_program(CHGRP chgrp)
|
||||
find_program(CHMOD chmod)
|
||||
find_program(PERL perl)
|
||||
|
||||
# If perl is included on the system and the user wants to use run-cc.pl, change the commands for compiling and linking
|
||||
if(PERL AND USE_RUN_CC_PL)
|
||||
set(CMAKE_CXX_COMPILE_OBJECT "${PERL} ${Anope_SOURCE_DIR}/run-cc.pl -q ${CMAKE_CXX_COMPILE_OBJECT}")
|
||||
set(CMAKE_CXX_LINK_EXECUTABLE "${PERL} ${Anope_SOURCE_DIR}/run-cc.pl -q ${CMAKE_CXX_LINK_EXECUTABLE}")
|
||||
set(CMAKE_CXX_CREATE_SHARED_MODULE "${PERL} ${Anope_SOURCE_DIR}/run-cc.pl -q ${CMAKE_CXX_CREATE_SHARED_MODULE}")
|
||||
endif(PERL AND USE_RUN_CC_PL)
|
||||
|
||||
# If a INSTDIR was passed in to CMake, use it as the install prefix, otherwise set the default install prefix to the services directory under the user's home directory
|
||||
if(INSTDIR)
|
||||
set(CMAKE_INSTALL_PREFIX "${INSTDIR}")
|
||||
else(INSTDIR)
|
||||
set(CMAKE_INSTALL_PREFIX "$ENV{HOME}/services")
|
||||
endif(INSTDIR)
|
||||
|
||||
# Version number processing
|
||||
# Find all lines in version.log that start with VERSION_
|
||||
read_from_file(${Anope_SOURCE_DIR}/version.log "^VERSION_" VERSIONS)
|
||||
# Iterate through the strings found
|
||||
foreach(VERSION_STR ${VERSIONS})
|
||||
# Get the length of the string
|
||||
string(LENGTH ${VERSION_STR} VERSION_LEN)
|
||||
# Subtract 16 from the string's length (8 for VERSION_, 5 more for the type, 2 for the space and leading quote, 1 for the trailing quote)
|
||||
math(EXPR VERSION_NUM_LEN "${VERSION_LEN} - 16")
|
||||
# Extract the type from the string
|
||||
string(SUBSTRING ${VERSION_STR} 8 5 VERSION_TYPE)
|
||||
# Extract the actual value from the string
|
||||
string(SUBSTRING ${VERSION_STR} 15 ${VERSION_NUM_LEN} VERSION)
|
||||
# Set the version type to the value extract from above
|
||||
set(VERSION_${VERSION_TYPE} ${VERSION})
|
||||
endforeach(VERSION_STR ${VERSIONS})
|
||||
|
||||
# Set the version variables based on what was found above
|
||||
set(VERSION_COMMA "${VERSION_MAJOR},${VERSION_MINOR},${VERSION_PATCH},${VERSION_BUILD}")
|
||||
set(VERSION_DOTTED_NOBUILD "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
|
||||
set(VERSION_DOTTED "${VERSION_DOTTED_NOBUILD}.${VERSION_BUILD}")
|
||||
set(VERSION_FULL "${VERSION_DOTTED}${VERSION_EXTRA}")
|
||||
set(VERSION_FULL_NOBUILD "${VERSION_DOTTED_NOBUILD}${VERSION_EXTRA}")
|
||||
|
||||
# Only do the following for Windows
|
||||
if(WIN32)
|
||||
# Generate the win32.rc file using the above variables
|
||||
configure_file(${Anope_SOURCE_DIR}/src/win32.rc.cmake ${Anope_BINARY_DIR}/src/win32.rc)
|
||||
endif(WIN32)
|
||||
|
||||
# Calculate dependencies for each header
|
||||
# I would've done this inside the CMakeLists.txt for the include directory, but since it's added AFTER everything else, it won't help...
|
||||
|
||||
# Firstly, find all the header files
|
||||
file(GLOB_RECURSE ALL_HEADERS "*.h")
|
||||
# Iterate through the headers
|
||||
foreach(HEADER ${ALL_HEADERS})
|
||||
# Don't process the file if it's in an obsolete directory
|
||||
if(NOT HEADER MATCHES ".*obsolete.*")
|
||||
append_to_list(TMP_HEADERS ${HEADER})
|
||||
# In addition, also set up a variable to store the fullpath of the header, in a variable prefixed with just the header's filename for easy access later
|
||||
get_filename_component(HEADER_FILENAME ${HEADER} NAME)
|
||||
set(${HEADER_FILENAME}_FULLPATH ${HEADER})
|
||||
endif(NOT HEADER MATCHES ".*obsolete.*")
|
||||
endforeach(HEADER)
|
||||
# Set the list of headers to be all the non-obsolete ones, then sort the list
|
||||
set(ALL_HEADERS ${TMP_HEADERS})
|
||||
if(CMAKE244_OR_BETTER)
|
||||
list(SORT ALL_HEADERS)
|
||||
endif(CMAKE244_OR_BETTER)
|
||||
|
||||
# This function will take a #include line and extract the filename minus the quotes
|
||||
macro(extract_include_filename INCLUDE FILENAME)
|
||||
# Detect if there is any trailing whitespace (basically see if the last character is a space or a tab)
|
||||
string(LENGTH ${INCLUDE} INCLUDE_LEN)
|
||||
math(EXPR LAST_CHAR_POS "${INCLUDE_LEN} - 1")
|
||||
string(SUBSTRING ${INCLUDE} ${LAST_CHAR_POS} 1 LAST_CHAR)
|
||||
# Only strip if the last character was a space or a tab
|
||||
if(LAST_CHAR STREQUAL " " OR LAST_CHAR STREQUAL "\t")
|
||||
# Strip away trailing whitespace from the line
|
||||
string(REGEX REPLACE "[ \t]*$" "" INCLUDE_STRIPPED ${INCLUDE})
|
||||
else(LAST_CHAR STREQUAL " " OR LAST_CHAR STREQUAL "\t")
|
||||
# Just copy INCLUDE to INCLUDE_STRIPPED so the below code doesn't complain about a lack of INCLUDE_STRIPPED
|
||||
set(INCLUDE_STRIPPED ${INCLUDE})
|
||||
endif(LAST_CHAR STREQUAL " " OR LAST_CHAR STREQUAL "\t")
|
||||
# Find the filename including the quotes, it should be at the end of the line after whitespace was stripped
|
||||
string(REGEX MATCH "\".*\"$" FILE ${INCLUDE_STRIPPED})
|
||||
# Get the length of the filename with quotes
|
||||
string(LENGTH ${FILE} FILENAME_LEN)
|
||||
# Subtract 2 from this length, for the quotes
|
||||
math(EXPR FILENAME_LEN "${FILENAME_LEN} - 2")
|
||||
# Overwrite the filename with a version sans quotes
|
||||
string(SUBSTRING ${FILE} 1 ${FILENAME_LEN} FILE)
|
||||
# Set the filename to the the given variable
|
||||
set(${FILENAME} "${FILE}")
|
||||
endmacro(extract_include_filename)
|
||||
|
||||
# Preparse step 1: get filenames sans paths
|
||||
# Iterate through the headers
|
||||
foreach(HEADER ${ALL_HEADERS})
|
||||
# Find all the lines in the current header that have any form of #include on them, regardless of whitespace
|
||||
read_from_file(${HEADER} "^[ \t]*#[ \t]*include[ \t]*\".*\"[ \t]*$" INCLUDES)
|
||||
# Get the filename only of the header we just checked
|
||||
get_filename_component(HEADER_FILENAME ${HEADER} NAME)
|
||||
# Iterate through the strings containing #include (if any)
|
||||
foreach(INCLUDE ${INCLUDES})
|
||||
# Extract the filename from the #include line
|
||||
extract_include_filename(${INCLUDE} FILENAME)
|
||||
# Append this filename to the list of headers for the header we are checking
|
||||
append_to_list(${HEADER_FILENAME}_HEADERS ${FILENAME})
|
||||
endforeach(INCLUDE)
|
||||
endforeach(HEADER)
|
||||
|
||||
# Preparse step 2: for every header from above that had includes, recursively find the headers each header relies on
|
||||
# Iterate through the headers (again)
|
||||
foreach(HEADER ${ALL_HEADERS})
|
||||
# Get the filename only of the current header
|
||||
get_filename_component(HEADER_FILENAME ${HEADER} NAME)
|
||||
# If there were any include, we'll be checking them
|
||||
if(${HEADER_FILENAME}_HEADERS)
|
||||
# Set the variables, old for all previously found headers, new for all newly found headers
|
||||
set(OLD_HEADERS)
|
||||
set(HEADERS ${${HEADER_FILENAME}_HEADERS})
|
||||
set(NEW_HEADERS)
|
||||
# Loop as long as there are still headers to be parsed
|
||||
while(HEADERS)
|
||||
# Iterate through the list of the current headers
|
||||
foreach(CURR_HEADER ${HEADERS})
|
||||
# If that header has headers it relies on, we'll add them to the list of new headers
|
||||
if(${CURR_HEADER}_HEADERS)
|
||||
foreach(CURR_HEADERS_HEADER ${${CURR_HEADER}_HEADERS})
|
||||
append_to_list(NEW_HEADERS ${CURR_HEADERS_HEADER})
|
||||
endforeach(CURR_HEADERS_HEADER)
|
||||
endif(${CURR_HEADER}_HEADERS)
|
||||
endforeach(CURR_HEADER)
|
||||
# Append the headers we checked to the old headers
|
||||
append_to_list(OLD_HEADERS ${HEADERS})
|
||||
# Set the headers to check to the new headers (it may be empty and that'll exit the loop)
|
||||
set(HEADERS ${NEW_HEADERS})
|
||||
# Erase the new headers
|
||||
set(NEW_HEADERS)
|
||||
endwhile(HEADERS)
|
||||
# OLD_HEADERS will now contain all headers that the current header relies on, remove duplicate headers from the list and sort the list
|
||||
remove_list_duplicates(OLD_HEADERS)
|
||||
if(CMAKE244_OR_BETTER)
|
||||
list(SORT OLD_HEADERS)
|
||||
endif(CMAKE244_OR_BETTER)
|
||||
# Set the current header's list of headers to the cleaned up list from above
|
||||
set(${HEADER_FILENAME}_HEADERS ${OLD_HEADERS})
|
||||
endif(${HEADER_FILENAME}_HEADERS)
|
||||
endforeach(HEADER)
|
||||
|
||||
# The following headers are generated from CMake rules and won't be found with the above
|
||||
append_to_list(ALL_HEADERS ${Anope_BINARY_DIR}/lang/language.h ${Anope_BINARY_DIR}/include/sysconf.h ${Anope_BINARY_DIR}/include/version.h)
|
||||
set(language.h_FULLPATH ${Anope_BINARY_DIR}/lang/language.h)
|
||||
set(sysconf.h_FULLPATH ${Anope_BINARY_DIR}/include/sysconf.h)
|
||||
set(version.h_FULLPATH ${Anope_BINARY_DIR}/include/version.h)
|
||||
|
||||
# This function is used in most of the src (sub)directories to calculate the header file dependencies for the given source file
|
||||
macro(calculate_depends SRC)
|
||||
# Find all the lines in the given source file that have any form of #include on them, regardless of whitespace
|
||||
read_from_file(${SRC} "^[ \t]*#[ \t]*include[ \t]*\".*\"[ \t]*$" INCLUDES)
|
||||
# Reset the list of headers to empty
|
||||
set(HEADERS)
|
||||
# Iterate through the strings containing #include (if any)
|
||||
foreach(INCLUDE ${INCLUDES})
|
||||
# Extract the filename from the #include line
|
||||
extract_include_filename(${INCLUDE} FILENAME)
|
||||
# Append the filename to the list of headers
|
||||
append_to_list(HEADERS ${FILENAME})
|
||||
endforeach(INCLUDE)
|
||||
# Set the list of new headers to empty (this will store all the headers that the above list depends on)
|
||||
set(NEW_HEADERS)
|
||||
# Iterate through the list of headers
|
||||
foreach(HEADER ${HEADERS})
|
||||
# If the current header has it's own headers to depend on, append those to the list of new headers
|
||||
if(${HEADER}_HEADERS)
|
||||
append_to_list(NEW_HEADERS ${${HEADER}_HEADERS})
|
||||
endif(${HEADER}_HEADERS)
|
||||
endforeach(HEADER)
|
||||
# If there were new headers, append them to the list of headers
|
||||
if(NEW_HEADERS)
|
||||
append_to_list(HEADERS ${NEW_HEADERS})
|
||||
endif(NEW_HEADERS)
|
||||
# If after all the above there is a list of header, we'll process them, converting them to full paths
|
||||
if(HEADERS)
|
||||
# Remove duplicate headers from the list and sort the list
|
||||
remove_list_duplicates(HEADERS)
|
||||
if(CMAKE244_OR_BETTER)
|
||||
list(SORT HEADERS)
|
||||
endif(CMAKE244_OR_BETTER)
|
||||
# Set the list of full path headers to empty
|
||||
set(HEADERS_FULL)
|
||||
# Iterate through the list of headers
|
||||
foreach(HEADER ${HEADERS})
|
||||
# Append the full path of the header to the full path headers list
|
||||
append_to_list(HEADERS_FULL ${${HEADER}_FULLPATH})
|
||||
endforeach(HEADER)
|
||||
# Set the given source file to depend on the headers given
|
||||
set_source_files_properties(${SRC} PROPERTIES OBJECT_DEPENDS "${HEADERS_FULL}")
|
||||
endif(HEADERS)
|
||||
endmacro(calculate_depends)
|
||||
|
||||
# A macro to update the environment variable CPACK_IGNORED_FILES which contains a list of files for CPack to ignore
|
||||
macro(add_to_cpack_ignored_files ITEM)
|
||||
# Temporary copy of the orignal item
|
||||
set(REAL_ITEM "${ITEM}")
|
||||
# If we have 2+ arguments, assume that the second one was something like TRUE (doesn't matter really) and convert periods so they will be \\. for CPack
|
||||
if(${ARGC} GREATER 1)
|
||||
string(REPLACE "." "\\\\." REAL_ITEM ${REAL_ITEM})
|
||||
endif(${ARGC} GREATER 1)
|
||||
# If the environment variable is already defined, just tack the item to the end
|
||||
if(DEFINED ENV{CPACK_IGNORED_FILES})
|
||||
set(ENV{CPACK_IGNORED_FILES} "$ENV{CPACK_IGNORED_FILES};${REAL_ITEM}")
|
||||
# Otherwise set the environment variable to the item
|
||||
else(DEFINED ENV{CPACK_IGNORED_FILES})
|
||||
set(ENV{CPACK_IGNORED_FILES} "${REAL_ITEM}")
|
||||
endif(DEFINED ENV{CPACK_IGNORED_FILES})
|
||||
endmacro(add_to_cpack_ignored_files)
|
||||
|
||||
# Add the initial files to ignore which will be ignored regardless of if you are building in-source or out-of-source
|
||||
add_to_cpack_ignored_files(".git\;config.cache\;.svn\;CMakeFiles\;sysconf.h$\;Makefile.inc$\;config.log\;config.status" TRUE)
|
||||
# Add the files we don't want the periods converted for
|
||||
add_to_cpack_ignored_files(".\\\\\\\\.so$;.\\\\\\\\.o$;.\\\\\\\\.s$;${Anope_SOURCE_DIR}/Makefile$")
|
||||
# If the two directories are the same, we are building in-source, thus we need to ignore more files from the build
|
||||
if(${Anope_SOURCE_DIR} STREQUAL ${Anope_BINARY_DIR})
|
||||
# Add the files that need their periods converted
|
||||
add_to_cpack_ignored_files("Makefile\;cmake_install.cmake\;sysconf.h$\;CMakeCache.txt\;install_manifest.txt" TRUE)
|
||||
# Add the files we don't want the periods converted for
|
||||
add_to_cpack_ignored_files(".\\\\\\\\.so$;CPack.;anope-${VERSION_FULL_NOBUILD}-source\\\\\\\\..")
|
||||
# If using Visual Studio, add these files as well
|
||||
if(MSVC)
|
||||
add_to_cpack_ignored_files(".vcproj$\;.sln$\;.ncb$\;.suo$\;.dir$\;.ilk$\;.exp$\;.pdb$\;.lib$\;/debug$;/release$;/relwithdebinfo$;/minsizerel$" TRUE)
|
||||
endif(MSVC)
|
||||
endif(${Anope_SOURCE_DIR} STREQUAL ${Anope_BINARY_DIR})
|
||||
|
||||
# Go into the following directories and run their CMakeLists.txt as well
|
||||
add_subdirectory(data)
|
||||
add_subdirectory(docs)
|
||||
add_subdirectory(lang)
|
||||
add_subdirectory(src)
|
||||
add_subdirectory(include)
|
||||
|
||||
# Get the filename of the Anope binary, to use later
|
||||
get_target_property(SERVICES_BINARY ${PROGRAM_NAME} LOCATION)
|
||||
get_filename_component(SERVICES_BINARY ${SERVICES_BINARY} NAME)
|
||||
|
||||
# At install time, create the following additional directories
|
||||
install(CODE "file(MAKE_DIRECTORY \"\${CMAKE_INSTALL_PREFIX}/data/backups\")")
|
||||
install(CODE "file(MAKE_DIRECTORY \"\${CMAKE_INSTALL_PREFIX}/data/logs\")")
|
||||
install(CODE "file(MAKE_DIRECTORY \"\${CMAKE_INSTALL_PREFIX}/data/modules/runtime\")")
|
||||
# On non-Windows platforms, if RUNGROUP is set, change the permissions of the below directories, as well as the group of the data directory
|
||||
if(NOT WIN32 AND RUNGROUP)
|
||||
install(CODE "execute_process(COMMAND ${CHMOD} 2775 \"\${CMAKE_INSTALL_PREFIX}/data/backups\")")
|
||||
install(CODE "execute_process(COMMAND ${CHMOD} 2775 \"\${CMAKE_INSTALL_PREFIX}/data/logs\")")
|
||||
install(CODE "execute_process(COMMAND ${CHMOD} 2775 \"\${CMAKE_INSTALL_PREFIX}/data/modules/runtime\")")
|
||||
install(CODE "execute_process(COMMAND ${CHGRP} -R ${RUNGROUP} \"\${CMAKE_INSTALL_PREFIX}\")")
|
||||
endif(NOT WIN32 AND RUNGROUP)
|
||||
# On Windows platforms, install extra files
|
||||
if(WIN32)
|
||||
install(FILES ${Anope_SOURCE_DIR}/anope.bat
|
||||
DESTINATION bin
|
||||
)
|
||||
install(FILES ${Anope_SOURCE_DIR}/Changes ${Anope_SOURCE_DIR}/Changes.conf ${Anope_SOURCE_DIR}/Changes.lang
|
||||
DESTINATION .
|
||||
)
|
||||
endif(WIN32)
|
||||
|
||||
# Only process the CPack section if we have CPack
|
||||
if(EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake")
|
||||
# Override the module include path to include our directory, as we are using our own version of the NSIS template
|
||||
set(CMAKE_MODULE_PATH ${Anope_SOURCE_DIR})
|
||||
# Various options for CPack
|
||||
set(CPACK_PACKAGE_NAME "Anope IRC Services")
|
||||
set(CPACK_PACKAGE_VENDOR "Anope Team")
|
||||
set(CPACK_PACKAGE_VERSION_MAJOR ${VERSION_MAJOR})
|
||||
set(CPACK_PACKAGE_VERSION_MINOR ${VERSION_MINOR})
|
||||
set(CPACK_PACKAGE_VERSION_PATCH "${VERSION_PATCH}${VERSION_EXTRA}")
|
||||
set(CPACK_PACKAGE_FILE_NAME "anope-${VERSION_FULL_NOBUILD}")
|
||||
set(CPACK_RESOURCE_FILE_LICENSE "${Anope_SOURCE_DIR}/docs/COPYING")
|
||||
# The following doesn't actually do anything. :(
|
||||
#set(CPACK_RESOURCE_FILE_README "${Anope_SOURCE_DIR}/docs/README")
|
||||
# The following is primarily for NSIS
|
||||
if(WIN32)
|
||||
# Also for Windows, include installing the MSVCRT library
|
||||
include(InstallRequiredSystemLibraries)
|
||||
set(CPACK_GENERATOR "NSIS")
|
||||
set(CPACK_PACKAGE_INSTALL_DIRECTORY "Anope")
|
||||
set(CPACK_PACKAGE_EXECUTABLES "")
|
||||
set(CPACK_NSIS_MENU_LINKS
|
||||
"bin\\\\${SERVICES_BINARY}" "Anope IRC Services"
|
||||
"bin\\\\anope.bat\\\" \\\"-debug -nofork" "Anope IRC Services (Debug and Window Logging)"
|
||||
"bin\\\\anope.bat\\\" \\\"-nofork" "Anope IRC Services (Window Logging)"
|
||||
"bin\\\\anope.bat\\\" \\\"-nothird" "Anope IRC Services (No Third Party Modules)"
|
||||
"http://www.anope.org" "Anope Web Site"
|
||||
)
|
||||
# The following doesn't work, but a bug report has been filed about it
|
||||
#set(CPACK_CREATE_DESKTOP_LINK_${SERVICES_BINARY} TRUE)
|
||||
set(CPACK_NSIS_MUI_ICON "${Anope_SOURCE_DIR}/src\\\\anope-icon.ico")
|
||||
set(CPACK_NSIS_MUI_UNIICON "${Anope_SOURCE_DIR}/src\\\\anope-icon.ico")
|
||||
set(CPACK_NSIS_INSTALLED_ICON_NAME "${SERVICES_BINARY}")
|
||||
set(CPACK_NSIS_URL_INFO_ABOUT "http://www.anope.org")
|
||||
set(CPACK_NSIS_COMPRESSOR "/SOLID lzma")
|
||||
endif(WIN32)
|
||||
set(CPACK_SOURCE_PACKAGE_FILE_NAME "anope-${VERSION_FULL_NOBUILD}-source")
|
||||
set(CPACK_SOURCE_IGNORE_FILES "$ENV{CPACK_IGNORED_FILES}")
|
||||
set(CPACK_MONOLITHIC_INSTALL TRUE)
|
||||
include(CPack)
|
||||
endif(EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake")
|
||||
@@ -1,170 +0,0 @@
|
||||
Orginally pulled from: http://www.inspircd.org/wiki/Coding_Guidelines
|
||||
Yes, I'm aware the formatting of this document is ugly. It'll be fixed when someone cares. Read the wiki page if you want pretty for now.
|
||||
|
||||
---
|
||||
|
||||
|
||||
InspIRCd Coding Guidelines
|
||||
|
||||
The following are a set of guidelines for writing patches to InspIRCd, or for creating modules for distribution with the official package. These
|
||||
guidelines were written a time after InspIRCd development started, and so not all code yet follows these. This will be rectified with time.
|
||||
|
||||
|
||||
1. Comments
|
||||
Multi Line
|
||||
Multiple line comments should follow the C-style comment, for example:
|
||||
/*
|
||||
* This is a multiple line comment, huzzah..
|
||||
*/
|
||||
|
||||
Single Line
|
||||
Single line comments should also be in the C style, for example:
|
||||
/* This is a boring one-line comment */
|
||||
|
||||
Doxygen commenting
|
||||
If you wish your comment to show in doxygen, the comment should be directly above the item you are documenting (a class, function, enum, etc)
|
||||
and the first line should be "/**". For example:
|
||||
/** This is a doxygen multiline comment.
|
||||
* Description of thingymebob here.
|
||||
*/
|
||||
The first line after the "**" is used as the short description of the item (up to the full stop) and everything afterwards as the detailed
|
||||
description.
|
||||
|
||||
Indentation
|
||||
Tabs. Tabs. ONLY TABS. Use a single tab for each level of indentation, for example:
|
||||
int main()
|
||||
{
|
||||
<tab>if (condition)
|
||||
<tab>{
|
||||
<tab><tab>code
|
||||
<tab>}
|
||||
}
|
||||
|
||||
|
||||
Separation
|
||||
Always put a space in between a keyword like if/while and the condition, for example:
|
||||
if (foo == bar)
|
||||
NOT
|
||||
if(foo == bar)
|
||||
|
||||
Braces
|
||||
Always put braces opening and closing blocks on separate lines, see the identation example. For example, place braces like this:
|
||||
if (apples == "green")
|
||||
{
|
||||
cout << "Apples are green" << endl;
|
||||
}
|
||||
|
||||
and not:
|
||||
if (apples == "green") {
|
||||
cout << "Apples are green" << endl;
|
||||
}
|
||||
The one exception to this is if you are declaring a class method which is only one line long, in that case the following is acceptable in most cases:
|
||||
class foo : public bar
|
||||
{
|
||||
foo() { }
|
||||
getrandomfoo() { return rand(); }
|
||||
};
|
||||
|
||||
Templates
|
||||
Where possible, use templates rather than #defines. Avoid use of RTTI.
|
||||
Structs
|
||||
Structs should be declared in the following fashion:
|
||||
struct BodyPartBasket
|
||||
{
|
||||
int arms;
|
||||
int legs;
|
||||
int scrotalsacs;
|
||||
};
|
||||
and not like this:
|
||||
typedef struct
|
||||
{
|
||||
int arms;
|
||||
int legs;
|
||||
int scrotalsacs;
|
||||
} BodyPartBasket;
|
||||
The second way is not required in C++ to be able to do this:
|
||||
BodyPartBasket mybasket;
|
||||
Plus, placing the name at the bottom of the declaration makes readability more difficult (as you have to scroll down to the bottom of the
|
||||
struct to find its name).
|
||||
(where possible, call them classes rather than structs.)
|
||||
|
||||
Variable naming
|
||||
Class and struct names should be in camel case with a leading capital letter, for example "MyBagOfBones" and not "my_bag_of_bones" or
|
||||
"mybagofbones". Variable names can be in either camel case with a leading capital letter or alternatively all lower case, so long as the same
|
||||
naming convention is adhered to throughout the class. No classes or variables should be named in capitals unless this makes sense for the
|
||||
name (for example "class DNS"). Constants and enum values should always be completely in CAPITALS and underscores may be used, for example:
|
||||
enum DecayState
|
||||
{
|
||||
DECAYED_MOULDY = 0,
|
||||
DECAYED_SMELLY = 1,
|
||||
DECAYED_MAGGOTS = 2
|
||||
};
|
||||
All value names in an enum should be started with the same text which should be related in some way to the enum's use. For example "DNS_CNAME,
|
||||
DNS_A, DNS_AAAA".
|
||||
|
||||
Use of references
|
||||
Wherever possible, when dealing with any complex class, pass a const reference rather than a copy of the class. For example:
|
||||
MyThingy::MyThingy(const std::string &thingyvalue)
|
||||
{
|
||||
}
|
||||
Of course, if you intended to change the string you can just omit the 'const'.
|
||||
|
||||
Use of char pointers
|
||||
Whenever you use char pointers (char*, char**) try to use const equivalents. This is much safer and avoids ugly and dangerous casts. For example:
|
||||
MyThingy::Thingify(const char* const* wotsits)
|
||||
{
|
||||
}
|
||||
If it is possible without performance loss, consider avoiding char pointers altogether and using std::string instead.
|
||||
|
||||
Use of STL
|
||||
For more information on use of STL in InspIRCd, please see the separate STL FAQ.
|
||||
|
||||
Making copies of data
|
||||
Never ever make a copy of a piece of data unless it is absolutely necessary. For example, don't use strlcpy() to make a copy of the const char* string
|
||||
returned by std::string::c_str(), if the change can be done to the std::string itself. The same goes for unnecessary variable assignments, especially
|
||||
those which assign large classes.
|
||||
|
||||
namespace std
|
||||
Avoid the following:
|
||||
using namespace std;
|
||||
It might take a bit more typing, but things work better if you don't set (then later assume) the namespace -- specify it explicitly when you want to
|
||||
use it.
|
||||
|
||||
Linefeeds
|
||||
Unix linefeeds only please. We do not like to see our screens covered in ^M. :-)
|
||||
|
||||
Portability
|
||||
Always make sure your code is portable to all supported operating systems, remember of course that as of 1.1.8 this includes windows. Don't write code
|
||||
that only works on windows, or only works on Linux. Test your code on all platforms or ask for help from other developers who have the platforms you
|
||||
want to test on.
|
||||
|
||||
new() and delete(), malloc() and free()
|
||||
Apart from the fact that using malloc() and free() is bad practice in C++ code, you must never use malloc() or free() in InspIRCd, within its modules
|
||||
or within the core. This is because if you use malloc() or free() in windows, the memory is claimed from the program's local heap. In windows, each
|
||||
shared object (module, dll) has its own heap, which is protected from other dlls and executables. To get around this issue and allow more posix-like
|
||||
memory access from other dlls in the program (other modules), InspIRCd overrides the operators new and delete to ensure that memory allocated by them
|
||||
comes from the windows global heap. If you use malloc() and free() for this, the ircd will segfault when another module tries to access the memory you
|
||||
have allocated!
|
||||
|
||||
strdup()
|
||||
As with malloc(), above, strdup() should be avoided. Where strdup() is absolutely necessary, use strnewdup() which is our strdup() implementation that
|
||||
calls operator new instead of using malloc(). char arrays allocated by strnewdup() should be deleted with operator delete[].
|
||||
|
||||
CoreExport and DllImport
|
||||
Prefix all types you want to import or export to other modules with CoreExport and DllImport macros. These do nothing in POSIX operating systems,
|
||||
however in windows these are expanded to the instructions __declspec(dllimport) and __declspec(dllexport) respectively depending on where they are
|
||||
used and how.
|
||||
|
||||
External Dependencies
|
||||
If a module is compiled as standard, or the code is part of the core, you must not use any dependencies that are not available as standard on all
|
||||
supported operating systems beyond libstdc++, libc, and whatever else is currently required to build the core. Modules which use nonstandard
|
||||
dependencies belong in the modules/extra directory.
|
||||
|
||||
Profiling and Performance
|
||||
It is one thing to assume that code performs bad, it is another thing to prove that it actually is. A lot of experienced programmers talk about
|
||||
'premature optimisation', and here is what it means: if you have a piece of code called once on startup that takes 10 seconds instead of one second to
|
||||
run, and a piece of code that takes 0.05 seconds to run when it should take 0.01, and it is called once per second, the second piece of code is the
|
||||
priority.
|
||||
In other words, make sure that what you think is slow, and a performance problem in Insp actually is.
|
||||
To do this, use the callgrind tool from Valgrind (valgrind --tool=cachegrind bin/inspircd -nofork -debug), and kcachegrind (or similar) to view the
|
||||
output files.
|
||||
+135
@@ -1,3 +1,138 @@
|
||||
Anope Version 1.8.9
|
||||
-------------------
|
||||
** ADDED CONFIGURATION DIRECTIVES **
|
||||
|
||||
** MODIFIED CONFIGURATION DIRECTIVES **
|
||||
|
||||
** DELETED CONFIGURATION DIRECTIVES **
|
||||
|
||||
Anope Version 1.8.8
|
||||
-------------------
|
||||
** ADDED CONFIGURATION DIRECTIVES **
|
||||
|
||||
** MODIFIED CONFIGURATION DIRECTIVES **
|
||||
|
||||
** DELETED CONFIGURATION DIRECTIVES **
|
||||
|
||||
|
||||
Anope Version 1.8.7
|
||||
-------------------
|
||||
** ADDED CONFIGURATION DIRECTIVES **
|
||||
|
||||
** MODIFIED CONFIGURATION DIRECTIVES **
|
||||
|
||||
** DELETED CONFIGURATION DIRECTIVES **
|
||||
|
||||
|
||||
Anope Version 1.8.6
|
||||
-------------------
|
||||
** ADDED CONFIGURATION DIRECTIVES **
|
||||
|
||||
** MODIFIED CONFIGURATION DIRECTIVES **
|
||||
|
||||
** DELETED CONFIGURATION DIRECTIVES **
|
||||
|
||||
|
||||
Anope Version 1.8.5
|
||||
-------------------
|
||||
** ADDED CONFIGURATION DIRECTIVES **
|
||||
|
||||
# ForkForMail [OPTIONAL]
|
||||
#
|
||||
# When enabled, services will fork when sending mail, which means there is no
|
||||
# services lag from mail. This is only supported on operating systems that allow
|
||||
# the use of forking (eg, not Windows).
|
||||
#
|
||||
|
||||
#ForkForMail
|
||||
|
||||
inspircd20 - IRCDModule
|
||||
|
||||
** MODIFIED CONFIGURATION DIRECTIVES **
|
||||
|
||||
# DefSessionLimit <limit> [REQUIRED]
|
||||
# Default session limit per host. Once a host reaches it's session limit,
|
||||
# all clients attempting to connect from that host will be killed.
|
||||
|
||||
DefSessionLimit 3
|
||||
|
||||
** DELETED CONFIGURATION DIRECTIVES **
|
||||
|
||||
|
||||
Anope Version 1.8.4
|
||||
-------------------
|
||||
** ADDED CONFIGURATION DIRECTIVES **
|
||||
|
||||
** MODIFIED CONFIGURATION DIRECTIVES **
|
||||
|
||||
** DELETED CONFIGURATION DIRECTIVES **
|
||||
|
||||
|
||||
Anope Version 1.8.3
|
||||
-------------------
|
||||
** ADDED CONFIGURATION DIRECTIVES **
|
||||
inspircd12 - IRCDModule
|
||||
** MODIFIED CONFIGURATION DIRECTIVES **
|
||||
|
||||
** DELETED CONFIGURATION DIRECTIVES **
|
||||
|
||||
Anope Version 1.8.2
|
||||
-------------------
|
||||
** ADDED CONFIGURATION DIRECTIVES **
|
||||
|
||||
** MODIFIED CONFIGURATION DIRECTIVES **
|
||||
|
||||
** DELETED CONFIGURATION DIRECTIVES **
|
||||
|
||||
Anope Version 1.8.1
|
||||
-------------------
|
||||
** ADDED CONFIGURATION DIRECTIVES **
|
||||
|
||||
** MODIFIED CONFIGURATION DIRECTIVES **
|
||||
# IRCDModule <module_name> [REQUIRED]
|
||||
# The ircd protocol module should be used when connecting anope to your
|
||||
# chosen IRCD. This should be one of the following options, or a file
|
||||
# provided by your IRCD author.
|
||||
#
|
||||
# Bahamut 1.4.27 [or later] - "bahamut"
|
||||
# Charybdis 1.0 [or later] - "charybdis"
|
||||
# DreamForge 4.6.7 - "dreamforge"
|
||||
# Hybrid IRCd 7.0 [experimental] - "hybrid"
|
||||
# InspIRCd 1.1 [beta 8 or later] - "inspircd11"
|
||||
# Plexus 3.0 [or later] - "plexus3"
|
||||
# Plexus 2.0 [or later] - "plexus2"
|
||||
# PTLink 6.15.0 [experimental] - "ptlink"
|
||||
# RageIRCd 2.0.x - "rageircd"
|
||||
# Ratbox 2.0.6 [or later] - "ratbox"
|
||||
# ShadowIRCD 4.0x [beta 7 or later] - "shadowircd"
|
||||
# Solid IRCD 3.4.x [3.4.6 or later] - "solidircd"
|
||||
# UltimateIRCd 3.0.0 [or later] - "ultimate3"
|
||||
# UltimateIRCd 2.8.2 [or later] - "ultimate2"
|
||||
# Unreal 3.2 [beta-19 or later] - "unreal32"
|
||||
# Unreal 3.1.1 [or later] - "unreal31"
|
||||
# ViagraIRCd 1.3.x [or later] - "viagra"
|
||||
#
|
||||
|
||||
#IRCDModule "unreal32"
|
||||
|
||||
|
||||
# SuperAdmin [OPTIONAL]
|
||||
# When enabled, Services Roots will be able to use SuperAdmin [ON|OFF]
|
||||
# which will temporarily grant them extra privileges, such as being a
|
||||
# founder of _all_ channels, ability to adjust another users modes etc..
|
||||
|
||||
#SuperAdmin
|
||||
|
||||
|
||||
# UnRestrictSAdmin [OPTIONAL]
|
||||
# On many ircd Anope removes the umode of +a from users whom are not
|
||||
# Service Admin in Anope. This mode is NOT used by Anope for any form
|
||||
# of access. Thus this option allows them to keep the mode without having
|
||||
# to be a Service Admin in Anope
|
||||
#UnRestrictSAdmin
|
||||
|
||||
** DELETED CONFIGURATION DIRECTIVES **
|
||||
|
||||
Anope Version 1.8.0
|
||||
-------------------
|
||||
** ADDED CONFIGURATION DIRECTIVES **
|
||||
|
||||
@@ -1,3 +1,85 @@
|
||||
Anope Version 1.8.9
|
||||
-------------------
|
||||
*** New Strings:
|
||||
|
||||
*** Mod Strings:
|
||||
|
||||
*** Del Strings:
|
||||
|
||||
|
||||
Anope Version 1.8.8
|
||||
-------------------
|
||||
*** New Strings:
|
||||
|
||||
*** Mod Strings:
|
||||
|
||||
*** Del Strings:
|
||||
|
||||
|
||||
Anope Version 1.8.7
|
||||
-------------------
|
||||
*** New Strings:
|
||||
|
||||
*** Mod Strings:
|
||||
|
||||
*** Del Strings:
|
||||
|
||||
|
||||
Anope Version 1.8.6
|
||||
-------------------
|
||||
*** New Strings:
|
||||
|
||||
*** Mod Strings:
|
||||
|
||||
*** Del Strings:
|
||||
|
||||
|
||||
Anope Version 1.8.5
|
||||
-------------------
|
||||
*** New Strings:
|
||||
|
||||
*** Mod Strings:
|
||||
|
||||
*** Del Strings:
|
||||
|
||||
|
||||
Anope Version 1.8.4
|
||||
-------------------
|
||||
*** New Strings:
|
||||
|
||||
*** Mod Strings:
|
||||
NICK_HELP_LIST
|
||||
|
||||
*** Del Strings:
|
||||
|
||||
|
||||
Anope Version 1.8.3
|
||||
-------------------
|
||||
*** New Strings:
|
||||
|
||||
*** Mod Strings:
|
||||
NEWS_HELP_LOGON
|
||||
NEWS_HELP_OPER
|
||||
NEWS_HELP_RANDOM
|
||||
|
||||
*** Del Strings:
|
||||
|
||||
Anope Version 1.8.2
|
||||
-------------------
|
||||
*** New Strings:
|
||||
|
||||
*** Mod Strings:
|
||||
|
||||
*** Del Strings:
|
||||
|
||||
Anope Version 1.8.1
|
||||
-------------------
|
||||
*** New Strings:
|
||||
HOST_OFF
|
||||
*** Mod Strings:
|
||||
|
||||
*** Del Strings:
|
||||
|
||||
Anope Version 1.8.0
|
||||
-------------------
|
||||
*** New Strings:
|
||||
|
||||
+37
-1
@@ -1,7 +1,43 @@
|
||||
Anope Version 1.8.0
|
||||
Anope Version 1.8.9
|
||||
-------------------
|
||||
- NONE
|
||||
|
||||
Anope Version 1.8.8
|
||||
-------------------
|
||||
- NONE
|
||||
|
||||
Anope Version 1.8.7
|
||||
-------------------
|
||||
- NONE
|
||||
|
||||
Anope Version 1.8.6
|
||||
-------------------
|
||||
- NONE
|
||||
|
||||
Anope Version 1.8.5
|
||||
-------------------
|
||||
- NONE
|
||||
|
||||
Anope Version 1.8.4
|
||||
-------------------
|
||||
- NONE
|
||||
|
||||
Anope Version 1.8.3
|
||||
-------------------
|
||||
ALTER TABLE `anope_ns_access` DROP INDEX `display` ;
|
||||
|
||||
Anope Version 1.8.2
|
||||
-------------------
|
||||
- NONE
|
||||
|
||||
Anope Version 1.8.1
|
||||
-------------------
|
||||
- NONE
|
||||
|
||||
Anope Version 1.8.0
|
||||
-------------------
|
||||
ALTER TABLE `anope_ns_access` DROP INDEX display;
|
||||
|
||||
Anope Version 1.7.24
|
||||
--------------------
|
||||
- NONE
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#
|
||||
# Configuration script for Services.
|
||||
#
|
||||
# Anope (c) 2003-2008 Anope team
|
||||
# Anope (c) 2003-2014 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# This program is free but copyrighted software; see the file COPYING for
|
||||
@@ -14,133 +14,73 @@
|
||||
###########################################################################
|
||||
|
||||
echo2 () {
|
||||
$ECHO2 "$*$ECHO2SUF" # these are defined later
|
||||
$ECHO2 "$*$ECHO2SUF" # these are defined later
|
||||
}
|
||||
|
||||
exists () { # because some shells don't have test -e
|
||||
if [ -f $1 -o -d $1 -o -p $1 -o -c $1 -o -b $1 ] ; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
exists () { # because some shells don't have test -e
|
||||
if [ -f $1 -o -d $1 -o -p $1 -o -c $1 -o -b $1 ] ; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
Load_Cache () {
|
||||
if [ -f $SOURCE_DIR/config.cache -a -r $SOURCE_DIR/config.cache -a ! "$IGNORE_CACHE" ] ; then
|
||||
echo "Using defaults from config.cache. To ignore, $SOURCE_DIR/Config -nocache"
|
||||
echo ""
|
||||
. $SOURCE_DIR/config.cache
|
||||
CAN_QUICK="yes"
|
||||
else
|
||||
CAN_QUICK="no"
|
||||
fi
|
||||
if [ -f config.cache -a -r config.cache -a ! "$IGNORE_CACHE" ] ; then
|
||||
echo "Using defaults from config.cache. To ignore, ./Config -nocache"
|
||||
echo ""
|
||||
. ./config.cache
|
||||
CAN_QUICK="yes"
|
||||
else
|
||||
CAN_QUICK="no"
|
||||
fi
|
||||
}
|
||||
|
||||
Run_Build_System () {
|
||||
WITH_INST=""
|
||||
WITH_RUN=""
|
||||
WITH_PERM=""
|
||||
BUILD_TYPE=""
|
||||
RUN_CC_PL=""
|
||||
GEN_TYPE=""
|
||||
Run_Configure () {
|
||||
WITH_BIN=""
|
||||
WITH_DATA=""
|
||||
WITH_ENC=""
|
||||
WITH_RUN=""
|
||||
WITH_PERM=""
|
||||
WITH_MYSQL=""
|
||||
|
||||
if [ "$INSTDIR" != "" ] ; then
|
||||
if [ "$BUILD_SYSTEM" = "cmake" ] ; then
|
||||
WITH_INST="-DINSTDIR:STRING=$INSTDIR"
|
||||
else
|
||||
WITH_INST="--with-instdir=$INSTDIR"
|
||||
fi
|
||||
fi
|
||||
if [ "$BINDEST" != "" ] ; then
|
||||
WITH_BIN=" --with-bindir=$BINDEST"
|
||||
WITH_DATA=" --with-datadir=$DATDEST"
|
||||
fi
|
||||
|
||||
if [ "$RUNGROUP" != "" ] ; then
|
||||
if [ "$BUILD_SYSTEM" = "cmake" ] ; then
|
||||
WITH_RUN="-DRUNGROUP:STRING=$RUNGROUP"
|
||||
else
|
||||
WITH_RUN="--with-rungroup=$RUNGROUP"
|
||||
fi
|
||||
fi
|
||||
if [ "$DATDEST" != "" ] ; then
|
||||
WITH_DATA=" --with-datadir=$DATDEST"
|
||||
fi
|
||||
|
||||
if [ "$UMASK" != "" ] ; then
|
||||
if [ "$BUILD_SYSTEM" = "cmake" ] ; then
|
||||
WITH_PERM="-DDEFUMASK:STRING=$UMASK"
|
||||
else
|
||||
WITH_PERM="--with-permissions=$UMASK"
|
||||
fi
|
||||
fi
|
||||
if [ "$RUNGROUP" != "" ] ; then
|
||||
WITH_RUN=" --with-rungroup=$RUNGROUP"
|
||||
fi
|
||||
|
||||
if [ "$DEBUG" = "yes" ] ; then
|
||||
if [ "$BUILD_SYSTEM" = "cmake" ] ; then
|
||||
BUILD_TYPE="-DCMAKE_BUILD_TYPE:STRING=DEBUG"
|
||||
else
|
||||
BUILD_TYPE="--with-debugsym"
|
||||
fi
|
||||
else
|
||||
if [ "$BUILD_SYSTEM" = "cmake" ] ; then
|
||||
BUILD_TYPE="-DCMAKE_BUILD_TYPE:STRING=RELEASE"
|
||||
fi
|
||||
fi
|
||||
if [ "$UMASK" != "" ] ; then
|
||||
WITH_PERM=" --with-permissions=$UMASK"
|
||||
fi
|
||||
|
||||
if [ "$USE_RUN_CC_PL" = "yes" ] ; then
|
||||
if [ "$BUILD_SYSTEM" = "cmake" ] ; then
|
||||
RUN_CC_PL="-DUSE_RUN_CC_PL:BOOLEAN=ON"
|
||||
else
|
||||
pwdsave=`pwd`
|
||||
cd "`dirname $SOURCE_DIR/run-cc.pl`"
|
||||
RUN_CC_PL="--with-makebin=`pwd`/run-cc.pl"
|
||||
cd "$pwdsave"
|
||||
fi
|
||||
else
|
||||
if [ "$BUILD_SYSTEM" = "cmake" ] ; then
|
||||
RUN_CC_PL="-DUSE_RUN_CC_PL:BOOLEAN=OFF"
|
||||
else
|
||||
RUN_CC_PL="--with-makebin="
|
||||
fi
|
||||
fi
|
||||
if [ "$MYSQL" != "yes" ] ; then
|
||||
WITH_MYSQL=" --without-mysql"
|
||||
fi
|
||||
|
||||
if [ "$BUILD_SYSTEM" = "cmake" ] ; then
|
||||
case `uname -s` in
|
||||
MINGW*)
|
||||
GEN_TYPE="-G\"MSYS Makefiles\""
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ "$SOURCE_DIR" = "." ] ; then
|
||||
pwdsave=`pwd`
|
||||
test -d build || mkdir build
|
||||
cd "build"
|
||||
REAL_SOURCE_DIR=".."
|
||||
else
|
||||
REAL_SOURCE_DIR="$SOURCE_DIR"
|
||||
fi
|
||||
echo "./configure $WITH_BIN $WITH_DATA $WITH_ENC $WITH_RUN $WITH_PERM $WITH_MYSQL"
|
||||
|
||||
echo "cmake $GEN_TYPE $WITH_INST $WITH_RUN $WITH_PERM $BUILD_TYPE $RUN_CC_PL $REAL_SOURCE_DIR"
|
||||
|
||||
cmake $GEN_TYPE $WITH_INST $WITH_RUN $WITH_PERM $BUILD_TYPE $RUN_CC_PL $REAL_SOURCE_DIR
|
||||
|
||||
echo ""
|
||||
if [ "$SOURCE_DIR" = "." ] ; then
|
||||
echo "Now cd build, then run make to build Anope."
|
||||
cd "$pwdsave"
|
||||
else
|
||||
echo "Now run make to build Anope."
|
||||
fi
|
||||
else
|
||||
echo "./configure $WITH_INST $WITH_RUN $WITH_PERM $BUILD_TYPE $RUN_CC_PL"
|
||||
|
||||
./configure $WITH_INST $WITH_RUN $WITH_PERM $BUILD_TYPE $RUN_CC_PL
|
||||
fi
|
||||
./configure $WITH_BIN $WITH_DATA $WITH_ENC $WITH_RUN $WITH_PERM $WITH_MYSQL
|
||||
}
|
||||
|
||||
ECHO2SUF=''
|
||||
if [ "`echo -n a ; echo -n b`" = "ab" ] ; then
|
||||
ECHO2='echo -n'
|
||||
elif [ "`echo 'a\c' ; echo 'b\c'`" = "ab" ] ; then
|
||||
ECHO2='echo' ; ECHO2SUF='\c'
|
||||
ECHO2='echo' ; ECHO2SUF='\c'
|
||||
elif [ "`printf 'a' 2>&1 ; printf 'b' 2>&1`" = "ab" ] ; then
|
||||
ECHO2='printf "%s"'
|
||||
ECHO2='printf "%s"'
|
||||
else
|
||||
# oh well...
|
||||
ECHO2='echo'
|
||||
# oh well...
|
||||
ECHO2='echo'
|
||||
fi
|
||||
export ECHO2 ECHO2SUF
|
||||
|
||||
@@ -148,62 +88,50 @@ export ECHO2 ECHO2SUF
|
||||
# Init values
|
||||
###########################################################################
|
||||
|
||||
BUILD_SYSTEM="cmake"
|
||||
INSTDIR=$HOME/services
|
||||
BINDEST=$HOME/services
|
||||
DATDEST=$HOME/services
|
||||
RUNGROUP=
|
||||
UMASK=
|
||||
DEBUG="yes"
|
||||
USE_RUN_CC_PL="no"
|
||||
IRCTYPE="no default"
|
||||
CAN_QUICK="no"
|
||||
SOURCE_DIR=`dirname $0`
|
||||
|
||||
###########################################################################
|
||||
# Check out the options
|
||||
###########################################################################
|
||||
|
||||
while [ $# -ge 1 ] ; do
|
||||
if [ $1 = "--help" ] ; then
|
||||
echo "Config utility for Anope"
|
||||
echo "------------------------"
|
||||
echo "Syntax: ./Config [options]"
|
||||
echo "-nocache Ignore settings saved in config.cache"
|
||||
echo "-nointro Skip intro (disclaimer, etc)"
|
||||
echo "-quick Skip questions, go straight to cmake"
|
||||
exit 0
|
||||
elif [ $1 = "-nocache" ] ; then
|
||||
IGNORE_CACHE="1"
|
||||
elif [ $1 = "-nointro" ] ; then
|
||||
NO_INTRO="1"
|
||||
elif [ $1 = "-quick" -o $1 = "-q" ] ; then
|
||||
Load_Cache
|
||||
if [ "$CAN_QUICK" = "yes" ] ; then
|
||||
Run_Build_System
|
||||
else
|
||||
echo ""
|
||||
echo "Can't find cache file (config.cache), aborting..."
|
||||
fi
|
||||
exit 0
|
||||
fi
|
||||
shift 1
|
||||
if [ $1 = "--help" ] ; then
|
||||
echo "Config utility for Anope"
|
||||
echo "------------------------"
|
||||
echo "Syntax: ./Config [options]"
|
||||
echo "-nocache Ignore settings saved in config.cache"
|
||||
echo "-nointro Skip intro (disclaimer, etc)"
|
||||
echo "-quick Skip questions, go straight to configure"
|
||||
exit 0
|
||||
elif [ $1 = "-nocache" ] ; then
|
||||
IGNORE_CACHE="1"
|
||||
elif [ $1 = "-nointro" ] ; then
|
||||
NO_INTRO="1"
|
||||
elif [ $1 = "-quick" -o $1 = "-q" ] ; then
|
||||
Load_Cache
|
||||
if [ $CAN_QUICK = "yes" ] ; then
|
||||
Run_Configure
|
||||
else
|
||||
echo ""
|
||||
echo "Can't find cache file (config.cache), aborting..."
|
||||
fi
|
||||
exit 0
|
||||
fi
|
||||
shift 1
|
||||
done
|
||||
|
||||
###########################################################################
|
||||
|
||||
if [ ! "$NO_INTRO" ] ; then
|
||||
case `uname -s` in
|
||||
MINGW*)
|
||||
PAGER=less
|
||||
;;
|
||||
*)
|
||||
PAGER=more
|
||||
clear
|
||||
;;
|
||||
esac
|
||||
. $SOURCE_DIR/version.log
|
||||
cat $SOURCE_DIR/.BANNER | sed "s/CURVER/$VERSION_MAJOR.$VERSION_MINOR.$VERSION_PATCH$VERSION_EXTRA/" | sed "s@SOURCE_DIR@$SOURCE_DIR@" | $PAGER
|
||||
echo ""
|
||||
clear
|
||||
. ./version.log
|
||||
cat .BANNER | sed "s/CURVER/$VERSION_MAJOR.$VERSION_MINOR.$VERSION_PATCH$VERSION_EXTRA/" | more
|
||||
echo ""
|
||||
else
|
||||
echo ""
|
||||
echo ""
|
||||
fi
|
||||
|
||||
echo "Beginning Services configuration."
|
||||
@@ -212,9 +140,8 @@ echo ""
|
||||
###########################################################################
|
||||
# Load the cache
|
||||
###########################################################################
|
||||
|
||||
if [ ! "$IGNORE_CACHE" ] ; then
|
||||
Load_Cache
|
||||
Load_Cache
|
||||
fi
|
||||
|
||||
# Ask the user anything we need to know ahead of time.
|
||||
@@ -225,36 +152,12 @@ export ok INPUT
|
||||
|
||||
ok=0
|
||||
echo "Note: press Return for the default, or enter a new value."
|
||||
echo "Are you using configure or cmake?"
|
||||
while [ $ok -eq 0 ] ; do
|
||||
echo2 "[$BUILD_SYSTEM] "
|
||||
if read INPUT ; then : ; else echo "" ; exit 1 ; fi
|
||||
if [ ! "$INPUT" ] ; then
|
||||
INPUT=$BUILD_SYSTEM
|
||||
fi
|
||||
case $INPUT in
|
||||
cmake)
|
||||
ok=1
|
||||
;;
|
||||
configure)
|
||||
ok=1
|
||||
;;
|
||||
*)
|
||||
echo "That is not a valid choice!"
|
||||
ok=0
|
||||
;;
|
||||
esac
|
||||
done
|
||||
BUILD_SYSTEM=$INPUT
|
||||
echo ""
|
||||
|
||||
ok=0
|
||||
echo "In what directory do you want the binaries to be installed?"
|
||||
while [ $ok -eq 0 ] ; do
|
||||
echo2 "[$INSTDIR] "
|
||||
echo2 "[$BINDEST] "
|
||||
if read INPUT ; then : ; else echo "" ; exit 1 ; fi
|
||||
if [ ! "$INPUT" ] ; then
|
||||
INPUT=$INSTDIR
|
||||
INPUT=$BINDEST
|
||||
fi
|
||||
if [ ! -d "$INPUT" ] ; then
|
||||
if exists "$INPUT" ; then
|
||||
@@ -275,127 +178,148 @@ while [ $ok -eq 0 ] ; do
|
||||
ok=1
|
||||
fi
|
||||
done
|
||||
INSTDIR=$INPUT
|
||||
BINDEST=$INPUT
|
||||
DATDEST=$INPUT
|
||||
echo ""
|
||||
|
||||
|
||||
####
|
||||
|
||||
ok=0
|
||||
echo "Where do you want the data files to be installed?"
|
||||
while [ $ok -eq 0 ] ; do
|
||||
echo2 "[$DATDEST] "
|
||||
if read INPUT ; then : ; else echo "" ; exit 1 ; fi
|
||||
if [ ! "$INPUT" ] ; then
|
||||
INPUT=$DATDEST
|
||||
fi
|
||||
if [ ! -d "$INPUT" ] ; then
|
||||
if exists "$INPUT" ; then
|
||||
echo "$INPUT exists, but is not a directory!"
|
||||
else
|
||||
echo "$INPUT does not exist. Create it?"
|
||||
echo2 "[y] "
|
||||
read YN
|
||||
if [ "$YN" != "n" ] ; then
|
||||
if mkdir -p $INPUT ; then
|
||||
ok=1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
elif exists "$INPUT/include/services.h" ; then
|
||||
echo "You cannot use the Services source directory as a target directory."
|
||||
else
|
||||
ok=1
|
||||
fi
|
||||
done
|
||||
DATDEST=$INPUT
|
||||
echo ""
|
||||
|
||||
####
|
||||
|
||||
|
||||
OLD_RUNGROUP="$RUNGROUP"
|
||||
if [ "$RUNGROUP" ] ; then
|
||||
echo "Which group should all Services data files be owned by? (If Services"
|
||||
echo "should not force files to be owned by a particular group, type \"none\""
|
||||
echo "(without the quotes) and press Return.)"
|
||||
echo "Which group should all Services data files be owned by? (If Services"
|
||||
echo "should not force files to be owned by a particular group, type "\"none\"
|
||||
echo "(without the quotes) and press Return.)"
|
||||
else
|
||||
echo "Which group should all Services data files be owned by? (If Services"
|
||||
echo "should not force files to be owned by a particular group, just press"
|
||||
echo "Return.)"
|
||||
echo "Which group should all Services data files be owned by? (If Services"
|
||||
echo "should not force files to be owned by a particular group, just press"
|
||||
echo "Return.)"
|
||||
fi
|
||||
echo2 "[$RUNGROUP] "
|
||||
if read INPUT ; then : ; else echo "" ; exit 1 ; fi
|
||||
if [ "$INPUT" ] ; then
|
||||
if [ "$INPUT" = "none" ] ; then
|
||||
RUNGROUP=""
|
||||
else
|
||||
RUNGROUP="$INPUT"
|
||||
fi
|
||||
if [ "$INPUT" = "none" ] ; then
|
||||
RUNGROUP=""
|
||||
else
|
||||
RUNGROUP="$INPUT"
|
||||
fi
|
||||
fi
|
||||
echo ""
|
||||
|
||||
####
|
||||
|
||||
if [ ! "$UMASK" -o "$RUNGROUP" != "$OLD_RUNGROUP" ] ; then
|
||||
if [ "$RUNGROUP" ] ; then
|
||||
UMASK=007
|
||||
else
|
||||
UMASK=077
|
||||
fi
|
||||
if [ "$RUNGROUP" ] ; then
|
||||
UMASK=007
|
||||
else
|
||||
UMASK=077
|
||||
fi
|
||||
fi
|
||||
|
||||
ok=0
|
||||
echo "What should the default umask for data files be (in octal)?"
|
||||
echo "(077 = only accessible by owner; 007 = accessible by owner and group)"
|
||||
while [ $ok -eq 0 ] ; do
|
||||
echo2 "[$UMASK] "
|
||||
if read INPUT ; then : ; else echo "" ; exit 1 ; fi
|
||||
if [ ! "$INPUT" ] ; then
|
||||
INPUT=$UMASK
|
||||
fi
|
||||
if [ `echo "$INPUT" | grep -c '[^0-7]'` -gt 0 ] ; then
|
||||
echo "$UMASK is not a valid octal number!"
|
||||
else
|
||||
if [ "`echo $INPUT | cut -c1`" != "0" ] ; then
|
||||
INPUT=0$INPUT
|
||||
fi
|
||||
ok=1
|
||||
fi
|
||||
echo2 "[$UMASK] "
|
||||
if read INPUT ; then : ; else echo "" ; exit 1 ; fi
|
||||
if [ ! "$INPUT" ] ; then
|
||||
INPUT=$UMASK
|
||||
fi
|
||||
if [ `echo "$INPUT" | grep -c '[^0-7]'` -gt 0 ] ; then
|
||||
echo "$UMASK is not a valid octal number!"
|
||||
else
|
||||
if [ "`echo $INPUT | cut -c1`" != "0" ] ; then
|
||||
INPUT=0$INPUT
|
||||
fi
|
||||
ok=1
|
||||
fi
|
||||
done
|
||||
UMASK=$INPUT
|
||||
echo ""
|
||||
|
||||
####
|
||||
|
||||
TEMP_YN="n"
|
||||
if [ "$DEBUG" = "yes" ] ; then
|
||||
TEMP_YN="y"
|
||||
fi
|
||||
echo "Would you like to build a debug version of Anope?"
|
||||
echo2 "[$TEMP_YN] "
|
||||
read YN
|
||||
if [ "$YN" ] ; then
|
||||
if [ "$YN" = "y" ] ; then
|
||||
DEBUG="yes"
|
||||
else
|
||||
DEBUG="no"
|
||||
fi
|
||||
fi
|
||||
ok=0
|
||||
DEF=yes
|
||||
echo "Allow anope to automatically check for mysql libaries?"
|
||||
echo "unless you get errors with make, there is no need to"
|
||||
echo "change this setting."
|
||||
while [ $ok -eq 0 ] ; do
|
||||
echo2 "[$DEF] "
|
||||
if read INPUT ; then : ; else echo "" ; exit 1 ; fi
|
||||
if [ ! "$INPUT" ] ; then
|
||||
INPUT=$DEF
|
||||
fi
|
||||
case $INPUT in
|
||||
n*|N*)
|
||||
MYSQL=
|
||||
ok=1
|
||||
;;
|
||||
y*|Y*)
|
||||
MYSQL="yes"
|
||||
ok=1
|
||||
;;
|
||||
*)
|
||||
echo "Please enter 'yes' or 'no'."
|
||||
;;
|
||||
esac
|
||||
done
|
||||
echo ""
|
||||
|
||||
####
|
||||
|
||||
TEMP_YN="n"
|
||||
if [ "$USE_RUN_CC_PL" = "yes" ] ; then
|
||||
TEMP_YN="y"
|
||||
fi
|
||||
echo "You can optionally have the build run through run-cc.pl, which will"
|
||||
echo "cause warnings and errors (if any) to be colored yellow and run,"
|
||||
echo "respectively. This relies on Perl being installed, so if you say yes"
|
||||
echo "to this without Perl, the option will be ignored."
|
||||
echo "NOTE: If you are using MinGW, it is NOT recommended to say yes to"
|
||||
echo "this, it may fail."
|
||||
echo "Would you like to utilize run-cc.pl?"
|
||||
echo2 "[$TEMP_YN] "
|
||||
read YN
|
||||
if [ "$YN" ] ; then
|
||||
if [ "$YN" = "y" ] ; then
|
||||
USE_RUN_CC_PL="yes"
|
||||
else
|
||||
USE_RUN_CC_PL="no"
|
||||
fi
|
||||
fi
|
||||
echo ""
|
||||
|
||||
####
|
||||
|
||||
################################################################################
|
||||
# Store values
|
||||
################################################################################
|
||||
|
||||
echo2 "Saving configuration results in config.cache... "
|
||||
|
||||
cat <<EOT >$SOURCE_DIR/config.cache
|
||||
BUILD_SYSTEM="$BUILD_SYSTEM"
|
||||
INSTDIR="$INSTDIR"
|
||||
cat <<EOT >config.cache
|
||||
BINDEST="$BINDEST"
|
||||
DATDEST="$DATDEST"
|
||||
RUNGROUP="$RUNGROUP"
|
||||
UMASK=$UMASK
|
||||
DEBUG="$DEBUG"
|
||||
USE_RUN_CC_PL="$USE_RUN_CC_PL"
|
||||
IRCTYPE="$IRCTYPE"
|
||||
IRCTYPE_DEF="$IRCTYPE_DEF"
|
||||
MYSQL="$MYSQL"
|
||||
EOT
|
||||
echo "done."
|
||||
|
||||
|
||||
################################################################################
|
||||
# Build the build system string
|
||||
# Build the configure string
|
||||
################################################################################
|
||||
|
||||
Run_Build_System
|
||||
Run_Configure
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
@echo off
|
||||
cscript /nologo "%~dp0\install.js"
|
||||
pause
|
||||
cscript /nologo install.js
|
||||
|
||||
|
||||
+69
-40
@@ -1,102 +1,131 @@
|
||||
CC=g++ # probably wrong but oh well.
|
||||
CC=@CC@
|
||||
INCLUDEDIR=../include
|
||||
ANOPELIBS=@ANOPELIBS@
|
||||
CFLAGS=@CFLAGS@ -Wall -ansi -pedantic -Wshadow
|
||||
CFLAGS=@CFLAGS@
|
||||
STRICT=-Wall -ansi -pedantic
|
||||
PROFILE=-pg
|
||||
LDPROFILE=
|
||||
SHELL=/bin/sh
|
||||
INSTDIR=@INSTDIR@
|
||||
MAKEBIN=@MAKEBIN@
|
||||
SUBDIRS=src
|
||||
BINDEST=@BINDEST@
|
||||
DATDEST=@DATDEST@
|
||||
INSTALL=@INSTALL@
|
||||
RM=@RM@
|
||||
CP=@CP@
|
||||
TOUCH=@TOUCH@
|
||||
MODULE_PATH=@MODULE_PATH@
|
||||
MYSQL=@MYSQL@
|
||||
RDB=@RDB@
|
||||
LDFLAGS=@LDFLAGS@
|
||||
RUNGROUP=@RUNGROUP@
|
||||
SHARED=@SHARED@
|
||||
MODULEFLAGS=@MODULEFLAGS@
|
||||
|
||||
all: language headers build core protocols tools modules
|
||||
all: language headers build core protocols tools modules
|
||||
strict: language headers strict_build strict_core strict_protocols strict_tools strict_modules
|
||||
profile: language headers profile_build profile_core profile_protocols profile_tools profile_modules
|
||||
|
||||
MAKEARGS = 'CFLAGS=${CFLAGS}' 'CC=${CC}' 'ANOPELIBS=${ANOPELIBS}' \
|
||||
'LDFLAGS=${LDFLAGS}' 'INSTDIR=${INSTDIR}' 'INSTALL=${INSTALL}' \
|
||||
'LDFLAGS=${LDFLAGS}' 'BINDEST=${BINDEST}' 'INSTALL=${INSTALL}' \
|
||||
'INCLUDEDIR=${INCLUDEDIR}' 'RM=${RM}' 'CP=${CP}' \
|
||||
'TOUCH=${TOUCH}' 'SHELL=${SHELL}' \
|
||||
'RUNGROUP=${RUNGROUP}' \
|
||||
'SHARED=${SHARED}' 'MODULEFLAGS=${MODULEFLAGS}' \
|
||||
'MAKEBIN=${MAKEBIN}'
|
||||
'TOUCH=${TOUCH}' 'SHELL=${SHELL}' 'DATDEST=${DATDEST}' \
|
||||
'RUNGROUP=${RUNGROUP}' 'MODULE_PATH=${MODULE_PATH}' 'RDB=${RDB}'\
|
||||
'MYSQL=${MYSQL}' 'SHARED=${SHARED}' 'MODULEFLAGS=${MODULEFLAGS}'
|
||||
|
||||
build: language headers
|
||||
@${MAKE} -C src ${MAKEARGS} all
|
||||
@for i in $(SUBDIRS); do \
|
||||
echo "*** Building $$i";\
|
||||
( cd $$i; ${MAKE} ${MAKEARGS} all; ) \
|
||||
done
|
||||
|
||||
strict_build:
|
||||
@for i in $(SUBDIRS); do \
|
||||
echo "*** Strict Building $$i";\
|
||||
( cd $$i; ${MAKE} ${MAKEARGS} 'CFLAGS=${CFLAGS} $(STRICT)' all; ) \
|
||||
done
|
||||
|
||||
profile_build:
|
||||
@${MAKE} -C src ${MAKEARGS} 'CFLAGS=${CFLAGS} $(PROFILE)' 'LDFLAGS=${LDFLAGS} ${PROFILE}' all
|
||||
@for i in $(SUBDIRS); do \
|
||||
echo "*** Strict Building $$i";\
|
||||
( cd $$i; ${MAKE} ${MAKEARGS} 'CFLAGS=${CFLAGS} $(PROFILE)' 'LDFLAGS=${LDFLAGS} ${PROFILE}' all; ) \
|
||||
done
|
||||
|
||||
modules: build
|
||||
@src/modules/configure src/modules
|
||||
@${MAKE} -C src/modules ${MAKEARGS} all
|
||||
(cd src/modules ; ./configure ; ${MAKE} ${MAKEARGS} all; )
|
||||
@echo "*** All done, now (g)make install to install Anope/Modules";
|
||||
|
||||
clean_modules:
|
||||
@${MAKE} -C src ${MAKEARGS} clean_modules
|
||||
(cd src ; ${MAKE} ${MAKEARGS} clean_modules )
|
||||
|
||||
distclean_modules:
|
||||
@${MAKE} -C src ${MAKEARGS} distclean_modules
|
||||
(cd src ; ${MAKE} ${MAKEARGS} distclean_modules )
|
||||
|
||||
protocols: build
|
||||
@echo "*** Building protocol support";
|
||||
@src/protocol/configure src/protocol
|
||||
@${MAKE} -C src/protocol ${MAKEARGS} all
|
||||
(cd src/protocol ; ./configure ; ${MAKE} ${MAKEARGS} all; )
|
||||
|
||||
strict_protocols: build
|
||||
@echo "*** Building protocol support";
|
||||
(cd src/protocol ; ./configure ; ${MAKE} ${MAKEARGS} 'CFLAGS=${CFLAGS} $(STRICT)' all; )
|
||||
|
||||
profile_protocols: build
|
||||
@echo "*** Building protocol support";
|
||||
@src/protocol/configure src/protocol
|
||||
@${MAKE} -C src/protocol ${MAKEARGS} 'CFLAGS=${CFLAGS} ${PROFILE}' 'PROFILE=${PROFILE}' all
|
||||
(cd src/protocol ; ./configure ; ${MAKE} ${MAKEARGS} 'CFLAGS=${CFLAGS} ${PROFILE}' 'PROFILE=${PROFILE}' all; )
|
||||
|
||||
core: build
|
||||
core: build
|
||||
@echo "*** Building Core modules";
|
||||
@${MAKE} -C src ${MAKEARGS} core
|
||||
(cd src/ ; ${MAKE} ${MAKEARGS} core; )
|
||||
|
||||
profile_core: build
|
||||
strict_core: build
|
||||
@echo "*** Building Core modules";
|
||||
@${MAKE} -C src ${MAKEARGS} 'CFLAGS=${CFLAGS} ${PROFILE}' 'PROFILE=${PROFILE}' core
|
||||
(cd src/ ; ${MAKE} ${MAKEARGS} 'CFLAGS=${CFLAGS} $(STRICT)' core; )
|
||||
|
||||
profile_core: build
|
||||
@echo "*** Building Core modules";
|
||||
(cd src/ ; ${MAKE} ${MAKEARGS} 'CFLAGS=${CFLAGS} ${PROFILE}' 'PROFILE=${PROFILE}' core; )
|
||||
|
||||
tools: build
|
||||
@${MAKE} -C src/tools ${MAKEARGS} all
|
||||
(cd src/tools ; ${MAKE} ${MAKEARGS} all; )
|
||||
@echo "*** All done, now (g)make install to install Anope/Modules/Tools";
|
||||
|
||||
strict_tools: strict_build
|
||||
(cd src/tools ; ${MAKE} ${MAKEARGS} 'CFLAGS=${CFLAGS} $(STRICT)' all; )
|
||||
@echo "*** All done, now (g)make install to install Anope/Modules/Tools";
|
||||
|
||||
profile_tools: profile_build
|
||||
@${MAKE} -C src/tools ${MAKEARGS} 'CFLAGS=${CFLAGS} $(PROFILE)' all
|
||||
(cd src/tools ; ${MAKE} ${MAKEARGS} 'CFLAGS=${CFLAGS} $(PROFILE)' all; )
|
||||
@echo "*** All done, now (g)make install to install Anope/Modules/Tools";
|
||||
|
||||
strict_modules: strict_build
|
||||
(cd src/modules ; ./configure ; ${MAKE} ${MAKEARGS} 'CFLAGS=$(CFLAGS) $(STRICT)' all; )
|
||||
@echo "*** All done, now (g)make install to install Anope/Modules";
|
||||
|
||||
profile_modules: profile_build
|
||||
@src/modules/configure src/modules
|
||||
@${MAKE} -C src/modules ${MAKEARGS} 'CFLAGS=${CFLAGS} ${PROFILE}' 'PROFILE=${PROFILE}' all
|
||||
(cd src/modules ; ./configure ; ${MAKE} ${MAKEARGS} 'CFLAGS=${CFLAGS} ${PROFILE}' 'PROFILE=${PROFILE}' all; )
|
||||
@echo "*** All done, now (g)make install to install Anope/Modules";
|
||||
|
||||
language:
|
||||
@$(MAKE) -C lang ${MAKEARGS} all language.h
|
||||
(cd lang ; $(MAKE) ${MAKEARGS} all language.h ; )
|
||||
|
||||
headers:
|
||||
@${MAKE} -C include ${MAKEARGS}
|
||||
(cd include ; ${MAKE} ${MAKEARGS} )
|
||||
|
||||
clean:
|
||||
${MAKE} -C lang ${MAKEARGS} clean
|
||||
${MAKE} -C include ${MAKEARGS} clean
|
||||
${MAKE} -C src ${MAKEARGS} clean
|
||||
${MAKE} -C src/tools ${MAKEARGS} clean
|
||||
(cd lang ; ${MAKE} ${MAKEARGS} clean )
|
||||
(cd include ; ${MAKE} ${MAKEARGS} clean )
|
||||
(cd src ; ${MAKE} ${MAKEARGS} clean )
|
||||
(cd src/tools ; ${MAKE} ${MAKEARGS} clean )
|
||||
|
||||
distclean: clean
|
||||
${MAKE} -C lang ${MAKEARGS} distclean
|
||||
${MAKE} -C include ${MAKEARGS} distclean
|
||||
${MAKE} -C src ${MAKEARGS} distclean
|
||||
${MAKE} -C src/tools ${MAKEARGS} distclean
|
||||
(cd lang ; ${MAKE} distclean )
|
||||
(cd include ; ${MAKE} distclean )
|
||||
(cd src ; ${MAKE} distclean )
|
||||
(cd src/tools ; ${MAKE} distclean )
|
||||
rm -f config.log config.status config.cache Makefile src/bin/anoperc
|
||||
|
||||
install: DUMMY
|
||||
${MAKE} -C src ${MAKEARGS} install
|
||||
${MAKE} -C src/tools ${MAKEARGS} install
|
||||
(cd src ; ${MAKE} ${MAKEARGS} install)
|
||||
(cd src/tools ; ${MAKE} ${MAKEARGS} install)
|
||||
@echo "*** All done, Anope is now installed. Please read docs/INSTALL for details on what to do now.";
|
||||
|
||||
DUMMY:
|
||||
|
||||
@@ -0,0 +1,96 @@
|
||||
# Makefile for Anope.
|
||||
#
|
||||
# (C) 2003-2014 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# This program is free but copyrighted software; see the file COPYING for
|
||||
# details.
|
||||
#
|
||||
# Based on the original code of Epona by Lara.
|
||||
# Based on the original code of Services by Andy Church.
|
||||
|
||||
include Makefile.inc.win32
|
||||
|
||||
###########################################################################
|
||||
|
||||
all: src core protocols languages tools modules install
|
||||
|
||||
src: include\version.h include\sysconf.h include\language.h include\sysconf.h
|
||||
cd src && $(MAKE) && cd ..
|
||||
|
||||
install:
|
||||
-@mkdir $(DATDEST)\backups
|
||||
-@mkdir $(DATDEST)\logs
|
||||
-@mkdir $(DATDEST)\languages
|
||||
cd lang && $(MAKE) install && cd ..
|
||||
cd src && $(MAKE) install && cd ..
|
||||
cd src\modules && $(MAKE) install && cd ..
|
||||
cd src\modules && $(MAKE) subs-install && cd ..
|
||||
cd src\protocol && $(MAKE) install && cd ..
|
||||
cd src\core && $(MAKE) install && cd ..
|
||||
cd src\tools && $(MAKE) install && cd ..
|
||||
-@echo ---
|
||||
-@echo Anope has been installed successfully!
|
||||
-@echo See docs\INSTALL for details on how to configure Anope for use.
|
||||
-@echo ---
|
||||
|
||||
spotless:
|
||||
cd lang && $(MAKE) spotless && cd ..
|
||||
cd src && $(MAKE) spotless && cd ..
|
||||
cd src\modules && $(MAKE) spotless && cd ..\..
|
||||
cd src\protocol && $(MAKE) spotless && cd ..\..
|
||||
cd src\core && $(MAKE) spotless && cd ..\..
|
||||
cd src\tools && $(MAKE) spotless && cd ..\..
|
||||
-@erase include\language.h include\version.h *.manifest *~ anope.exe version.sh.exe *.obj anopesmtp.exe
|
||||
-@echo --
|
||||
-@echo NOTICE:
|
||||
-@echo You will need to run config.bat again
|
||||
-@echo --
|
||||
|
||||
mypasql:
|
||||
$(MYPASQL_BUILD)
|
||||
|
||||
distclean: spotless
|
||||
|
||||
clean: spotless
|
||||
|
||||
###########################################################################
|
||||
|
||||
|
||||
languages: FRC
|
||||
cd lang && $(MAKE) && cd ..
|
||||
|
||||
tools: FRC
|
||||
cd src\tools && $(MAKE) && cd ..\..
|
||||
|
||||
core: FRC
|
||||
cd src\core && $(MAKE) && cd ..\..
|
||||
|
||||
protocols: FRC
|
||||
cd src\protocol && $(MAKE) && cd ..\..
|
||||
|
||||
modules: FRC
|
||||
cd src\modules && $(MAKE) && cd ..\..
|
||||
|
||||
###########################################################################
|
||||
|
||||
include\sysconf.h:
|
||||
copy include\sysconf.h.win32 include\sysconf.h
|
||||
|
||||
lang\language.h: lang\Makefile lang\index
|
||||
cd lang && $(MAKE) language.h && cd ..
|
||||
|
||||
lang\index:
|
||||
cd lang && $(MAKE) index && cd ..
|
||||
|
||||
include\language.h: lang\language.h
|
||||
cd lang && copy language.h ..\include\language.h && cd ..
|
||||
|
||||
include\version.h: version.sh.exe version.log include\services.h include\pseudo.h include\messages.h
|
||||
version.sh.exe
|
||||
move version.h include\version.h
|
||||
|
||||
version.sh.exe:
|
||||
$(CC) $(BASE_CFLAGS) include\version.sh.c /link $(LFLAGS)
|
||||
|
||||
FRC:
|
||||
@@ -1,825 +0,0 @@
|
||||
; CPack install script designed for a nmake build
|
||||
|
||||
;--------------------------------
|
||||
; You must define these values
|
||||
|
||||
!define VERSION "@CPACK_PACKAGE_VERSION@"
|
||||
!define INST_DIR "@CPACK_TEMPORARY_DIRECTORY@"
|
||||
|
||||
;--------------------------------
|
||||
;Variables
|
||||
|
||||
Var MUI_TEMP
|
||||
Var STARTMENU_FOLDER
|
||||
Var SV_ALLUSERS
|
||||
Var START_MENU
|
||||
Var DO_NOT_ADD_TO_PATH
|
||||
Var ADD_TO_PATH_ALL_USERS
|
||||
Var ADD_TO_PATH_CURRENT_USER
|
||||
Var INSTALL_DESKTOP
|
||||
|
||||
;--------------------------------
|
||||
;Include Modern UI
|
||||
|
||||
!include "MUI2.nsh"
|
||||
|
||||
;Default installation folder
|
||||
InstallDir "$PROGRAMFILES\@CPACK_PACKAGE_INSTALL_DIRECTORY@"
|
||||
|
||||
;--------------------------------
|
||||
;General
|
||||
|
||||
;Name and file
|
||||
Name "@CPACK_PACKAGE_NAME@ @CPACK_PACKAGE_VERSION@"
|
||||
OutFile "@CPACK_TOPLEVEL_DIRECTORY@/@CPACK_OUTPUT_FILE_NAME@"
|
||||
|
||||
;Set compression
|
||||
SetCompressor @CPACK_NSIS_COMPRESSOR@
|
||||
|
||||
@CPACK_NSIS_DEFINES@
|
||||
|
||||
!include Sections.nsh
|
||||
|
||||
;--- Component support macros: ---
|
||||
; The code for the add/remove functionality is from:
|
||||
; http://nsis.sourceforge.net/Add/Remove_Functionality
|
||||
; It has been modified slightly and extended to provide
|
||||
; inter-component dependencies.
|
||||
Var AR_SecFlags
|
||||
Var AR_RegFlags
|
||||
@CPACK_NSIS_SECTION_SELECTED_VARS@
|
||||
|
||||
; Loads the "selected" flag for the section named SecName into the
|
||||
; variable VarName.
|
||||
!macro LoadSectionSelectedIntoVar SecName VarName
|
||||
SectionGetFlags ${${SecName}} $${VarName}
|
||||
IntOp $${VarName} $${VarName} & ${SF_SELECTED} ;Turn off all other bits
|
||||
!macroend
|
||||
|
||||
; Loads the value of a variable... can we get around this?
|
||||
!macro LoadVar VarName
|
||||
IntOp $R0 0 + $${VarName}
|
||||
!macroend
|
||||
|
||||
; Sets the value of a variable
|
||||
!macro StoreVar VarName IntValue
|
||||
IntOp $${VarName} 0 + ${IntValue}
|
||||
!macroend
|
||||
|
||||
!macro InitSection SecName
|
||||
; This macro reads component installed flag from the registry and
|
||||
;changes checked state of the section on the components page.
|
||||
;Input: section index constant name specified in Section command.
|
||||
|
||||
ClearErrors
|
||||
;Reading component status from registry
|
||||
ReadRegDWORD $AR_RegFlags HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@\Components\${SecName}" "Installed"
|
||||
IfErrors "default_${SecName}"
|
||||
;Status will stay default if registry value not found
|
||||
;(component was never installed)
|
||||
IntOp $AR_RegFlags $AR_RegFlags & ${SF_SELECTED} ;Turn off all other bits
|
||||
SectionGetFlags ${${SecName}} $AR_SecFlags ;Reading default section flags
|
||||
IntOp $AR_SecFlags $AR_SecFlags & 0xFFFE ;Turn lowest (enabled) bit off
|
||||
IntOp $AR_SecFlags $AR_RegFlags | $AR_SecFlags ;Change lowest bit
|
||||
|
||||
; Note whether this component was installed before
|
||||
!insertmacro StoreVar ${SecName}_was_installed $AR_RegFlags
|
||||
IntOp $R0 $AR_RegFlags & $AR_RegFlags
|
||||
|
||||
;Writing modified flags
|
||||
SectionSetFlags ${${SecName}} $AR_SecFlags
|
||||
|
||||
"default_${SecName}:"
|
||||
!insertmacro LoadSectionSelectedIntoVar ${SecName} ${SecName}_selected
|
||||
!macroend
|
||||
|
||||
!macro FinishSection SecName
|
||||
; This macro reads section flag set by user and removes the section
|
||||
;if it is not selected.
|
||||
;Then it writes component installed flag to registry
|
||||
;Input: section index constant name specified in Section command.
|
||||
|
||||
SectionGetFlags ${${SecName}} $AR_SecFlags ;Reading section flags
|
||||
;Checking lowest bit:
|
||||
IntOp $AR_SecFlags $AR_SecFlags & ${SF_SELECTED}
|
||||
IntCmp $AR_SecFlags 1 "leave_${SecName}"
|
||||
;Section is not selected:
|
||||
;Calling Section uninstall macro and writing zero installed flag
|
||||
!insertmacro "Remove_${${SecName}}"
|
||||
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@\Components\${SecName}" \
|
||||
"Installed" 0
|
||||
Goto "exit_${SecName}"
|
||||
|
||||
"leave_${SecName}:"
|
||||
;Section is selected:
|
||||
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@\Components\${SecName}" \
|
||||
"Installed" 1
|
||||
|
||||
"exit_${SecName}:"
|
||||
!macroend
|
||||
|
||||
!macro RemoveSection SecName
|
||||
; This macro is used to call section's Remove_... macro
|
||||
;from the uninstaller.
|
||||
;Input: section index constant name specified in Section command.
|
||||
|
||||
!insertmacro "Remove_${${SecName}}"
|
||||
!macroend
|
||||
|
||||
; Determine whether the selection of SecName changed
|
||||
!macro MaybeSelectionChanged SecName
|
||||
!insertmacro LoadVar ${SecName}_selected
|
||||
SectionGetFlags ${${SecName}} $R1
|
||||
IntOp $R1 $R1 & ${SF_SELECTED} ;Turn off all other bits
|
||||
|
||||
; See if the status has changed:
|
||||
IntCmp $R0 $R1 "${SecName}_unchanged"
|
||||
!insertmacro LoadSectionSelectedIntoVar ${SecName} ${SecName}_selected
|
||||
|
||||
IntCmp $R1 ${SF_SELECTED} "${SecName}_was_selected"
|
||||
!insertmacro "Deselect_required_by_${SecName}"
|
||||
goto "${SecName}_unchanged"
|
||||
|
||||
"${SecName}_was_selected:"
|
||||
!insertmacro "Select_${SecName}_depends"
|
||||
|
||||
"${SecName}_unchanged:"
|
||||
!macroend
|
||||
;--- End of Add/Remove macros ---
|
||||
|
||||
;--------------------------------
|
||||
;Interface Settings
|
||||
|
||||
!define MUI_ABORTWARNING
|
||||
|
||||
;----------------------------------------
|
||||
; based upon a script of "Written by KiCHiK 2003-01-18 05:57:02"
|
||||
;----------------------------------------
|
||||
!verbose 3
|
||||
!include "WinMessages.NSH"
|
||||
!verbose 4
|
||||
|
||||
;====================================================
|
||||
; get_NT_environment
|
||||
; Returns: the selected environment
|
||||
; Output : head of the stack
|
||||
;====================================================
|
||||
!macro select_NT_profile UN
|
||||
Function ${UN}select_NT_profile
|
||||
StrCmp $ADD_TO_PATH_ALL_USERS "1" 0 environment_single
|
||||
DetailPrint "Selected environment for all users"
|
||||
Push "all"
|
||||
Return
|
||||
environment_single:
|
||||
DetailPrint "Selected environment for current user only."
|
||||
Push "current"
|
||||
Return
|
||||
FunctionEnd
|
||||
!macroend
|
||||
!insertmacro select_NT_profile ""
|
||||
!insertmacro select_NT_profile "un."
|
||||
;----------------------------------------------------
|
||||
!define NT_current_env 'HKCU "Environment"'
|
||||
!define NT_all_env 'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"'
|
||||
|
||||
!ifndef WriteEnvStr_RegKey
|
||||
!ifdef ALL_USERS
|
||||
!define WriteEnvStr_RegKey \
|
||||
'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"'
|
||||
!else
|
||||
!define WriteEnvStr_RegKey 'HKCU "Environment"'
|
||||
!endif
|
||||
!endif
|
||||
|
||||
; AddToPath - Adds the given dir to the search path.
|
||||
; Input - head of the stack
|
||||
; Note - Win9x systems requires reboot
|
||||
|
||||
Function AddToPath
|
||||
Exch $0
|
||||
Push $1
|
||||
Push $2
|
||||
Push $3
|
||||
|
||||
# don't add if the path doesn't exist
|
||||
IfFileExists "$0\*.*" "" AddToPath_done
|
||||
|
||||
ReadEnvStr $1 PATH
|
||||
Push "$1;"
|
||||
Push "$0;"
|
||||
Call StrStr
|
||||
Pop $2
|
||||
StrCmp $2 "" "" AddToPath_done
|
||||
Push "$1;"
|
||||
Push "$0\;"
|
||||
Call StrStr
|
||||
Pop $2
|
||||
StrCmp $2 "" "" AddToPath_done
|
||||
GetFullPathName /SHORT $3 $0
|
||||
Push "$1;"
|
||||
Push "$3;"
|
||||
Call StrStr
|
||||
Pop $2
|
||||
StrCmp $2 "" "" AddToPath_done
|
||||
Push "$1;"
|
||||
Push "$3\;"
|
||||
Call StrStr
|
||||
Pop $2
|
||||
StrCmp $2 "" "" AddToPath_done
|
||||
|
||||
Call IsNT
|
||||
Pop $1
|
||||
StrCmp $1 1 AddToPath_NT
|
||||
; Not on NT
|
||||
StrCpy $1 $WINDIR 2
|
||||
FileOpen $1 "$1\autoexec.bat" a
|
||||
FileSeek $1 -1 END
|
||||
FileReadByte $1 $2
|
||||
IntCmp $2 26 0 +2 +2 # DOS EOF
|
||||
FileSeek $1 -1 END # write over EOF
|
||||
FileWrite $1 "$\r$\nSET PATH=%PATH%;$3$\r$\n"
|
||||
FileClose $1
|
||||
SetRebootFlag true
|
||||
Goto AddToPath_done
|
||||
|
||||
AddToPath_NT:
|
||||
ReadRegStr $1 ${WriteEnvStr_RegKey} "PATH"
|
||||
StrCmp $1 "" AddToPath_NTdoIt
|
||||
Push $1
|
||||
Call Trim
|
||||
Pop $1
|
||||
StrCpy $0 "$1;$0"
|
||||
AddToPath_NTdoIt:
|
||||
WriteRegExpandStr ${WriteEnvStr_RegKey} "PATH" $0
|
||||
SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
|
||||
|
||||
AddToPath_done:
|
||||
Pop $3
|
||||
Pop $2
|
||||
Pop $1
|
||||
Pop $0
|
||||
FunctionEnd
|
||||
|
||||
|
||||
; RemoveFromPath - Remove a given dir from the path
|
||||
; Input: head of the stack
|
||||
|
||||
Function un.RemoveFromPath
|
||||
Exch $0
|
||||
Push $1
|
||||
Push $2
|
||||
Push $3
|
||||
Push $4
|
||||
Push $5
|
||||
Push $6
|
||||
|
||||
IntFmt $6 "%c" 26 # DOS EOF
|
||||
|
||||
Call un.IsNT
|
||||
Pop $1
|
||||
StrCmp $1 1 unRemoveFromPath_NT
|
||||
; Not on NT
|
||||
StrCpy $1 $WINDIR 2
|
||||
FileOpen $1 "$1\autoexec.bat" r
|
||||
GetTempFileName $4
|
||||
FileOpen $2 $4 w
|
||||
GetFullPathName /SHORT $0 $0
|
||||
StrCpy $0 "SET PATH=%PATH%;$0"
|
||||
Goto unRemoveFromPath_dosLoop
|
||||
|
||||
unRemoveFromPath_dosLoop:
|
||||
FileRead $1 $3
|
||||
StrCpy $5 $3 1 -1 # read last char
|
||||
StrCmp $5 $6 0 +2 # if DOS EOF
|
||||
StrCpy $3 $3 -1 # remove DOS EOF so we can compare
|
||||
StrCmp $3 "$0$\r$\n" unRemoveFromPath_dosLoopRemoveLine
|
||||
StrCmp $3 "$0$\n" unRemoveFromPath_dosLoopRemoveLine
|
||||
StrCmp $3 "$0" unRemoveFromPath_dosLoopRemoveLine
|
||||
StrCmp $3 "" unRemoveFromPath_dosLoopEnd
|
||||
FileWrite $2 $3
|
||||
Goto unRemoveFromPath_dosLoop
|
||||
unRemoveFromPath_dosLoopRemoveLine:
|
||||
SetRebootFlag true
|
||||
Goto unRemoveFromPath_dosLoop
|
||||
|
||||
unRemoveFromPath_dosLoopEnd:
|
||||
FileClose $2
|
||||
FileClose $1
|
||||
StrCpy $1 $WINDIR 2
|
||||
Delete "$1\autoexec.bat"
|
||||
CopyFiles /SILENT $4 "$1\autoexec.bat"
|
||||
Delete $4
|
||||
Goto unRemoveFromPath_done
|
||||
|
||||
unRemoveFromPath_NT:
|
||||
ReadRegStr $1 ${WriteEnvStr_RegKey} "PATH"
|
||||
StrCpy $5 $1 1 -1 # copy last char
|
||||
StrCmp $5 ";" +2 # if last char != ;
|
||||
StrCpy $1 "$1;" # append ;
|
||||
Push $1
|
||||
Push "$0;"
|
||||
Call un.StrStr ; Find `$0;` in $1
|
||||
Pop $2 ; pos of our dir
|
||||
StrCmp $2 "" unRemoveFromPath_done
|
||||
; else, it is in path
|
||||
# $0 - path to add
|
||||
# $1 - path var
|
||||
StrLen $3 "$0;"
|
||||
StrLen $4 $2
|
||||
StrCpy $5 $1 -$4 # $5 is now the part before the path to remove
|
||||
StrCpy $6 $2 "" $3 # $6 is now the part after the path to remove
|
||||
StrCpy $3 $5$6
|
||||
|
||||
StrCpy $5 $3 1 -1 # copy last char
|
||||
StrCmp $5 ";" 0 +2 # if last char == ;
|
||||
StrCpy $3 $3 -1 # remove last char
|
||||
|
||||
WriteRegExpandStr ${WriteEnvStr_RegKey} "PATH" $3
|
||||
SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
|
||||
|
||||
unRemoveFromPath_done:
|
||||
Pop $6
|
||||
Pop $5
|
||||
Pop $4
|
||||
Pop $3
|
||||
Pop $2
|
||||
Pop $1
|
||||
Pop $0
|
||||
FunctionEnd
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; Uninstall sutff
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
###########################################
|
||||
# Utility Functions #
|
||||
###########################################
|
||||
|
||||
;====================================================
|
||||
; IsNT - Returns 1 if the current system is NT, 0
|
||||
; otherwise.
|
||||
; Output: head of the stack
|
||||
;====================================================
|
||||
; IsNT
|
||||
; no input
|
||||
; output, top of the stack = 1 if NT or 0 if not
|
||||
;
|
||||
; Usage:
|
||||
; Call IsNT
|
||||
; Pop $R0
|
||||
; ($R0 at this point is 1 or 0)
|
||||
|
||||
!macro IsNT un
|
||||
Function ${un}IsNT
|
||||
Push $0
|
||||
ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
|
||||
StrCmp $0 "" 0 IsNT_yes
|
||||
; we are not NT.
|
||||
Pop $0
|
||||
Push 0
|
||||
Return
|
||||
|
||||
IsNT_yes:
|
||||
; NT!!!
|
||||
Pop $0
|
||||
Push 1
|
||||
FunctionEnd
|
||||
!macroend
|
||||
!insertmacro IsNT ""
|
||||
!insertmacro IsNT "un."
|
||||
|
||||
; StrStr
|
||||
; input, top of stack = string to search for
|
||||
; top of stack-1 = string to search in
|
||||
; output, top of stack (replaces with the portion of the string remaining)
|
||||
; modifies no other variables.
|
||||
;
|
||||
; Usage:
|
||||
; Push "this is a long ass string"
|
||||
; Push "ass"
|
||||
; Call StrStr
|
||||
; Pop $R0
|
||||
; ($R0 at this point is "ass string")
|
||||
|
||||
!macro StrStr un
|
||||
Function ${un}StrStr
|
||||
Exch $R1 ; st=haystack,old$R1, $R1=needle
|
||||
Exch ; st=old$R1,haystack
|
||||
Exch $R2 ; st=old$R1,old$R2, $R2=haystack
|
||||
Push $R3
|
||||
Push $R4
|
||||
Push $R5
|
||||
StrLen $R3 $R1
|
||||
StrCpy $R4 0
|
||||
; $R1=needle
|
||||
; $R2=haystack
|
||||
; $R3=len(needle)
|
||||
; $R4=cnt
|
||||
; $R5=tmp
|
||||
loop:
|
||||
StrCpy $R5 $R2 $R3 $R4
|
||||
StrCmp $R5 $R1 done
|
||||
StrCmp $R5 "" done
|
||||
IntOp $R4 $R4 + 1
|
||||
Goto loop
|
||||
done:
|
||||
StrCpy $R1 $R2 "" $R4
|
||||
Pop $R5
|
||||
Pop $R4
|
||||
Pop $R3
|
||||
Pop $R2
|
||||
Exch $R1
|
||||
FunctionEnd
|
||||
!macroend
|
||||
!insertmacro StrStr ""
|
||||
!insertmacro StrStr "un."
|
||||
|
||||
Function Trim ; Added by Pelaca
|
||||
Exch $R1
|
||||
Push $R2
|
||||
Loop:
|
||||
StrCpy $R2 "$R1" 1 -1
|
||||
StrCmp "$R2" " " RTrim
|
||||
StrCmp "$R2" "$\n" RTrim
|
||||
StrCmp "$R2" "$\r" RTrim
|
||||
StrCmp "$R2" ";" RTrim
|
||||
GoTo Done
|
||||
RTrim:
|
||||
StrCpy $R1 "$R1" -1
|
||||
Goto Loop
|
||||
Done:
|
||||
Pop $R2
|
||||
Exch $R1
|
||||
FunctionEnd
|
||||
|
||||
Function ConditionalAddToRegisty
|
||||
Pop $0
|
||||
Pop $1
|
||||
StrCmp "$0" "" ConditionalAddToRegisty_EmptyString
|
||||
WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" \
|
||||
"$1" "$0"
|
||||
;MessageBox MB_OK "Set Registry: '$1' to '$0'"
|
||||
DetailPrint "Set install registry entry: '$1' to '$0'"
|
||||
ConditionalAddToRegisty_EmptyString:
|
||||
FunctionEnd
|
||||
|
||||
;--------------------------------
|
||||
|
||||
!ifdef CPACK_USES_DOWNLOAD
|
||||
Function DownloadFile
|
||||
IfFileExists $INSTDIR\* +2
|
||||
CreateDirectory $INSTDIR
|
||||
Pop $0
|
||||
|
||||
; Skip if already downloaded
|
||||
IfFileExists $INSTDIR\$0 0 +2
|
||||
Return
|
||||
|
||||
StrCpy $1 "@CPACK_DOWNLOAD_SITE@"
|
||||
|
||||
try_again:
|
||||
NSISdl::download "$1/$0" "$INSTDIR\$0"
|
||||
|
||||
Pop $1
|
||||
StrCmp $1 "success" success
|
||||
StrCmp $1 "Cancelled" cancel
|
||||
MessageBox MB_OK "Download failed: $1"
|
||||
cancel:
|
||||
Return
|
||||
success:
|
||||
FunctionEnd
|
||||
!endif
|
||||
|
||||
;--------------------------------
|
||||
; Installation types
|
||||
@CPACK_NSIS_INSTALLATION_TYPES@
|
||||
|
||||
;--------------------------------
|
||||
; Component sections
|
||||
@CPACK_NSIS_COMPONENT_SECTIONS@
|
||||
|
||||
;--------------------------------
|
||||
; Define some macro setting for the gui
|
||||
@CPACK_NSIS_INSTALLER_MUI_ICON_CODE@
|
||||
@CPACK_NSIS_INSTALLER_ICON_CODE@
|
||||
@CPACK_NSIS_INSTALLER_MUI_COMPONENTS_DESC@
|
||||
|
||||
;--------------------------------
|
||||
;Pages
|
||||
!define MUI_LANGDLL_REGISTRY_ROOT "SHCTX"
|
||||
!define MUI_LANGDLL_REGISTRY_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@"
|
||||
!define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language"
|
||||
|
||||
!insertmacro MUI_PAGE_WELCOME
|
||||
|
||||
!insertmacro MUI_PAGE_LICENSE "@CPACK_RESOURCE_FILE_LICENSE@"
|
||||
!insertmacro MUI_PAGE_DIRECTORY
|
||||
|
||||
;Start Menu Folder Page Configuration
|
||||
!define MUI_STARTMENUPAGE_REGISTRY_ROOT "SHCTX"
|
||||
!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@"
|
||||
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
|
||||
!insertmacro MUI_PAGE_STARTMENU Application $STARTMENU_FOLDER
|
||||
|
||||
@CPACK_NSIS_PAGE_COMPONENTS@
|
||||
|
||||
!insertmacro MUI_PAGE_INSTFILES
|
||||
|
||||
!define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\docs\README.txt"
|
||||
!insertmacro MUI_PAGE_FINISH
|
||||
|
||||
!insertmacro MUI_UNPAGE_CONFIRM
|
||||
!insertmacro MUI_UNPAGE_INSTFILES
|
||||
|
||||
;--------------------------------
|
||||
;Languages
|
||||
|
||||
!insertmacro MUI_LANGUAGE "Dutch"
|
||||
!insertmacro MUI_LANGUAGE "English"
|
||||
!insertmacro MUI_LANGUAGE "French"
|
||||
!insertmacro MUI_LANGUAGE "German"
|
||||
!insertmacro MUI_LANGUAGE "Italian"
|
||||
!insertmacro MUI_LANGUAGE "Portuguese"
|
||||
!insertmacro MUI_LANGUAGE "Spanish"
|
||||
|
||||
;--------------------------------
|
||||
;Installer Sections
|
||||
|
||||
Section "-Core installation"
|
||||
;Use the entire tree produced by the INSTALL target. Keep the
|
||||
;list of directories here in sync with the RMDir commands below.
|
||||
SetOutPath "$INSTDIR"
|
||||
@CPACK_NSIS_FULL_INSTALL@
|
||||
|
||||
;Store installation folder
|
||||
WriteRegStr SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "" $INSTDIR
|
||||
|
||||
;Create uninstaller
|
||||
WriteUninstaller "$INSTDIR\Uninstall.exe"
|
||||
Push "DisplayName"
|
||||
Push "@CPACK_NSIS_DISPLAY_NAME@"
|
||||
Call ConditionalAddToRegisty
|
||||
Push "DisplayVersion"
|
||||
Push "@CPACK_PACKAGE_VERSION@"
|
||||
Call ConditionalAddToRegisty
|
||||
Push "Publisher"
|
||||
Push "@CPACK_PACKAGE_VENDOR@"
|
||||
Call ConditionalAddToRegisty
|
||||
Push "UninstallString"
|
||||
Push "$INSTDIR\Uninstall.exe"
|
||||
Call ConditionalAddToRegisty
|
||||
Push "NoRepair"
|
||||
Push "1"
|
||||
Call ConditionalAddToRegisty
|
||||
|
||||
!ifdef CPACK_NSIS_ADD_REMOVE
|
||||
;Create add/remove functionality
|
||||
Push "ModifyPath"
|
||||
Push "$INSTDIR\AddRemove.exe"
|
||||
Call ConditionalAddToRegisty
|
||||
!else
|
||||
Push "NoModify"
|
||||
Push "1"
|
||||
Call ConditionalAddToRegisty
|
||||
!endif
|
||||
|
||||
; Optional registration
|
||||
Push "DisplayIcon"
|
||||
Push "$INSTDIR\@CPACK_NSIS_INSTALLED_ICON_NAME@"
|
||||
Call ConditionalAddToRegisty
|
||||
Push "HelpLink"
|
||||
Push "@CPACK_NSIS_HELP_LINK@"
|
||||
Call ConditionalAddToRegisty
|
||||
Push "URLInfoAbout"
|
||||
Push "@CPACK_NSIS_URL_INFO_ABOUT@"
|
||||
Call ConditionalAddToRegisty
|
||||
Push "Contact"
|
||||
Push "@CPACK_NSIS_CONTACT@"
|
||||
Call ConditionalAddToRegisty
|
||||
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
|
||||
|
||||
;Create shortcuts
|
||||
CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER"
|
||||
@CPACK_NSIS_CREATE_ICONS@
|
||||
@CPACK_NSIS_CREATE_ICONS_EXTRA@
|
||||
CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Uninstall.lnk" "$INSTDIR\Uninstall.exe"
|
||||
|
||||
; Write special uninstall registry entries
|
||||
Push "StartMenu"
|
||||
Push "$STARTMENU_FOLDER"
|
||||
Call ConditionalAddToRegisty
|
||||
Push "DoNotAddToPath"
|
||||
Push "$DO_NOT_ADD_TO_PATH"
|
||||
Call ConditionalAddToRegisty
|
||||
Push "AddToPathAllUsers"
|
||||
Push "$ADD_TO_PATH_ALL_USERS"
|
||||
Call ConditionalAddToRegisty
|
||||
Push "AddToPathCurrentUser"
|
||||
Push "$ADD_TO_PATH_CURRENT_USER"
|
||||
Call ConditionalAddToRegisty
|
||||
Push "InstallToDesktop"
|
||||
Push "$INSTALL_DESKTOP"
|
||||
Call ConditionalAddToRegisty
|
||||
|
||||
@CPACK_NSIS_EXTRA_INSTALL_COMMANDS@
|
||||
|
||||
!insertmacro MUI_STARTMENU_WRITE_END
|
||||
|
||||
SectionEnd
|
||||
|
||||
;--------------------------------
|
||||
; determine admin versus local install
|
||||
Function un.onInit
|
||||
|
||||
ClearErrors
|
||||
UserInfo::GetName
|
||||
IfErrors noLM
|
||||
Pop $0
|
||||
UserInfo::GetAccountType
|
||||
Pop $1
|
||||
StrCmp $1 "Admin" 0 +3
|
||||
SetShellVarContext all
|
||||
;MessageBox MB_OK 'User "$0" is in the Admin group'
|
||||
Goto done
|
||||
StrCmp $1 "Power" 0 +3
|
||||
SetShellVarContext all
|
||||
;MessageBox MB_OK 'User "$0" is in the Power Users group'
|
||||
Goto done
|
||||
|
||||
noLM:
|
||||
;Get installation folder from registry if available
|
||||
|
||||
done:
|
||||
|
||||
!insertmacro MUI_UNGETLANGUAGE
|
||||
FunctionEnd
|
||||
|
||||
;--- Add/Remove callback functions: ---
|
||||
!macro SectionList MacroName
|
||||
;This macro used to perform operation on multiple sections.
|
||||
;List all of your components in following manner here.
|
||||
@CPACK_NSIS_COMPONENT_SECTION_LIST@
|
||||
!macroend
|
||||
|
||||
Section -FinishComponents
|
||||
;Removes unselected components and writes component status to registry
|
||||
!insertmacro SectionList "FinishSection"
|
||||
|
||||
!ifdef CPACK_NSIS_ADD_REMOVE
|
||||
; Get the name of the installer executable
|
||||
System::Call 'kernel32::GetModuleFileNameA(i 0, t .R0, i 1024) i r1'
|
||||
StrCpy $R3 $R0
|
||||
|
||||
; Strip off the last 13 characters, to see if we have AddRemove.exe
|
||||
StrLen $R1 $R0
|
||||
IntOp $R1 $R0 - 13
|
||||
StrCpy $R2 $R0 13 $R1
|
||||
StrCmp $R2 "AddRemove.exe" addremove_installed
|
||||
|
||||
; We're not running AddRemove.exe, so install it
|
||||
CopyFiles $R3 $INSTDIR\AddRemove.exe
|
||||
|
||||
addremove_installed:
|
||||
!endif
|
||||
SectionEnd
|
||||
;--- End of Add/Remove callback functions ---
|
||||
|
||||
;--------------------------------
|
||||
; Component dependencies
|
||||
Function .onSelChange
|
||||
!insertmacro SectionList MaybeSelectionChanged
|
||||
FunctionEnd
|
||||
|
||||
;--------------------------------
|
||||
;Uninstaller Section
|
||||
|
||||
Section "Uninstall"
|
||||
ReadRegStr $START_MENU SHCTX \
|
||||
"Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" "StartMenu"
|
||||
;MessageBox MB_OK "Start menu is in: $START_MENU"
|
||||
ReadRegStr $DO_NOT_ADD_TO_PATH SHCTX \
|
||||
"Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" "DoNotAddToPath"
|
||||
ReadRegStr $ADD_TO_PATH_ALL_USERS SHCTX \
|
||||
"Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" "AddToPathAllUsers"
|
||||
ReadRegStr $ADD_TO_PATH_CURRENT_USER SHCTX \
|
||||
"Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" "AddToPathCurrentUser"
|
||||
;MessageBox MB_OK "Add to path: $DO_NOT_ADD_TO_PATH all users: $ADD_TO_PATH_ALL_USERS"
|
||||
ReadRegStr $INSTALL_DESKTOP SHCTX \
|
||||
"Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" "InstallToDesktop"
|
||||
;MessageBox MB_OK "Install to desktop: $INSTALL_DESKTOP "
|
||||
|
||||
@CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS@
|
||||
|
||||
;Remove files we installed.
|
||||
;Keep the list of directories here in sync with the File commands above.
|
||||
@CPACK_NSIS_DELETE_FILES@
|
||||
@CPACK_NSIS_DELETE_DIRECTORIES@
|
||||
|
||||
!ifdef CPACK_NSIS_ADD_REMOVE
|
||||
;Remove the add/remove program
|
||||
Delete "$INSTDIR\AddRemove.exe"
|
||||
!endif
|
||||
|
||||
;Remove the uninstaller itself.
|
||||
Delete "$INSTDIR\Uninstall.exe"
|
||||
DeleteRegKey SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@"
|
||||
|
||||
;Remove the installation directory if it is empty.
|
||||
RMDir "$INSTDIR"
|
||||
|
||||
; Remove the registry entries.
|
||||
DeleteRegKey SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@"
|
||||
|
||||
; Removes all optional components
|
||||
!insertmacro SectionList "RemoveSection"
|
||||
|
||||
!insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
|
||||
|
||||
Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk"
|
||||
@CPACK_NSIS_DELETE_ICONS@
|
||||
@CPACK_NSIS_DELETE_ICONS_EXTRA@
|
||||
|
||||
;Delete empty start menu parent diretories
|
||||
StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP"
|
||||
|
||||
startMenuDeleteLoop:
|
||||
ClearErrors
|
||||
RMDir $MUI_TEMP
|
||||
GetFullPathName $MUI_TEMP "$MUI_TEMP\.."
|
||||
|
||||
IfErrors startMenuDeleteLoopDone
|
||||
|
||||
StrCmp "$MUI_TEMP" "$SMPROGRAMS" startMenuDeleteLoopDone startMenuDeleteLoop
|
||||
startMenuDeleteLoopDone:
|
||||
|
||||
; If the user changed the shortcut, then untinstall may not work. This should
|
||||
; try to fix it.
|
||||
StrCpy $MUI_TEMP "$START_MENU"
|
||||
Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk"
|
||||
@CPACK_NSIS_DELETE_ICONS_EXTRA@
|
||||
|
||||
;Delete empty start menu parent diretories
|
||||
StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP"
|
||||
|
||||
secondStartMenuDeleteLoop:
|
||||
ClearErrors
|
||||
RMDir $MUI_TEMP
|
||||
GetFullPathName $MUI_TEMP "$MUI_TEMP\.."
|
||||
|
||||
IfErrors secondStartMenuDeleteLoopDone
|
||||
|
||||
StrCmp "$MUI_TEMP" "$SMPROGRAMS" secondStartMenuDeleteLoopDone secondStartMenuDeleteLoop
|
||||
secondStartMenuDeleteLoopDone:
|
||||
|
||||
DeleteRegKey /ifempty SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@"
|
||||
|
||||
Push $INSTDIR\bin
|
||||
StrCmp $DO_NOT_ADD_TO_PATH_ "1" doNotRemoveFromPath 0
|
||||
Call un.RemoveFromPath
|
||||
doNotRemoveFromPath:
|
||||
SectionEnd
|
||||
|
||||
;--------------------------------
|
||||
; determine admin versus local install
|
||||
; Is install for "AllUsers" or "JustMe"?
|
||||
; Default to "JustMe" - set to "AllUsers" if admin or on Win9x
|
||||
; This function is used for the very first "custom page" of the installer.
|
||||
; This custom page does not show up visibly, but it executes prior to the
|
||||
; first visible page and sets up $INSTDIR properly...
|
||||
; Choose different default installation folder based on SV_ALLUSERS...
|
||||
; "Program Files" for AllUsers, "My Documents" for JustMe...
|
||||
|
||||
Function .onInit
|
||||
!insertmacro MUI_LANGDLL_DISPLAY
|
||||
; Reads components status for registry
|
||||
!insertmacro SectionList "InitSection"
|
||||
|
||||
StrCpy $SV_ALLUSERS "JustMe"
|
||||
StrCpy $INSTDIR "$DOCUMENTS\@CPACK_PACKAGE_INSTALL_DIRECTORY@"
|
||||
|
||||
ClearErrors
|
||||
UserInfo::GetName
|
||||
IfErrors noLM
|
||||
Pop $0
|
||||
UserInfo::GetAccountType
|
||||
Pop $1
|
||||
StrCmp $1 "Admin" 0 +3
|
||||
SetShellVarContext all
|
||||
;MessageBox MB_OK 'User "$0" is in the Admin group'
|
||||
StrCpy $SV_ALLUSERS "AllUsers"
|
||||
Goto done
|
||||
StrCmp $1 "Power" 0 +3
|
||||
SetShellVarContext all
|
||||
;MessageBox MB_OK 'User "$0" is in the Power Users group'
|
||||
StrCpy $SV_ALLUSERS "AllUsers"
|
||||
Goto done
|
||||
|
||||
noLM:
|
||||
StrCpy $SV_ALLUSERS "AllUsers"
|
||||
;Get installation folder from registry if available
|
||||
|
||||
done:
|
||||
StrCmp $SV_ALLUSERS "AllUsers" 0 +2
|
||||
StrCpy $INSTDIR "$PROGRAMFILES\@CPACK_PACKAGE_INSTALL_DIRECTORY@"
|
||||
|
||||
FunctionEnd
|
||||
@@ -1,119 +0,0 @@
|
||||
Legend:
|
||||
x = done
|
||||
? = unsure
|
||||
+ = in progress
|
||||
|
||||
1.9.0
|
||||
-----
|
||||
[x] additional field where users' masked host can be stored so both masked IP and vhost are available instead of just one.
|
||||
[x] no struct Uid bollocks. that's insane, and now, unnecessary that we store UID in BotInfo.
|
||||
[x] prevent deletion of core services via /bs bot
|
||||
[x] Module subsystem cleanup ('modules' branch)
|
||||
[x] Move modules to use classes somewhat (AnopeInit, AnopeFini)
|
||||
[x] Change MODULE_INIT to return a pointer
|
||||
[x] Remove duplicate module creation.. have loadModule return a pointer rather than creating one
|
||||
[x] Remove buffered loading/unloading, this makes os_modunload perm, but who cares
|
||||
[x] Mark os_modunload permanent.
|
||||
[x] Remove 'delayed' loading, this is necessary because of before/after connected to ircd (ircd is before, rest after), I'm sure this can be done better.
|
||||
[x] Remove mod_current_* crap (involves passing Module * around a lot)
|
||||
[x] events.c
|
||||
[x] modules.c
|
||||
[x] commands.c
|
||||
[x] Redo moduleAdd|Get|Remove data to use class Extensible, etc.
|
||||
[x] remove old config, replace with insp-inspired (albeit bind format) config (CBX)
|
||||
[x] Clean up protocol
|
||||
[x] Fix anope_cmd_* stuff to just use IRCdProto methods directly
|
||||
[x] SendClientIntroduction should take a UID param, rather than generating one(?)
|
||||
[x] Fix permanent channels (+P) stuff.
|
||||
[x] Remove UnRestrictSAdmin, UseTS6, UseSVSHOLD
|
||||
[x] InspIRCd 1.2 support
|
||||
[x] Remove old (prior to 1.8.0) db compat
|
||||
[x] Establish a proper base for services pseudoclients
|
||||
[x] add ss_main StatServ Hal9000 to play with :)
|
||||
[x] burn automake with fire (CBX)
|
||||
|
||||
1.9.1
|
||||
-----
|
||||
[ ] Remove modules_unload_all fini + hack that goes with it
|
||||
[ ] signal handling cleanup
|
||||
[ ] Move a (lot) of stuff to class members as a defined interface rather than copypasta everywhere (ns_set, ns_saset!)
|
||||
[ ] Redo database insanity.
|
||||
[ ] Move database load/save to a module
|
||||
[ ] realtime SQL/whatever module using events
|
||||
[ ] flatfile save on a periodic timer
|
||||
[ ] SANE password encryption - prefix password with the method it was encrypted with, allowing for *seamless* upgrading to different methods
|
||||
[ ] Salted SHA256 (contact Special for this)
|
||||
[ ] New database format (text, not binary - works very well for merging and so on)
|
||||
[ ] burn do_sjoin with fire
|
||||
[ ] Seamless fantasy support for all ChanServ commands, instead of requiring bs_fantasy_*
|
||||
[ ] HelpServ must die (1.9.1?)
|
||||
[ ] Command parser cleanup
|
||||
[ ] mod_current_buffer needs to go away and be replaced by a proper parser. Commands should then indicate how they want the buffer split.
|
||||
[ ] Fix permanent channels support properly. This will require removing do_sjoin().
|
||||
[ ] Make NS ENFORCE/RELEASE stuff more sane, redo timers
|
||||
[ ] Add support for +k, +q, etc type umodes
|
||||
|
||||
1.9.2
|
||||
-----
|
||||
[ ] Socket subsystem needs some serious loving
|
||||
[ ] Multiple sockets
|
||||
[ ] Asynchronous, using select() (multiple engines? not really needed..)
|
||||
[ ] Callbacks, event style, see also inspircd
|
||||
[ ] Asynchronous DNS?
|
||||
[ ] CS SET INHABIT to keep pseudoclient in a channel after it empties to maintain banlists and such
|
||||
[?] Remote identification (1.9.1? will this break stuff?)
|
||||
[ ] Requires a rejig of how Alias vs Core works
|
||||
[ ] Language charset stuff, including collation (1.9.1? phoenix?)
|
||||
|
||||
Future
|
||||
------
|
||||
[ ] way for one module to depend on another... not like 2 MOD_HEADs and it being unpredictable which is loaded first..
|
||||
the MOD_HEAD MOD_TAIL allows for too few combinations (interface code of insp, hooks code of insp?)
|
||||
[ ] generic database routines modules can use to create their own database
|
||||
[ ] generic way to check which modes a user has set (u->HasUmode(UMODE_OPER))
|
||||
? [ ] a way for a module to queue itself (or even another module) for unloading
|
||||
[ ] add overridden form of SendGlobops accepting BotInfo
|
||||
[ ] SendAkill should just take a pointer to the Akill class instead of millions of fields (same for some other stuff)
|
||||
[ ] chan_set_modes should take BotInfo, possibly with override for User *?
|
||||
[ ] Language system is disgusting, it must die.
|
||||
[ ] Modules should also have a way to add strings programatically
|
||||
[ ] Should be able to add many strings by dropping a file in a set location.
|
||||
[ ] I forsee this working via a function rather than defines, as it seems to do now: e.g. _("NS_NICK_IS_REGISTERED").
|
||||
[?] Mail memos? think on consequences of this
|
||||
[ ] Useful/common "third party" modules to core distro
|
||||
[ ] NS AJOIN
|
||||
[ ] Last used time on AKICK/access entries
|
||||
[ ] Channel access additions
|
||||
[ ] Method to store listmodes (more generically than AKICK, too) for e.g. +beI and extbans, etc.
|
||||
[ ] Setter
|
||||
[ ] Time added
|
||||
[ ] Time modified
|
||||
[ ] Expiry (useful?)
|
||||
[ ] Set forbidden channels +s
|
||||
[ ] NS INFO: seperate field for last seen realhost, shown to SRA only
|
||||
[ ] NS SUSPEND: show suspender and reason, probably to sopers only (see CS SUSPEND)
|
||||
XXX: is SUSPEND overlapping with OS IGNORE functionality?
|
||||
[ ] Merge NS INFO blah ALL with NS INFO blah, if you're requesting info, you really want the info anyway.
|
||||
? [ ] Channel passwords seem to be of limited use, think of a more appropriate way to handle this
|
||||
? [ ] Don't allow soper accounts to expire
|
||||
? [ ] Reason for CS SET RESTRICTED
|
||||
[ ] NS IDENTIFY changes
|
||||
? [ ] Last failed identify? Maybe more useful for sopers only, so users don't get unnecessarily worried
|
||||
? [ ] Last successful login time/ip? perhaps both of these should be a new nick setting
|
||||
[ ] AKILL/SGLINE/etc..
|
||||
[ ] Setter
|
||||
[ ] Time added
|
||||
[ ] Time modified (can they be modified?)
|
||||
[ ] Time until expiry/expiry time (YES, time until expiry *instead of* expiry time, more human)
|
||||
[ ] Reason
|
||||
[ ] Unique IDs on each AKILL/blah so that networks may use them as ticket IDs
|
||||
[ ] HS ACTIVATE -ALL (rob sez this all needs reviewing)
|
||||
[ ] Settable oper flags (split into types containing privs+commands, allow each oper to be set to a type, like we do with insp?)
|
||||
[ ] NS MARK, CS MARK. Allow multiple marks. Combine into OS MARK?
|
||||
[ ] General options block, ability to turn LOGCHAN on from the config file..
|
||||
[ ] Method to list suspended/forbidden nicks/channels?
|
||||
? [ ] MS IGNORE. Make it take nick (accounts) or n!u@h masks. Fake success of memo send still, but send to opers?
|
||||
? [ ] More "friendly" date displays of some things like registration time ("November 7th 2006 (2 years, 0 months, 0 days ago)")
|
||||
? [ ] Review settings like NSModeOnID for whether they actually have a point existing (Rob says it does not - and that it should probably be a nickname setting)
|
||||
? [ ] OS INJECT
|
||||
? [ ] Drop CS SET ENTRYMSG, replace with a 'news' type system? (limited to a configured number of items, default 3)
|
||||
Vendored
+24
-32
@@ -835,37 +835,29 @@ dnl Check the size of several types and define a valid int16_t and int32_t.
|
||||
dnl
|
||||
AC_DEFUN(anope_CHECK_TYPE_SIZES,
|
||||
[dnl Check type sizes
|
||||
dnl AC_CHECK_SIZEOF(short)
|
||||
dnl AC_CHECK_SIZEOF(int)
|
||||
dnl AC_CHECK_SIZEOF(long)
|
||||
dnl if test "$ac_cv_sizeof_int" = 2 ; then
|
||||
dnl AC_CHECK_TYPE(int16_t, int)
|
||||
dnl AC_CHECK_TYPE(u_int16_t, unsigned int)
|
||||
dnl elif test "$ac_cv_sizeof_short" = 2 ; then
|
||||
dnl AC_CHECK_TYPE(int16_t, short)
|
||||
dnl AC_CHECK_TYPE(u_int16_t, unsigned short)
|
||||
dnl else
|
||||
dnl AC_MSG_ERROR([Cannot find a type with size of 16 bits])
|
||||
dnl fi
|
||||
dnl if test "$ac_cv_sizeof_int" = 4 ; then
|
||||
dnl AC_CHECK_TYPE(int32_t, int)
|
||||
dnl AC_CHECK_TYPE(u_int32_t, unsigned int)
|
||||
dnl elif test "$ac_cv_sizeof_short" = 4 ; then
|
||||
dnl AC_CHECK_TYPE(int32_t, short)
|
||||
dnl AC_CHECK_TYPE(u_int32_t, unsigned short)
|
||||
dnl elif test "$ac_cv_sizeof_long" = 4 ; then
|
||||
dnl AC_CHECK_TYPE(int32_t, long)
|
||||
dnl AC_CHECK_TYPE(u_int32_t, unsigned long)
|
||||
dnl else
|
||||
dnl AC_MSG_ERROR([Cannot find a type with size of 32 bits])
|
||||
dnl fi
|
||||
AC_CHECK_TYPE(uint8_t, AC_DEFINE(HAVE_UINT8_T, 1, "Has uint8_t type"))
|
||||
AC_CHECK_TYPE(u_int8_t, AC_DEFINE(HAVE_U_INT8_T, 1, "Has u_int8_t type"))
|
||||
AC_CHECK_TYPE(int16_t, AC_DEFINE(HAVE_INT16_T, 1, "Has int16_t type"))
|
||||
AC_CHECK_TYPE(uint16_t, AC_DEFINE(HAVE_UINT16_T, 1, "Has uint16_t type"))
|
||||
AC_CHECK_TYPE(u_int16_t, AC_DEFINE(HAVE_U_INT16_T, 1, "Has u_int16_t type"))
|
||||
AC_CHECK_TYPE(int32_t, AC_DEFINE(HAVE_INT32_T, 1, "Has int32_t type"))
|
||||
AC_CHECK_TYPE(uint32_t, AC_DEFINE(HAVE_UINT32_T, 1, "Has uint32_t type"))
|
||||
AC_CHECK_TYPE(u_int32_t, AC_DEFINE(HAVE_U_INT32_T, 1, "Has u_int32_t type"))
|
||||
AC_CHECK_SIZEOF(short)
|
||||
AC_CHECK_SIZEOF(int)
|
||||
AC_CHECK_SIZEOF(long)
|
||||
if test "$ac_cv_sizeof_int" = 2 ; then
|
||||
AC_CHECK_TYPE(int16_t, int)
|
||||
AC_CHECK_TYPE(u_int16_t, unsigned int)
|
||||
elif test "$ac_cv_sizeof_short" = 2 ; then
|
||||
AC_CHECK_TYPE(int16_t, short)
|
||||
AC_CHECK_TYPE(u_int16_t, unsigned short)
|
||||
else
|
||||
AC_MSG_ERROR([Cannot find a type with size of 16 bits])
|
||||
fi
|
||||
if test "$ac_cv_sizeof_int" = 4 ; then
|
||||
AC_CHECK_TYPE(int32_t, int)
|
||||
AC_CHECK_TYPE(u_int32_t, unsigned int)
|
||||
elif test "$ac_cv_sizeof_short" = 4 ; then
|
||||
AC_CHECK_TYPE(int32_t, short)
|
||||
AC_CHECK_TYPE(u_int32_t, unsigned short)
|
||||
elif test "$ac_cv_sizeof_long" = 4 ; then
|
||||
AC_CHECK_TYPE(int32_t, long)
|
||||
AC_CHECK_TYPE(u_int32_t, unsigned long)
|
||||
else
|
||||
AC_MSG_ERROR([Cannot find a type with size of 32 bits])
|
||||
fi
|
||||
])
|
||||
|
||||
|
||||
@@ -4,36 +4,28 @@ dnl Check the size of several types and define a valid int16_t and int32_t.
|
||||
dnl
|
||||
AC_DEFUN(anope_CHECK_TYPE_SIZES,
|
||||
[dnl Check type sizes
|
||||
dnl AC_CHECK_SIZEOF(short)
|
||||
dnl AC_CHECK_SIZEOF(int)
|
||||
dnl AC_CHECK_SIZEOF(long)
|
||||
dnl if test "$ac_cv_sizeof_int" = 2 ; then
|
||||
dnl AC_CHECK_TYPE(int16_t, int)
|
||||
dnl AC_CHECK_TYPE(u_int16_t, unsigned int)
|
||||
dnl elif test "$ac_cv_sizeof_short" = 2 ; then
|
||||
dnl AC_CHECK_TYPE(int16_t, short)
|
||||
dnl AC_CHECK_TYPE(u_int16_t, unsigned short)
|
||||
dnl else
|
||||
dnl AC_MSG_ERROR([Cannot find a type with size of 16 bits])
|
||||
dnl fi
|
||||
dnl if test "$ac_cv_sizeof_int" = 4 ; then
|
||||
dnl AC_CHECK_TYPE(int32_t, int)
|
||||
dnl AC_CHECK_TYPE(u_int32_t, unsigned int)
|
||||
dnl elif test "$ac_cv_sizeof_short" = 4 ; then
|
||||
dnl AC_CHECK_TYPE(int32_t, short)
|
||||
dnl AC_CHECK_TYPE(u_int32_t, unsigned short)
|
||||
dnl elif test "$ac_cv_sizeof_long" = 4 ; then
|
||||
dnl AC_CHECK_TYPE(int32_t, long)
|
||||
dnl AC_CHECK_TYPE(u_int32_t, unsigned long)
|
||||
dnl else
|
||||
dnl AC_MSG_ERROR([Cannot find a type with size of 32 bits])
|
||||
dnl fi
|
||||
AC_CHECK_TYPE(uint8_t, AC_DEFINE(HAVE_UINT8_T, 1, "Has uint8_t type"))
|
||||
AC_CHECK_TYPE(u_int8_t, AC_DEFINE(HAVE_U_INT8_T, 1, "Has u_int8_t type"))
|
||||
AC_CHECK_TYPE(int16_t, AC_DEFINE(HAVE_INT16_T, 1, "Has int16_t type"))
|
||||
AC_CHECK_TYPE(uint16_t, AC_DEFINE(HAVE_UINT16_T, 1, "Has uint16_t type"))
|
||||
AC_CHECK_TYPE(u_int16_t, AC_DEFINE(HAVE_U_INT16_T, 1, "Has u_int16_t type"))
|
||||
AC_CHECK_TYPE(int32_t, AC_DEFINE(HAVE_INT32_T, 1, "Has int32_t type"))
|
||||
AC_CHECK_TYPE(uint32_t, AC_DEFINE(HAVE_UINT32_T, 1, "Has uint32_t type"))
|
||||
AC_CHECK_TYPE(u_int32_t, AC_DEFINE(HAVE_U_INT32_T, 1, "Has u_int32_t type"))
|
||||
AC_CHECK_SIZEOF(short)
|
||||
AC_CHECK_SIZEOF(int)
|
||||
AC_CHECK_SIZEOF(long)
|
||||
if test "$ac_cv_sizeof_int" = 2 ; then
|
||||
AC_CHECK_TYPE(int16_t, int)
|
||||
AC_CHECK_TYPE(u_int16_t, unsigned int)
|
||||
elif test "$ac_cv_sizeof_short" = 2 ; then
|
||||
AC_CHECK_TYPE(int16_t, short)
|
||||
AC_CHECK_TYPE(u_int16_t, unsigned short)
|
||||
else
|
||||
AC_MSG_ERROR([Cannot find a type with size of 16 bits])
|
||||
fi
|
||||
if test "$ac_cv_sizeof_int" = 4 ; then
|
||||
AC_CHECK_TYPE(int32_t, int)
|
||||
AC_CHECK_TYPE(u_int32_t, unsigned int)
|
||||
elif test "$ac_cv_sizeof_short" = 4 ; then
|
||||
AC_CHECK_TYPE(int32_t, short)
|
||||
AC_CHECK_TYPE(u_int32_t, unsigned short)
|
||||
elif test "$ac_cv_sizeof_long" = 4 ; then
|
||||
AC_CHECK_TYPE(int32_t, long)
|
||||
AC_CHECK_TYPE(u_int32_t, unsigned long)
|
||||
else
|
||||
AC_MSG_ERROR([Cannot find a type with size of 32 bits])
|
||||
fi
|
||||
])
|
||||
|
||||
-13
@@ -1,13 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
echo "Generating build information using aclocal, autoheader, automake and autoconf."
|
||||
echo
|
||||
|
||||
# Regerate configuration files
|
||||
aclocal
|
||||
autoheader
|
||||
automake --gnu --add-missing --copy
|
||||
autoconf
|
||||
|
||||
echo
|
||||
echo "Now you are ready to run ./configure"
|
||||
+51
-35
@@ -1,21 +1,18 @@
|
||||
dnl autoconf.in for Services.
|
||||
dnl
|
||||
dnl Anope (c) 2003-2008 Anope team
|
||||
dnl Anope (c) 2003-2014 Anope Team
|
||||
dnl Contact us at team@anope.org
|
||||
|
||||
dnl This program is free but copyrighted software; see the file COPYING for
|
||||
dnl details.
|
||||
|
||||
|
||||
dnl Based heavily on the Unreal configure.in script, and extra thanks to
|
||||
dnl codemastr from UnrealIRCD.
|
||||
|
||||
AC_INIT
|
||||
|
||||
# Clear out any CFLAGS (cept -g) the os is using, usually -g -O2
|
||||
CFLAGS="-g"
|
||||
|
||||
# If no bindir, we tell him to run ./Config.
|
||||
if test "${with_instdir+set}" != set; then
|
||||
if test "${with_bindir+set}" != set || test "${with_datadir+set}" != set; then
|
||||
echo "You might want to run ./Config or provide some parameters to this script."
|
||||
echo "./configure --help for information about this script"
|
||||
exit 0
|
||||
@@ -68,7 +65,7 @@ AC_CACHE_VAL(ac_cv_valistisarray,
|
||||
}
|
||||
int main()
|
||||
{ foo(0, 123); return(0); }]])],[ac_cv_valistisarray=false],[ac_cv_valistisarray=true],[ac_cv_valistisarray=false])])
|
||||
|
||||
|
||||
if test "$ac_cv_valistisarray" = true ; then
|
||||
AC_DEFINE(HAVE_VA_LIST_AS_ARRAY,[1],[va_list as array])
|
||||
AC_MSG_RESULT(yes)
|
||||
@@ -102,55 +99,71 @@ AC_ARG_WITH(mysql, [ --without-mysql Do not use MySQL or attempt to fin
|
||||
fi
|
||||
CFLAGS="$CFLAGS $MYSQL_CFLAGS"
|
||||
LDFLAGS="$LDFLAGS $MYSQL_LDFLAGS"
|
||||
LIBS="$MYSQL_LDFLAGS"
|
||||
echo $ECHO_N "checking if mysql_config produces valid values... $ECHO_C" >&6
|
||||
AC_TRY_RUN([
|
||||
AC_RUN_IFELSE([AC_LANG_SOURCE([[
|
||||
#include <mysql.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
MYSQL *mysql = mysql_init(0);
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
], ac_cv_mysql_valid=yes, ac_cv_mysql_valid=no)
|
||||
]])],[ac_cv_mysql_valid=yes],[ac_cv_mysql_valid=no],[])
|
||||
echo $ac_cv_mysql_valid >&6
|
||||
if test "$ac_cv_mysql_valid" = "yes"; then
|
||||
AC_DEFINE_UNQUOTED(USE_MYSQL,1,"Use Mysql")
|
||||
AC_DEFINE_UNQUOTED(USE_RDB,1,"Use RDB")
|
||||
MYSQL=" mysql.c "
|
||||
RDB=" rdb.c "
|
||||
AC_SUBST(MYSQL)
|
||||
AC_SUBST(RDB)
|
||||
DIS_MYSQL=" MySQL: Yes"
|
||||
else
|
||||
CFLAGS="$hold_cflags"
|
||||
LDFLAGS="$hold_ldflags"
|
||||
LIBS=""
|
||||
fi
|
||||
fi
|
||||
])
|
||||
|
||||
AC_MSG_CHECKING(whether this is a bit or little endian system)
|
||||
AC_TRY_RUN([
|
||||
AC_RUN_IFELSE([AC_LANG_SOURCE([[
|
||||
int main()
|
||||
{
|
||||
short s = 1;
|
||||
short* ptr = &s;
|
||||
unsigned char c = *((char*)ptr);
|
||||
return c;
|
||||
return c;
|
||||
}
|
||||
]
|
||||
, AC_DEFINE(BIG_ENDIAN)
|
||||
|
||||
]])],[AC_DEFINE(BIG_ENDIAN)
|
||||
AC_MSG_RESULT(big)
|
||||
, AC_DEFINE(LITTLE_ENDIAN)
|
||||
],[AC_DEFINE(LITTLE_ENDIAN)
|
||||
AC_MSG_RESULT(little)
|
||||
)
|
||||
],[])
|
||||
|
||||
AC_SUBST(ANOPELIBS)
|
||||
AC_SUBST(LDFLAGS)
|
||||
|
||||
AC_CHECK_HEADER(sys/types.h,AC_DEFINE(HAS_SYS_TYPES_H,1,"Has sys/types.h"))
|
||||
|
||||
DIS_MODULES="Modules: Yes"
|
||||
|
||||
dnl module checking based on Unreal's module checking code
|
||||
AC_DEFUN(AC_ENABLE_DYN,
|
||||
[
|
||||
AC_CHECK_FUNC(dlopen,, AC_CHECK_LIB(dl,dlopen,[
|
||||
ANOPELIBS="$ANOPELIBS -ldl"
|
||||
AC_DEFINE(USE_MODULES,1,"Modules are available")
|
||||
USE_MODULES="yes"
|
||||
DIS_MODULES="Modules: Yes"
|
||||
],
|
||||
[
|
||||
AC_ERROR("dlopen() is required for Anope to be compiled and used. Sorry.")
|
||||
AC_MSG_WARN(Dynamic linking is not enabled because dlopen was not found)
|
||||
AC_DEFINE(STATIC_LINKING,"NO_MODULES","modules not available")
|
||||
DIS_MODULES="Modules: No"
|
||||
]))
|
||||
|
||||
hold_cflags=$CFLAGS
|
||||
@@ -219,6 +232,7 @@ fi
|
||||
|
||||
MODULEFLAGS=$ac_cv_pic
|
||||
AC_SUBST(MODULEFLAGS)
|
||||
AC_DEFINE(USE_MODULES,1,"Modules available")
|
||||
])
|
||||
|
||||
AC_ENABLE_DYN
|
||||
@@ -228,8 +242,14 @@ AC_CHECK_HEADER(strings.h,AC_DEFINE(HAVE_STRINGS_H,1,""))
|
||||
AC_CHECK_HEADER(sys/select.h,AC_DEFINE(HAVE_SYS_SELECT_H,1,""))
|
||||
|
||||
AC_CHECK_FUNCS(backtrace,AC_DEFINE(HAVE_BACKTRACE,1))
|
||||
AC_CHECK_FUNCS(strerror,AC_DEFINE(HAVE_STRERROR,1))
|
||||
AC_CHECK_FUNCS(sys_errlist,AC_DEFINE(HAVE_SYS_ERRLIST,1))
|
||||
AC_CHECK_FUNCS(snprintf,AC_DEFINE(HAVE_SNPRINTF,1))
|
||||
AC_CHECK_FUNCS(stricmp,AC_DEFINE(HAVE_STRICMP,1))
|
||||
AC_CHECK_FUNCS(strcasecmp,AC_DEFINE(HAVE_STRCASECMP,1))
|
||||
AC_CHECK_FUNCS(strdup,AC_DEFINE(HAVE_STRDUP,1))
|
||||
AC_CHECK_FUNCS(strspn,AC_DEFINE(HAVE_STRSPN,1))
|
||||
AC_CHECK_FUNCS(strsignal,AC_DEFINE(HAVE_STRSIGNAL,1))
|
||||
AC_CHECK_FUNCS(gettimeofday,AC_DEFINE(HAVE_GETTIMEOFDAY,1))
|
||||
AC_CHECK_FUNCS(setgrent,AC_DEFINE(HAVE_SETGRENT,1))
|
||||
AC_CHECK_FUNCS(umask,AC_DEFINE(HAVE_UMASK,1))
|
||||
@@ -239,36 +259,34 @@ AC_CHECK_FUNCS(gethostbyname_r,AC_DEFINE(HAVE_GETHOSTBYNAME_R,1))
|
||||
AC_CHECK_FUNCS(strlcpy,AC_DEFINE(HAVE_STRLCPY,1))
|
||||
AC_CHECK_FUNCS(strlcat,AC_DEFINE(HAVE_STRLCAT,1))
|
||||
|
||||
AC_ARG_WITH(rungroup, [ --with-rungroup=group Specify the rungroup for anope], [
|
||||
AC_ARG_WITH(rungroup, [ --with-rungroup=group Specify the rungroup for anope], [
|
||||
AC_DEFINE_UNQUOTED(RUNGROUP,"$withval","Run group")
|
||||
RUNGROUP=$withval
|
||||
])
|
||||
|
||||
AC_SUBST(RUNGROUP)
|
||||
|
||||
dnl AC_DEFINE_UNQUOTED(MYOSNAME,"`uname -a`","uname")
|
||||
|
||||
AC_ARG_WITH(permissions, [ --with-permissions=permissions Specify the default permissions for anope], AC_DEFINE_UNQUOTED(DEFUMASK,$withval,"Default umask permissions"), AC_DEFINE(DEFUMASK, 007,"Default umask Permissions"))
|
||||
|
||||
AC_ARG_WITH(instdir, [ --with-instdir=instdir Specify the default install dir for anope], [
|
||||
INSTDIR=$withval
|
||||
AC_ARG_WITH(bindir, [ --with-bindir=bindir Specify the default binary dir for anope], [
|
||||
AC_DEFINE_UNQUOTED(SERVICES_BIN,"${withval}/services","Binary Dir")
|
||||
BINDEST=$withval
|
||||
DATDEST=$withval
|
||||
MODULE_PATH=${withval}/modules/
|
||||
])
|
||||
|
||||
MAKEBIN=`pwd`/run-cc.pl
|
||||
AC_SUBST(BINDEST)
|
||||
|
||||
AC_ARG_WITH(makebin, [--with-makebin=run-cc.pl Specify the default make binary to use],[MAKEBIN=$withval])
|
||||
|
||||
AC_SUBST(INSTDIR)
|
||||
AC_SUBST(MAKEBIN)
|
||||
|
||||
AC_ARG_WITH(optimization, [ --with-optimization=1|2|3|4|5 Specify the optimization level], [
|
||||
CFLAGS="$CFLAGS -O$withval"
|
||||
])
|
||||
|
||||
AC_ARG_WITH(debugsym, [ --with-debugsym Include debugging symbols], [
|
||||
CFLAGS="$CFLAGS -g"
|
||||
AC_ARG_WITH(datadir, [ --with-datadir=datadir Specify the location of the services data folder], [
|
||||
AC_DEFINE_UNQUOTED(SERVICES_DIR,"$withval","services bin dir")
|
||||
AC_DEFINE_UNQUOTED(MODULE_PATH,"${withval}/modules/","Module dir")
|
||||
DATDEST=$withval
|
||||
MODULE_PATH=${withval}/modules/
|
||||
])
|
||||
|
||||
AC_SUBST(DATDEST)
|
||||
AC_SUBST(MODULE_PATH)
|
||||
|
||||
AC_CONFIG_FILES( \
|
||||
Makefile \
|
||||
@@ -282,8 +300,6 @@ cat <<EOT
|
||||
$DIS_MODULES
|
||||
$DIS_MYSQL
|
||||
|
||||
|
||||
|
||||
All done! Now run "make" (or possibly "gmake") to compile Anope.
|
||||
See the INSTALL, README and FAQ files if you have any problems.
|
||||
EOT
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
# Only install example.chk and example.conf from this directory
|
||||
# NOTE: I would've had this just find all files in the directory, but that would include files not needed (like this file)
|
||||
set(DATA example.chk example.conf)
|
||||
install(FILES ${DATA}
|
||||
DESTINATION data
|
||||
)
|
||||
+1620
-1520
File diff suppressed because it is too large
Load Diff
+432
@@ -0,0 +1,432 @@
|
||||
|
||||
-- If you need to create your db, uncomment the following lines.
|
||||
--
|
||||
-- CREATE DATABASE anope;
|
||||
-- USE anope;
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_bs_core'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_bs_core;
|
||||
CREATE TABLE anope_bs_core (
|
||||
bs_id int(11) NOT NULL auto_increment,
|
||||
nick varchar(255) NOT NULL default '',
|
||||
`user` text NOT NULL,
|
||||
host text NOT NULL,
|
||||
rname text NOT NULL,
|
||||
flags int(11) NOT NULL default '0',
|
||||
created int(11) NOT NULL default '0',
|
||||
chancount int(11) NOT NULL default '0',
|
||||
active int(1) NOT NULL default '1',
|
||||
PRIMARY KEY (bs_id),
|
||||
UNIQUE KEY nick (nick)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_cs_access'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_cs_access;
|
||||
CREATE TABLE anope_cs_access (
|
||||
ca_id int(11) NOT NULL auto_increment,
|
||||
in_use int(11) NOT NULL default '0',
|
||||
`level` int(11) NOT NULL default '0',
|
||||
display varchar(255) NOT NULL default '',
|
||||
channel varchar(255) NOT NULL default '',
|
||||
last_seen int(11) NOT NULL default '0',
|
||||
active tinyint(1) NOT NULL default '1',
|
||||
PRIMARY KEY (ca_id),
|
||||
UNIQUE KEY channel (channel,display)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_cs_akicks'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_cs_akicks;
|
||||
CREATE TABLE anope_cs_akicks (
|
||||
ck_id int(11) NOT NULL auto_increment,
|
||||
channel varchar(255) NOT NULL default '',
|
||||
flags int(11) NOT NULL default '0',
|
||||
dmask varchar(255) NOT NULL,
|
||||
reason text NOT NULL,
|
||||
creator text NOT NULL,
|
||||
addtime int(11) NOT NULL default '0',
|
||||
active tinyint(1) NOT NULL default '1',
|
||||
PRIMARY KEY (ck_id),
|
||||
UNIQUE KEY channel (channel,dmask)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_cs_badwords'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_cs_badwords;
|
||||
CREATE TABLE anope_cs_badwords (
|
||||
cw_id int(11) NOT NULL auto_increment,
|
||||
channel varchar(255) NOT NULL default '',
|
||||
word varchar(255) NOT NULL,
|
||||
`type` int(11) NOT NULL default '0',
|
||||
active tinyint(1) NOT NULL default '1',
|
||||
PRIMARY KEY (cw_id),
|
||||
UNIQUE KEY channel (channel,word)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_cs_info'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_cs_info;
|
||||
CREATE TABLE anope_cs_info (
|
||||
ci_id int(11) NOT NULL auto_increment,
|
||||
`name` varchar(255) NOT NULL default '',
|
||||
founder text NOT NULL,
|
||||
successor text NOT NULL,
|
||||
founderpass tinyblob NOT NULL,
|
||||
descr text NOT NULL,
|
||||
url text NOT NULL,
|
||||
email text NOT NULL,
|
||||
time_registered int(10) unsigned NOT NULL default '0',
|
||||
last_used int(10) unsigned NOT NULL default '0',
|
||||
last_topic text NOT NULL,
|
||||
last_topic_setter text NOT NULL,
|
||||
last_topic_time int(10) unsigned NOT NULL default '0',
|
||||
flags int(10) unsigned NOT NULL default '0',
|
||||
forbidby text NOT NULL,
|
||||
forbidreason text NOT NULL,
|
||||
bantype smallint(6) NOT NULL default '0',
|
||||
accesscount smallint(6) NOT NULL default '0',
|
||||
akickcount smallint(6) NOT NULL default '0',
|
||||
mlock_on int(10) unsigned NOT NULL default '0',
|
||||
mlock_off int(10) unsigned NOT NULL default '0',
|
||||
mlock_limit int(10) unsigned NOT NULL default '0',
|
||||
mlock_key text NOT NULL,
|
||||
mlock_flood text NOT NULL,
|
||||
mlock_redirect text NOT NULL,
|
||||
entry_message text NOT NULL,
|
||||
memomax smallint(5) unsigned NOT NULL default '0',
|
||||
botnick varchar(255) NOT NULL default '',
|
||||
botflags int(10) unsigned NOT NULL default '0',
|
||||
bwcount smallint(6) NOT NULL default '0',
|
||||
capsmin smallint(6) NOT NULL default '0',
|
||||
capspercent smallint(6) NOT NULL default '0',
|
||||
floodlines smallint(6) NOT NULL default '0',
|
||||
floodsecs smallint(6) NOT NULL default '0',
|
||||
repeattimes smallint(6) NOT NULL default '0',
|
||||
active tinyint(1) NOT NULL default '1',
|
||||
PRIMARY KEY (ci_id),
|
||||
UNIQUE KEY `name` (`name`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_cs_levels'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_cs_levels;
|
||||
CREATE TABLE anope_cs_levels (
|
||||
cl_id int(11) NOT NULL auto_increment,
|
||||
channel varchar(255) NOT NULL default '',
|
||||
position int(11) NOT NULL default '0',
|
||||
`level` int(11) NOT NULL default '0',
|
||||
active tinyint(1) NOT NULL default '1',
|
||||
PRIMARY KEY (cl_id),
|
||||
UNIQUE KEY channel (channel,position)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_cs_ttb'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_cs_ttb;
|
||||
CREATE TABLE anope_cs_ttb (
|
||||
ct_id int(11) NOT NULL auto_increment,
|
||||
channel varchar(255) NOT NULL default '',
|
||||
ttb_id int(11) NOT NULL default '0',
|
||||
`value` int(11) NOT NULL default '0',
|
||||
active tinyint(1) NOT NULL default '1',
|
||||
PRIMARY KEY (ct_id),
|
||||
UNIQUE KEY channel (channel,ttb_id)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_hs_core'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_hs_core;
|
||||
CREATE TABLE anope_hs_core (
|
||||
bs_id int(11) NOT NULL auto_increment,
|
||||
nick varchar(255) NOT NULL default '',
|
||||
vident text NOT NULL,
|
||||
vhost text NOT NULL,
|
||||
creator text NOT NULL,
|
||||
`time` int(11) NOT NULL default '0',
|
||||
active tinyint(1) NOT NULL default '1',
|
||||
PRIMARY KEY (bs_id),
|
||||
UNIQUE KEY nick (nick)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_info'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_info;
|
||||
CREATE TABLE anope_info (
|
||||
version int(11) default NULL,
|
||||
`date` datetime default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_ms_info'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_ms_info;
|
||||
CREATE TABLE anope_ms_info (
|
||||
nm_id int(11) NOT NULL auto_increment,
|
||||
receiver varchar(255) NOT NULL,
|
||||
number int(11) NOT NULL default '0',
|
||||
flags int(11) NOT NULL default '0',
|
||||
`time` int(11) NOT NULL default '0',
|
||||
sender text NOT NULL,
|
||||
`text` blob NOT NULL,
|
||||
serv enum('NICK','CHAN') NOT NULL default 'NICK',
|
||||
active tinyint(1) NOT NULL default '1',
|
||||
PRIMARY KEY (nm_id),
|
||||
UNIQUE KEY nm_id (nm_id,serv),
|
||||
KEY receiver (receiver,serv)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_ns_access'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_ns_access;
|
||||
CREATE TABLE anope_ns_access (
|
||||
na_id int(11) NOT NULL auto_increment,
|
||||
display varchar(255) NOT NULL default '',
|
||||
access text NOT NULL,
|
||||
active tinyint(1) NOT NULL default '1',
|
||||
PRIMARY KEY (na_id)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_ns_alias'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_ns_alias;
|
||||
CREATE TABLE anope_ns_alias (
|
||||
na_id int(11) NOT NULL auto_increment,
|
||||
display varchar(255) NOT NULL default '',
|
||||
nick varchar(255) NOT NULL default '',
|
||||
time_registered int(10) unsigned NOT NULL default '0',
|
||||
last_seen int(10) unsigned NOT NULL default '0',
|
||||
`status` int(11) unsigned NOT NULL default '0',
|
||||
last_usermask text NOT NULL,
|
||||
last_realname text NOT NULL,
|
||||
last_quit text NOT NULL,
|
||||
active tinyint(1) NOT NULL default '1',
|
||||
PRIMARY KEY (na_id),
|
||||
UNIQUE KEY nick (nick)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_ns_core'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_ns_core;
|
||||
CREATE TABLE anope_ns_core (
|
||||
nc_id int(11) NOT NULL auto_increment,
|
||||
display varchar(255) NOT NULL default '',
|
||||
pass tinyblob NOT NULL,
|
||||
email text NOT NULL,
|
||||
icq int(10) unsigned NOT NULL default '0',
|
||||
url text NOT NULL,
|
||||
flags int(11) NOT NULL default '0',
|
||||
`language` smallint(5) unsigned NOT NULL default '0',
|
||||
accesscount smallint(6) NOT NULL default '0',
|
||||
memocount smallint(5) unsigned NOT NULL default '0',
|
||||
memomax smallint(5) unsigned NOT NULL default '0',
|
||||
channelcount smallint(5) unsigned NOT NULL default '0',
|
||||
channelmax smallint(5) unsigned NOT NULL default '0',
|
||||
greet text NOT NULL,
|
||||
active tinyint(1) NOT NULL default '1',
|
||||
PRIMARY KEY (nc_id),
|
||||
UNIQUE KEY display (display)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_ns_request'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_ns_request;
|
||||
CREATE TABLE anope_ns_request (
|
||||
nr_id int(11) NOT NULL auto_increment,
|
||||
nick varchar(255) NOT NULL default '',
|
||||
passcode text NOT NULL,
|
||||
`password` tinyblob NOT NULL,
|
||||
email text NOT NULL,
|
||||
requested int(11) NOT NULL default '0',
|
||||
active tinyint(1) NOT NULL default '1',
|
||||
PRIMARY KEY (nr_id),
|
||||
UNIQUE KEY nick (nick)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_os_akills'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_os_akills;
|
||||
CREATE TABLE anope_os_akills (
|
||||
ok_id int(11) NOT NULL auto_increment,
|
||||
`user` varchar(255) NOT NULL,
|
||||
host varchar(255) NOT NULL,
|
||||
xby text NOT NULL,
|
||||
reason text NOT NULL,
|
||||
seton int(11) NOT NULL default '0',
|
||||
expire int(11) NOT NULL default '0',
|
||||
active tinyint(1) NOT NULL default '1',
|
||||
PRIMARY KEY (ok_id),
|
||||
UNIQUE KEY `user` (`user`,host)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_os_core'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_os_core;
|
||||
CREATE TABLE anope_os_core (
|
||||
oc_id int(11) NOT NULL auto_increment,
|
||||
maxusercnt int(11) NOT NULL default '0',
|
||||
maxusertime int(11) NOT NULL default '0',
|
||||
akills_count int(11) NOT NULL default '0',
|
||||
sglines_count int(11) NOT NULL default '0',
|
||||
sqlines_count int(11) NOT NULL default '0',
|
||||
szlines_count int(11) NOT NULL default '0',
|
||||
PRIMARY KEY (oc_id)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_os_exceptions'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_os_exceptions;
|
||||
CREATE TABLE anope_os_exceptions (
|
||||
oe_id int(11) NOT NULL auto_increment,
|
||||
mask varchar(255) NOT NULL,
|
||||
lim int(11) NOT NULL default '0',
|
||||
who text NOT NULL,
|
||||
reason text NOT NULL,
|
||||
`time` int(11) NOT NULL default '0',
|
||||
expires int(11) NOT NULL default '0',
|
||||
active tinyint(1) NOT NULL default '1',
|
||||
PRIMARY KEY (oe_id),
|
||||
UNIQUE KEY mask (mask)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_os_news'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_os_news;
|
||||
CREATE TABLE anope_os_news (
|
||||
on_id int(11) NOT NULL auto_increment,
|
||||
`type` int(11) NOT NULL default '0',
|
||||
num int(11) NOT NULL default '0',
|
||||
ntext text NOT NULL,
|
||||
who text NOT NULL,
|
||||
`time` int(11) NOT NULL default '0',
|
||||
active tinyint(1) NOT NULL default '1',
|
||||
PRIMARY KEY (on_id),
|
||||
UNIQUE KEY `type` (`type`,num,`time`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_os_sglines'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_os_sglines;
|
||||
CREATE TABLE anope_os_sglines (
|
||||
og_id int(11) NOT NULL auto_increment,
|
||||
mask varchar(255) NOT NULL,
|
||||
xby text NOT NULL,
|
||||
reason text NOT NULL,
|
||||
seton int(11) NOT NULL default '0',
|
||||
expire int(11) NOT NULL default '0',
|
||||
active tinyint(1) NOT NULL default '1',
|
||||
PRIMARY KEY (og_id),
|
||||
UNIQUE KEY mask (mask)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_os_sqlines'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_os_sqlines;
|
||||
CREATE TABLE anope_os_sqlines (
|
||||
og_id int(11) NOT NULL auto_increment,
|
||||
mask varchar(255) NOT NULL,
|
||||
xby text NOT NULL,
|
||||
reason text NOT NULL,
|
||||
seton int(11) NOT NULL default '0',
|
||||
expire int(11) NOT NULL default '0',
|
||||
active tinyint(1) NOT NULL default '1',
|
||||
PRIMARY KEY (og_id),
|
||||
UNIQUE KEY mask (mask)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_os_szlines'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_os_szlines;
|
||||
CREATE TABLE anope_os_szlines (
|
||||
og_id int(11) NOT NULL auto_increment,
|
||||
mask varchar(255) NOT NULL,
|
||||
xby text NOT NULL,
|
||||
reason text NOT NULL,
|
||||
seton int(11) NOT NULL default '0',
|
||||
expire int(11) NOT NULL default '0',
|
||||
active tinyint(1) NOT NULL default '1',
|
||||
PRIMARY KEY (og_id),
|
||||
UNIQUE KEY mask (mask)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
@@ -1,4 +1,4 @@
|
||||
Reported Bugs from Bugzilla: http://bugs.anope.org/
|
||||
Reported Bugs from Tracker: http://bugs.anope.org/
|
||||
---------------------------------------------------
|
||||
|
||||
|
||||
|
||||
-106
@@ -1,106 +0,0 @@
|
||||
C++-style Casting
|
||||
=================
|
||||
|
||||
In C, you can cast in one of two ways:
|
||||
|
||||
(type)var
|
||||
type(var)
|
||||
|
||||
The problem with C-style casting is that it allows a programmer to get away
|
||||
with too much, and is also not designed to handle C++ classes.
|
||||
|
||||
C++ has 4 types of casting in addition to allowing C-style casting. They are:
|
||||
|
||||
static_cast
|
||||
const_cast
|
||||
dynamic_cast
|
||||
reinterpret_cast
|
||||
|
||||
The syntax is usually *_cast<type>(var).
|
||||
|
||||
static_cast
|
||||
-----------
|
||||
|
||||
From my expierence, this cast is closest to C-style casting for non-pointer
|
||||
types as well as between some (but not all) pointer types. This type of cast,
|
||||
like C-style casting, is performed at compile-time. static_cast can also do
|
||||
a downcast of a derived class to a base class, but only if the base class is
|
||||
not a virtual base class. Sometimes the result of this cast can become
|
||||
undefined. static_cast is a bit more strict that C-style casting, though. It
|
||||
disallows certain class conversions that would've been allowed with a C-style
|
||||
cast. static_cast also doesn't allow you to cast to an incomplete type. In
|
||||
these cases, I would try either dynamic_cast or reinterpret_cast.
|
||||
|
||||
const_cast
|
||||
----------
|
||||
|
||||
This cast is mainly to add or remove const-ness or volatile-ness from a
|
||||
variable. This is safer than using a C-style cast to change the const-ness
|
||||
of a variable. In most cases if you try to use one of the other casts and it
|
||||
complains about const-ness, you will want to either use this cast instead or
|
||||
wrap the other cast around this cast. An example:
|
||||
|
||||
const int *a;
|
||||
static_cast<void *>(a); <-- This will fail.
|
||||
|
||||
To remedy the above, you would might try this:
|
||||
|
||||
const int *a;
|
||||
const_cast<void *>(a); <-- But this will still fail.
|
||||
|
||||
The real solution is this:
|
||||
|
||||
const int *a;
|
||||
static_cast<void *>(const_cast<int *>(a));
|
||||
|
||||
It is not recommended to use const_cast on the this variable within a member
|
||||
function of a class that is declared const. Instead you should use the mutable
|
||||
keyword on the variable in the class's definition.
|
||||
|
||||
dynamic_cast
|
||||
------------
|
||||
|
||||
This cast can only be used on pointers or references to classes. It can cast a
|
||||
derived class to a base class, a derived class to another derived class
|
||||
(provided that both are children of the same base class), or a base class to a
|
||||
derived class. You can also use this to cast a class to void *. This cast is
|
||||
done at run-time as opposed to the other casts, and relies on C++'s RTTI to be
|
||||
enabled. It is meant to be used on polymorphic classes, so use static_cast on
|
||||
non-polymorphic classes.
|
||||
|
||||
derived-to-base conversions are actually done statically, so you use either
|
||||
dynamic_cast or static_cast on them, regardless of if the classes are
|
||||
polymorphic or not.
|
||||
|
||||
derived-to-derived or base-to-derived conversions, however, rely on run-time
|
||||
type information, and this cast is used on those classes that are polymorphic.
|
||||
This is safer than C-style casting in that an invalid pointer conversion will
|
||||
return a NULL pointer, and an invalid reference conversion will throw a
|
||||
Bad_cast exception.
|
||||
|
||||
reinterpret_cast
|
||||
----------------
|
||||
|
||||
This cast I would use only as a last resort if static_cast isn't allowed on a
|
||||
conversion. It allows for conversions between two unrelated types, such as
|
||||
going from char * to int *. It can also be used to convert a pointer to an
|
||||
integral type and vica versa. The sites I've read mention how the result is
|
||||
non-portable, which I assume means the resulting object code is non-portable,
|
||||
so since the code is compiled on many systems anyways, I don't see this as
|
||||
being a huge issue. It is recommended to only use this if necessary, though.
|
||||
|
||||
Links
|
||||
=====
|
||||
|
||||
The following links are web sites I've used to get this information, and might
|
||||
describe some of the above a bit better than I have. :P
|
||||
|
||||
http://www.acm.org/crossroads/xrds3-1/ovp3-1.html
|
||||
http://www.cplusplus.com/doc/tutorial/typecasting.html
|
||||
http://www.codeguru.com/forum/showthread.php?t=312456
|
||||
http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/BitOp/cast.html
|
||||
http://msdn.microsoft.com/en-us/library/5f6c9f8h(VS.80).aspx
|
||||
http://en.wikibooks.org/wiki/C%2B%2B_Programming/Type_Casting
|
||||
http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=134
|
||||
|
||||
-- CyberBotX, Nov 23, 2008
|
||||
@@ -1,15 +0,0 @@
|
||||
# We only need to install these docs on Windows as most Windows installations will be binary, not source
|
||||
if(WIN32)
|
||||
# Only install given files from this directory
|
||||
# NOTE: I would've had this just find all files in the directory, but that would include files not needed (like this file)
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/README ${CMAKE_CURRENT_BINARY_DIR}/README.txt)
|
||||
if(IN_SOURCE)
|
||||
# Add README.txt to list of files for CPack to ignore
|
||||
add_to_cpack_ignored_files("README.txt$" TRUE)
|
||||
endif(IN_SOURCE)
|
||||
set(DOCS DEFCON FAQ INSTALL MODULES NEWS OLDCHANGES PROXY ${CMAKE_CURRENT_BINARY_DIR}/README.txt WIN32.txt)
|
||||
install(FILES ${DOCS}
|
||||
DESTINATION docs
|
||||
)
|
||||
set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${CMAKE_CURRENT_BINARY_DIR}/README.txt")
|
||||
endif(WIN32)
|
||||
+260
-252
@@ -1,339 +1,347 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
675 Mass Ave, Cambridge, MA 02139, USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
|
||||
Preamble
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Lesser General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the entire
|
||||
whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
b) Accompany it with a written offer, valid for at least three years,
|
||||
to give any third party, for a charge no more than your cost of
|
||||
physically performing source distribution, a complete machine-readable
|
||||
copy of the corresponding source code, to be distributed under the terms
|
||||
of Sections 1 and 2 above on a medium customarily used for software
|
||||
interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is allowed
|
||||
only for noncommercial distribution and only if you received the program
|
||||
in object code or executable form with such an offer, in accord with
|
||||
Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent license
|
||||
would not permit royalty-free redistribution of the Program by all those
|
||||
who receive copies directly or indirectly through you, then the only way
|
||||
you could satisfy both it and this License would be to refrain entirely
|
||||
from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is implemented
|
||||
by public license practices. Many people have made generous contributions
|
||||
to the wide range of software distributed through that system in reliance
|
||||
on consistent application of that system; it is up to the author/donor to
|
||||
decide if he or she is willing to distribute software through any other
|
||||
system and a licensee cannot impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
This section is intended to make thoroughly clear what is believed to be
|
||||
a consequence of the rest of this License.
|
||||
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
Appendix: How to Apply These Terms to Your New Programs
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make
|
||||
it free software which everyone can redistribute and change under
|
||||
these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) 19yy <name of author>
|
||||
<one line to give the program's name and an idea of what it does.>
|
||||
Copyright (C) yyyy name of author
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
of the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301, USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) 19yy name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
|
||||
type `show w'. This is free software, and you are welcome
|
||||
to redistribute it under certain conditions; type `show c'
|
||||
for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License.
|
||||
|
||||
|
||||
|
||||
+75
-15
@@ -183,9 +183,9 @@ Anope Internal Events
|
||||
|
||||
EVENT_BOT_BAN
|
||||
A BotServ bot has banned a user, e.g. kickers.
|
||||
av[0] The nick of the user banned.
|
||||
av[1] The Channel the user was banned from.
|
||||
av[2] The mask that was banned.
|
||||
av[0] The nick of the user banned.
|
||||
av[1] The Channel the user was banned from.
|
||||
av[2] The mask that was banned.
|
||||
|
||||
EVENT_BOT_CHANGE
|
||||
The properties of a BotServ bot have been changed.
|
||||
@@ -214,10 +214,10 @@ Anope Internal Events
|
||||
|
||||
EVENT_BOT_FANTASY_NO_ACCESS
|
||||
A fantasy command of the bot has been triggered by someone without
|
||||
access to BotServ FANTASY commands on the channel. This will NOT
|
||||
trigger if someone with access has triggered a fantasy command; use
|
||||
EVENT_BOT_FANTASY for those. Hook to both events to catch both event
|
||||
triggers.
|
||||
access to BotServ FANTASY commands on the channel. This will NOT
|
||||
trigger if someone with access has triggered a fantasy command; use
|
||||
EVENT_BOT_FANTASY for those. Hook to both events to catch both event
|
||||
triggers.
|
||||
av[0] The fantasy command that has been triggered without leading '!'.
|
||||
av[1] The nickname of the user that has triggered the fantasy
|
||||
command.
|
||||
@@ -234,9 +234,9 @@ Anope Internal Events
|
||||
|
||||
EVENT_BOT_KICK
|
||||
A BotServ bot has kicked a user from a channel.
|
||||
av[0] The name of the user that has been kicked.
|
||||
av[1] The name of the channel the user was kicked from.
|
||||
av[2] The reason for the kick.
|
||||
av[0] The name of the user that has been kicked.
|
||||
av[1] The name of the channel the user was kicked from.
|
||||
av[2] The reason for the kick.
|
||||
|
||||
EVENT_BOT_UNASSIGN
|
||||
A BotServ bot is being unassigned from a channel. This event is being
|
||||
@@ -266,6 +266,10 @@ Anope Internal Events
|
||||
A new channel has been registered.
|
||||
av[0] The name of the channel that has been registered.
|
||||
|
||||
EVENT_NICK_REQUESTED
|
||||
A new nick has been requested, and mail has been sent to confirm the nick.
|
||||
av[0] The name of the nick that was requested
|
||||
|
||||
EVENT_CHAN_SUSPENDED
|
||||
A channel has been suspended (ChanServ SUSPEND).
|
||||
av[0] The name of the channel that has been suspended.
|
||||
@@ -275,8 +279,10 @@ Anope Internal Events
|
||||
av[0] The name of the channel that has been unsuspended.
|
||||
|
||||
EVENT_CHANGE_NICK
|
||||
A user has just changed it's nick.
|
||||
av[0] The new nickname of the user.
|
||||
A user has just changed its nick.
|
||||
av[0] The new nickname of the user. Event is called after the user has been changed
|
||||
to this nickname.
|
||||
av[1] The old nickname of the user.
|
||||
|
||||
EVENT_CONNECT
|
||||
This event is emitted when the connection to our uplink hub is being
|
||||
@@ -308,7 +314,7 @@ Anope Internal Events
|
||||
av[0] The new level of DefCon being invoked.
|
||||
|
||||
EVENT_GROUP
|
||||
A user has grouped it's nickname to another user group.
|
||||
A user has grouped its nickname to another user group.
|
||||
av[0] The nickname of the user that joined the group.
|
||||
|
||||
EVENT_JOIN_CHANNEL
|
||||
@@ -338,16 +344,43 @@ Anope Internal Events
|
||||
A user's nick has just been forbidden.
|
||||
av[0] The nickname that has just been forbidden.
|
||||
|
||||
EVENT_CORE_DROPPED
|
||||
A NickCore will be dropped. Usually send when the last alias is dopped.
|
||||
This is send BEFORE the event that confirms deletion of the alias.
|
||||
Note that this event is send before the core data is removed.
|
||||
av[0] The display nickname of the core that is being dropped.
|
||||
|
||||
EVENT_CORE_NEWDISPLAY
|
||||
The display nick of a NickCore is being changed.
|
||||
This is send BEFORE the actual change is made in the database.
|
||||
av[0] The old display nickname of the core.
|
||||
av[1] The new display nickname of the core.
|
||||
|
||||
EVENT_NICK_GHOSTED
|
||||
A user has just been ghosted.
|
||||
av[0] EVENT_START or EVENT_STOP. EVENT_START when the user is about
|
||||
to be removed from the network, EVENT_STOP when this has been
|
||||
done.
|
||||
av[1] The nickname of the user doing the ghosting.
|
||||
av[2] The nickname being ghosted.
|
||||
|
||||
EVENT_NICK_IDENTIFY
|
||||
A user has just identified for it's nickname with NickServ.
|
||||
A user has just identified for its nickname with NickServ.
|
||||
av[0] The nickname of the user that just identified.
|
||||
|
||||
EVENT_NICK_LOGOUT
|
||||
A user has just (been) logged out.
|
||||
av[0] The nickname of the user that has (been) logged out.
|
||||
|
||||
EVENT_NICK_RECOVERED
|
||||
A user's nickname has just been recovered.
|
||||
av[0] EVENT_START or EVENT_STOP. EVENT_START when the user is about
|
||||
to be recovered, EVENT_STOP when this has been done.
|
||||
av[1] The nickname of the user doing the recovery.
|
||||
av[2] The nickname being recovered.
|
||||
|
||||
EVENT_NICK_REGISTERED
|
||||
A new user has just registered it's nickname. This event is being
|
||||
A new user has just registered its nickname. This event is being
|
||||
emitted when the registration is completed, but the user modes have not
|
||||
yet been set.
|
||||
av[0] The nickname of the newly registered user.
|
||||
@@ -414,3 +447,30 @@ Anope Internal Events
|
||||
A user has left the network. This event is emitted before the internal
|
||||
removal is performed, so the user still exists internally.
|
||||
av[0] The nickname of the user leaving the network.
|
||||
|
||||
EVENT_MODLOAD
|
||||
A module has been loaded. This event is emitted after the loading
|
||||
sequence has been finished: AnopeInit() has been called and the
|
||||
module has already been added to the modules table.
|
||||
av[0] Name of the loaded module.
|
||||
|
||||
EVENT_MODUNLOAD
|
||||
A module has been unloaded. This event is emitted when the unloading
|
||||
sequence is almost complete: AnopeFini() has been called and all
|
||||
commands, hooks and callbacks have been removed. The module itself
|
||||
is still in memory however.
|
||||
av[0] Name of the unloaded module.
|
||||
|
||||
EVENT_ADDCOMMAND
|
||||
A command hook has been added to anopes command table.
|
||||
Note that the command may have previously existed and merely a new hook
|
||||
was added before or after an existing command hook.
|
||||
av[0] Name of the module adding the command.
|
||||
av[1] Name of the command hook that was added.
|
||||
|
||||
EVENT_DELCOMMAND
|
||||
A command hook has been removed from anopes command table.
|
||||
Note that the command may still exist in anopes command table if other
|
||||
modules have hooks for the same command.
|
||||
av[0] Name of the module deleting the command.
|
||||
av[1] Name of the command hook that was removed.
|
||||
|
||||
+31
-35
@@ -6,7 +6,7 @@ Anope Installation Instructions
|
||||
3) Setting up the IRCd
|
||||
4) Starting Anope
|
||||
5) Setting up a crontab
|
||||
|
||||
|
||||
Note: You should also read the README and FAQ files!
|
||||
|
||||
1) Installing Anope
|
||||
@@ -21,35 +21,15 @@ Note: You should also read the README and FAQ files!
|
||||
|
||||
http://www.anope.org/
|
||||
|
||||
Anope can be built one of two ways. The recommended way is to use CMake.
|
||||
You can check if CMake is already installed on your system using the
|
||||
command:
|
||||
|
||||
cmake --version
|
||||
|
||||
If it's installed, you will get a line that says something similar to
|
||||
"cmake version 2.6-patch 1". If the version is less than 2.4 or you get
|
||||
an error saying the command was not found, you will not be able to use
|
||||
CMake unless you install it yourself into your home directory. CMake
|
||||
can be downloaded from:
|
||||
|
||||
http://www.cmake.org/cmake/resources/software.html
|
||||
|
||||
If you are unable to install CMake yourself (either due to lack of space
|
||||
or restrictions by your hosting provider), you still have the alternative
|
||||
to use the provided configure script. This option is not recommended and
|
||||
will eventually be phased out, but is provided for compatibility for those
|
||||
lacking CMake.
|
||||
|
||||
Next, unpack the package in your home directory, and go into the created
|
||||
directory.
|
||||
|
||||
Now type ./Config to start the configuration script. It will ask you a
|
||||
few questions, and figure out how to compile Anope on your system. If
|
||||
you are unsure about the answer to a question, use the default value.
|
||||
The question to using configure or cmake depends on your decision from
|
||||
above. If you have CMake and wish to use it, answer with cmake, otherwise
|
||||
answer with configure.
|
||||
you are unsure about the answer to a question, use the default value.
|
||||
|
||||
NOTE: although you may specify different binary and data paths, it is
|
||||
RECOMMENDED that you use the same value for both.
|
||||
|
||||
You can now type make to compile Anope. If there are errors in the
|
||||
Makefile, *try to use gmake* instead. If it still doesn't work, you (or
|
||||
@@ -64,10 +44,10 @@ Note: You should also read the README and FAQ files!
|
||||
the memos of any user.
|
||||
|
||||
If you see errors during this process, please mail us with the *complete*
|
||||
error output, and don't forget to mention your OS, compiler and C++ library
|
||||
versions.
|
||||
error output, and don't forget to mention your OS, compiler and C library
|
||||
versions.
|
||||
|
||||
Now go into the data directory (by default, ~/services/data). Copy the example
|
||||
Now go into the data directory (by default, ~/services). Copy the example
|
||||
configuration file (example.conf) to services.conf, and open the latter
|
||||
with your favorite text editor. It contains all the configuration
|
||||
directives Anope will use at startup. Read the instructions contained in
|
||||
@@ -93,7 +73,8 @@ Note: You should also read the README and FAQ files!
|
||||
section 1. There are however a few specific guidelines:
|
||||
|
||||
* IMPORTANT: Back up your old databases!
|
||||
* If you are upgrading to a new major release, ALWAYS restart a
|
||||
* Check Changes.conf for the new version for small config changes.
|
||||
* If you are upgrading to a new major release, create a
|
||||
fresh configuration file from example.conf.
|
||||
|
||||
3) Setting up the IRCd
|
||||
@@ -135,21 +116,34 @@ Note: You should also read the README and FAQ files!
|
||||
Don't forget to /rehash your IRCd to apply changes.
|
||||
|
||||
A new trend in ircd configuration is popping all over the place, good
|
||||
examples are the latest Hybrid, Unreal and Bahamut, which use a more
|
||||
examples are the latest Hybrid, Unreal, Bahamut & InspIRCd, which use a more
|
||||
"readable" form of configuration. For those, use something like:
|
||||
|
||||
|
||||
UnrealIRCd
|
||||
|
||||
link services.localhost.net
|
||||
{
|
||||
username *;
|
||||
hostname localhost;
|
||||
bind-ip *;
|
||||
port 6667;
|
||||
port 7000;
|
||||
hub *;
|
||||
password-connect "mypass";
|
||||
password-receive "mypass";
|
||||
class servers;
|
||||
};
|
||||
|
||||
InspIRCd
|
||||
|
||||
<link name="services.localhost.net"
|
||||
ipaddr="127.0.0.1"
|
||||
port="7000"
|
||||
allowmask="127.0.0.0/8"
|
||||
sendpass="mypass"
|
||||
recvpass="mypass">
|
||||
|
||||
|
||||
Note that this block-style configuration files differ heavily, depending
|
||||
on the IRCd. Consult the interactive link maker (link is below) for more
|
||||
details on the exact configuration used by your IRCd.
|
||||
@@ -157,7 +151,9 @@ Note: You should also read the README and FAQ files!
|
||||
If you're unable to get a link with your IRCd after reading this section,
|
||||
you might try the interactive link maker, which is located at:
|
||||
|
||||
http://anope.org/~heinz/ilm.php
|
||||
http://www.anope.org/ilm.php
|
||||
|
||||
Or finally, contact your IRCd Support Community to seek advice.
|
||||
|
||||
4) Starting Anope
|
||||
|
||||
@@ -166,7 +162,7 @@ Note: You should also read the README and FAQ files!
|
||||
|
||||
If there are syntax errors in the configuration file they will be
|
||||
displayed on the screen. Correct them until there are no errors anymore.
|
||||
A successful startup won't generate any message.
|
||||
A successful startup won't generate any message.
|
||||
|
||||
Give Services at least one minute to link to your network, as certain
|
||||
IRCds on some OSes may be really slow for the link process. If nothing
|
||||
@@ -174,8 +170,8 @@ Note: You should also read the README and FAQ files!
|
||||
to launch Anope with ./services -debug -nofork to see any errors that it
|
||||
encounters, and try to correct them.
|
||||
|
||||
If you need help to solve errors, feel free to subscribe to the Anope
|
||||
mailing list and ask there. See the README file for details.
|
||||
If you need help to solve errors, feel free to visit us on IRC at
|
||||
irc.anope.org #anope and ask there. See the README file for further details.
|
||||
|
||||
5) Setting up a crontab
|
||||
|
||||
|
||||
@@ -15,45 +15,11 @@ How To Add IRCd Support
|
||||
|
||||
A) Make a copy of the .c and .h file of the IRCd that matches the ircd
|
||||
that you are attempting to add support for best.
|
||||
B) Make a backup copy of include/services.h, include/sysconf.h.in
|
||||
C) Make a backup copy of Config and configure.in
|
||||
|
||||
First step in this process is to rename the .c and .h file after the IRCd
|
||||
that you are going to be adding support for. Its recommended that you come
|
||||
up with a name that is clear and easy to understand.
|
||||
|
||||
Now that you have the files that you will need to create your own ircd
|
||||
support, starting with Config. This file is a shell script file; scroll
|
||||
down until you find the list of ircs for the user to select. Indicate
|
||||
the based ircd version which is supported such as a series 1.x or 2.2.x,
|
||||
placing in the comment side an exact version that the support is for or
|
||||
"experimental" if you are not the ircd developer. The next step is to
|
||||
decide how the IRCd will be defined, following the existing examples edit
|
||||
'IRCTYPE_DEF="IRC_RATBOX"' to be the descriptive define for your ircd.
|
||||
|
||||
With the Config file ready to go, edit configure.in and find in there the
|
||||
reference to --with-ircd. You should see the various other ircds, and
|
||||
you will want to add yours in there using the same IRC_ name you came up
|
||||
with above. Important in this step is to make sure that you set the
|
||||
IRCDFILE to the name of the .c file you set in step 1. Once you have the
|
||||
configure.in created you can remove the old configure and at the command
|
||||
prompt type "autconf"; this will generate the new configure file.
|
||||
|
||||
Getting close to actually modify code. Open sysconf.h.in and add two
|
||||
lines for your given ircd, which is similar to this:
|
||||
|
||||
/* "First IRCD type" */
|
||||
#undef IRC_RATBOX
|
||||
|
||||
Open services.h and add a line with the rest of the ircd include files to
|
||||
match the name of the .h file you set in step 1.
|
||||
|
||||
#include "ratbox.h"
|
||||
|
||||
Taking the .c and .h file open them and replace the #ifdef IRC_* with the
|
||||
IRC_ name you set in step two. Ensure that the code comments at the top
|
||||
of the file match the ircd that the code will be for.
|
||||
|
||||
You are now ready to start getting into the code.
|
||||
|
||||
2) Modifying the Header File
|
||||
@@ -65,28 +31,10 @@ How To Add IRCd Support
|
||||
|
||||
Open the .h file and find the section of code with
|
||||
|
||||
#define PROTECT_SET_MODE "+"
|
||||
#define PROTECT_UNSET_MODE "-"
|
||||
#define CS_CMD_PROTECT "PROTECT"
|
||||
#define CS_CMD_DEPROTECT "DEPROTECT"
|
||||
#define FANT_PROTECT_ADD "!protect"
|
||||
#define FANT_PROTECT_DEL "!deprotect"
|
||||
#define LEVEL_PROTECT_WORD "AUTOPROTECT"
|
||||
#define LEVELINFO_PROTECT_WORD "PROTECT"
|
||||
#define LEVELINFO_PROTECTME_WORD "PROTECTME"
|
||||
#define UMODE_a 0x00000001
|
||||
#define UMODE_b 0x00000002
|
||||
|
||||
If the ircd supports a protective/admin (not owner) mode, set the
|
||||
PROTECT_SET_MODE and PROTECT_UNSET_MODE to be that mode. On most ircds
|
||||
it's usermode "a" so you will be setting it to "+a" and "-a". The next
|
||||
two are based more on what this mode is called. When you message ChanServ
|
||||
to get this mode, this is the command you will be using. After this are
|
||||
the fantasy commands which can be used in channel to get these modes. The
|
||||
next three relate to the ACCESS LEVEL list system. Again these are the
|
||||
words to gain these levels in the ACCESS LEVEL system. If your ircd does
|
||||
not have these functions, leave them at what ever value is currently set;
|
||||
the core code will ignore the request of the user.
|
||||
|
||||
Now that this is set, you can define the MODES. All user modes are stored
|
||||
This is where you define the MODES. All user modes are stored
|
||||
with UMODE_ followed by a letter matching the modes case; be careful to
|
||||
use the correct case as this will make it clear when you setup MODES in
|
||||
the .c in a few. Use hex values for the modes so starting at 0x00000001
|
||||
@@ -101,7 +49,10 @@ How To Add IRCd Support
|
||||
|
||||
Finally we come to DEFAULT_MLOCK; this is the mode that services will set
|
||||
by default on channels when they are registered. In general you want this
|
||||
to be what is acceptable by the ircd; in most cases this is "+nt"
|
||||
to be what is acceptable by the ircd; in most cases this is "+ntr". This is
|
||||
expressed by:
|
||||
|
||||
#define DEFAULT_MLOCK CMODE_n | CMODE_t | CMODE_r
|
||||
|
||||
3) The Code
|
||||
|
||||
@@ -113,33 +64,6 @@ How To Add IRCd Support
|
||||
|
||||
The first bit of code you will face is:
|
||||
|
||||
const char version_protocol[] = "Ratbox IRCD";
|
||||
|
||||
This the protocol name which will appear in various places; especially
|
||||
when you do -version at the command prompt, this is where you state the
|
||||
server name. The version is not always needed unless you are showing that
|
||||
the support is for one branch of a ircd family, such as Unreal 3.1 and
|
||||
Unreal 3.2.
|
||||
|
||||
Once you have decided on this little piece of code, you will come to
|
||||
flood mode characters being used for setting and removing. If your IRCd
|
||||
does not support flood modes, you can just use ""; we will be setting if
|
||||
your IRCD supports flooding or not in a little bit.
|
||||
|
||||
const char flood_mode_char_set[] = "+f";
|
||||
const char flood_mode_char_remove[] = "-f";
|
||||
|
||||
The next task that you will face is setting whether the IRCD sends time
|
||||
stamps on modes but does not tell us that it will do so. If it does, set
|
||||
UseTSMODE to 1; if it does not set it to be 0. If you're not sure refer
|
||||
to your IRCd's documentation on how MODE is sent.
|
||||
|
||||
int UseTSMODE = 0;
|
||||
|
||||
Now you've come to the part where you setup your ircd. There are two
|
||||
structs which hold this information; This allows you to quickly setup
|
||||
your specific ircd.
|
||||
|
||||
IRCDVar ircd[] = { }
|
||||
|
||||
This struct contains your basic IRCd functions. Your base source file has
|
||||
@@ -148,7 +72,7 @@ How To Add IRCd Support
|
||||
of each.
|
||||
|
||||
1) Name: This member tells Anope about the IRCD's name. It may contain
|
||||
text about it's name and version. This is used to identify the
|
||||
text about its name and version. This is used to identify the
|
||||
build on startup.
|
||||
|
||||
2) NickServ Mode: This is the user mode set by Anope on NickServ.
|
||||
@@ -273,172 +197,176 @@ How To Add IRCd Support
|
||||
a mode to be set on registration, you should
|
||||
set this to NULL.
|
||||
|
||||
32) Mode on Nick Unregister: What mode to set give users when they cancel
|
||||
32) Mode on Root ID: What modes to set on services roots when they identify
|
||||
|
||||
33) Mode on Admin ID: What modes to set on services admins when they identify
|
||||
|
||||
34) Mode on Oper ID: What modes to set on services opers when they identify
|
||||
|
||||
35) Mode on Nick Unregister: What mode to set give users when they cancel
|
||||
their registration with NickServ. If your
|
||||
IRCd doesn't set a mode for registered users
|
||||
you should set this to NULL.
|
||||
|
||||
33) Mode on Nick Change: What mode to give users when they change their
|
||||
36) Mode on Nick Change: What mode to give users when they change their
|
||||
nick. If your ircd doesn't set a mode, you
|
||||
should set this to NULL.
|
||||
|
||||
34) SGLINE: Does the IRCd support realname (geocs) bans? Use 1 for yes,
|
||||
37) SGLINE: Does the IRCd support realname (geocs) bans? Use 1 for yes,
|
||||
0 for no.
|
||||
|
||||
35) SQLINE: Does the IRCd support nick bans? Use 1 for yes, 0 for no.
|
||||
38) SQLINE: Does the IRCd support nick bans? Use 1 for yes, 0 for no.
|
||||
|
||||
36) SZLINE: Does the IRCd support SZLINES? Use 1 for yes, 0 for no.
|
||||
39) SZLINE: Does the IRCd support SZLINES? Use 1 for yes, 0 for no.
|
||||
|
||||
37) HALFOP: Is channel mode +h for halfop supported by the IRCd? Use 1 for
|
||||
40) HALFOP: Is channel mode +h for halfop supported by the IRCd? Use 1 for
|
||||
yes, 0 for no.
|
||||
|
||||
38) Number of Server Args: When an IRCd connects, this is the number of
|
||||
41) Number of Server Args: When an IRCd connects, this is the number of
|
||||
parameters that are passed.
|
||||
|
||||
39) Join to Set: Services must join a channel to set any modes on that
|
||||
42) Join to Set: Services must join a channel to set any modes on that
|
||||
channel. Use 1 for yes, 0 for no.
|
||||
|
||||
40) Join to Message: Services must join a channel to send any message to
|
||||
43) Join to Message: Services must join a channel to send any message to
|
||||
that channel (cannot override +n). Use 1 for yes,
|
||||
0 for no.
|
||||
|
||||
41) Exceptions: Support for channel exceptions (mode +e). Use 1 for yes,
|
||||
44) Exceptions: Support for channel exceptions (mode +e). Use 1 for yes,
|
||||
0 for no.
|
||||
|
||||
42) TS Topic Forward: Some IRCd's (like UnrealIRCd) like their topic TS
|
||||
45) TS Topic Forward: Some IRCd's (like UnrealIRCd) like their topic TS
|
||||
set forward by +1. Use 1 for yes, 0 for no.
|
||||
|
||||
43) TS Topic Backward: Some IRCd's (mainly older DreamForge-like ones)
|
||||
46) TS Topic Backward: Some IRCd's (mainly older DreamForge-like ones)
|
||||
like their topic TS set back by -1. Use 1 for yes,
|
||||
0 for no.
|
||||
|
||||
44) Protected Umode: UMODE_ define that defines the protected usermod.
|
||||
47) Protected Umode: UMODE_ define that defines the protected usermod.
|
||||
Use 0 for no support, or enter the UMODE_ define.
|
||||
|
||||
45) Admin: Support for channel admins (Mainly used by UltimateIRCd). Use
|
||||
48) Admin: Support for channel admins (Mainly used by UltimateIRCd). Use
|
||||
1 for yes, 0 for no.
|
||||
|
||||
46) SQline Channels: The IRCd's supports banning channel names via
|
||||
49) SQline Channels: The IRCd's supports banning channel names via
|
||||
SQLINES. Use 1 for yes, 0 for no.
|
||||
|
||||
47) Quit On Kill: When we (SVS)KILL a user, does the IRCd send back a
|
||||
50) Quit On Kill: When we (SVS)KILL a user, does the IRCd send back a
|
||||
QUIT message for that user? Use 1 for yes, 0 for no.
|
||||
|
||||
48) SVSMODE -b: We can use SVSMODE to unban hosts from a channel. Use
|
||||
51) SVSMODE -b: We can use SVSMODE to unban hosts from a channel. Use
|
||||
1 for yes, 0 for no.
|
||||
|
||||
49) Protect: Support for channel protect (mode +a, mainly being used by
|
||||
52) Protect: Support for channel protect (mode +a, mainly being used by
|
||||
UnrealIRCd and ViagraIRCd). Use 1 for yes, 0 for no.
|
||||
|
||||
50) Reverse: We can do a reverse check when unbanning. For use with
|
||||
53) Reverse: We can do a reverse check when unbanning. For use with
|
||||
DreamForge based IRCd's. Use 1 for yes, 0 for no.
|
||||
|
||||
51) Register Channels: Supports sending a channelmode for registered
|
||||
54) Register Channels: Supports sending a channelmode for registered
|
||||
channels. Use 1 for yes, 0 for no.
|
||||
|
||||
52) Registered Mode: Channelmode to set on registered channels, see the
|
||||
55) Registered Mode: Channelmode to set on registered channels, see the
|
||||
option above. Use 1 for yes, 0 for no.
|
||||
|
||||
53) vIdent: Support for including a user's ident in their vHost. Use
|
||||
56) vIdent: Support for including a user's ident in their vHost. Use
|
||||
1 for yes, 0 for no.
|
||||
|
||||
54) SVSHOLD: Support for temporarily 'holding' a nick, instead of using
|
||||
57) SVSHOLD: Support for temporarily 'holding' a nick, instead of using
|
||||
a nick enforcer client. Use 1 for yes, 0 for no.
|
||||
|
||||
55) TS on MODE: We need to send a timestamp when modes are being changed.
|
||||
58) TS on MODE: We need to send a timestamp when modes are being changed.
|
||||
Use 1 for yes, 0 for no.
|
||||
|
||||
56) NICKIP: The IP address of new users is being sent along with their
|
||||
59) NICKIP: The IP address of new users is being sent along with their
|
||||
hostname when new users are being introduced on the network.
|
||||
Use 1 for yes, 0 for no.
|
||||
|
||||
57) Umode: We can use OperServ to change a user's mode. Use 1 for yes,
|
||||
60) Omode: We can use OperServ to change a user's mode. Use 1 for yes,
|
||||
0 for no.
|
||||
|
||||
58) O:LINE: We can use OperServ to give some user a temporary O:LINE.
|
||||
Use 1 for yes, 0 for no.
|
||||
|
||||
59) Vhost On Nick: On NICK the IRCd sends the VHOST. Use 1 for yes,
|
||||
61) Umode: We can use OperServ to change a user's mode. Use 1 for yes,
|
||||
0 for no.
|
||||
|
||||
62) Vhost On Nick: On NICK the IRCd sends the VHOST. Use 1 for yes,
|
||||
0 for no.
|
||||
|
||||
60) Change Realname: Change real name. Use 1 for yes, 0 for no.
|
||||
63) Change Realname: Change real name. Use 1 for yes, 0 for no.
|
||||
|
||||
61) Extra Help: If the IRCd has more help for functions in ChanServ than
|
||||
the default help, you should put the language string
|
||||
identifier here. Use 0 for no extra help.
|
||||
64) No Knock: CMODE_ that defines NO KNOCK. Use 0 for no support.
|
||||
|
||||
62) No Knock: CMODE_ that defines NO KNOCK. Use 0 for no support.
|
||||
65) Admin Only: CMODE_ that defines Admin Only. Use 0 for no support.
|
||||
|
||||
63) Admin Only: CMODE_ that defines Admin Only. Use 0 for no support.
|
||||
66) Default MLock: Default channelmodes for MLOCK. Use 0 for no modes.
|
||||
|
||||
64) Default MLock: Default channelmodes for MLOCK. Use 0 for no modes.
|
||||
|
||||
65) Vhost Umode: UMODE_ that indicates if the user currently has a vHost.
|
||||
67) Vhost Umode: UMODE_ that indicates if the user currently has a vHost.
|
||||
Use 0 for no support.
|
||||
|
||||
66) Flood Mode: The IRCd has a channelmode for blocking floods. Use 1 for
|
||||
68) Flood Mode: The IRCd has a channelmode for blocking floods. Use 1 for
|
||||
yes, 0 for no.
|
||||
|
||||
67) Link Mode: The IRCd has a channelmode for linking a channel to some
|
||||
69) Link Mode: The IRCd has a channelmode for linking a channel to some
|
||||
other channel. Use 1 for yes, 0 for no.
|
||||
|
||||
68) CMode F: CMODE_ that defines flood mode. Use 0 for no support.
|
||||
70) CMode F: CMODE_ that defines flood mode. Use 0 for no support.
|
||||
|
||||
69) CMode L: CMODE_ that defines link mode. Use 0 for no support.
|
||||
71) CMode L: CMODE_ that defines link mode. Use 0 for no support.
|
||||
|
||||
70) Check Nick ID: Should we check if a user should remain identified when
|
||||
72) Check Nick ID: Should we check if a user should remain identified when
|
||||
changing their nick? This is for IRCd's that remove
|
||||
their registered-user mode when someone changes their
|
||||
nick (like Bahamut does).
|
||||
Use 1 for yes, 0 for no.
|
||||
|
||||
71) No Knock Requires +i: Does the No Knock channel mode require invite
|
||||
73) No Knock Requires +i: Does the No Knock channel mode require invite
|
||||
only channels? Use 1 for yes, 0 for no.
|
||||
|
||||
72) Chan Modes: If sent in CAPAB/PROTOCOL, we store it in here. This is
|
||||
74) Chan Modes: If sent in CAPAB/PROTOCOL, we store it in here. This is
|
||||
NULL by default.
|
||||
|
||||
73) Tokens: Can we use tokens to talk to the IRCd? Use 1 for yes,
|
||||
75) Tokens: Can we use tokens to talk to the IRCd? Use 1 for yes,
|
||||
0 for no.
|
||||
|
||||
74) Token Case Senstive: Are the IRCd's TOKENS/COMMANDS case sensitive?
|
||||
76) Token Case Senstive: Are the IRCd's TOKENS/COMMANDS case sensitive?
|
||||
Use 1 for yes, 0 for no.
|
||||
|
||||
75) base64 SJOIN TS: Are the timestamps sent with a SJOIN in base64? Use
|
||||
77) base64 SJOIN TS: Are the timestamps sent with a SJOIN in base64? Use
|
||||
1 for yes, 0 for no.
|
||||
|
||||
76) Supports +I: Does the IRCd support channelmode +I? Use 1 for yes,
|
||||
78) Supports +I: Does the IRCd support channelmode +I? Use 1 for yes,
|
||||
0 for no.
|
||||
|
||||
77) SJOIN Ban Char: Character used to identify bans. Use ''.
|
||||
79) SJOIN Ban Char: Character used to identify bans. Use ''.
|
||||
|
||||
78) SJOIN Except Char: Character used to identify exceptions. use ''.
|
||||
80) SJOIN Except Char: Character used to identify exceptions. Use ''.
|
||||
|
||||
79) SVSMODE UCMODE: Can we clear user channel modes with SVSMODE? Use
|
||||
81) SJOIN Invex Char: Character used to identify invexes. Use ''.
|
||||
|
||||
82) SVSMODE UCMODE: Can we clear user channel modes with SVSMODE? Use
|
||||
1 for yes, 0 for no.
|
||||
|
||||
80) SGline Enforce: Does the IRCd enforce SGLINES for us or do we need to
|
||||
83) SGline Enforce: Does the IRCd enforce SGLINES for us or do we need to
|
||||
do so? Use 1 for yes, 0 for no.
|
||||
|
||||
81) Vhost Character: The character used to represent the vHost mode, if
|
||||
84) Vhost Character: The character used to represent the vHost mode, if
|
||||
this is supported by the IRCd.
|
||||
|
||||
82) TS6: Does the IRCd support TS6? Use 1 for yes, 0 for no.
|
||||
85) TS6: Does the IRCd support TS6? Use 1 for yes, 0 for no.
|
||||
|
||||
83) UMode +h: Does the IRCd support usermode +h for helpers?
|
||||
86) UMode +h: Does the IRCd support usermode +h for helpers?
|
||||
Use 1 for yes, 0 for no.
|
||||
|
||||
84) P10: Is this IRCd a P10-style IRCd? Use 1 for yes, 0 for no.
|
||||
87) P10: Is this IRCd a P10-style IRCd? Use 1 for yes, 0 for no.
|
||||
|
||||
85) Character Set: Unreal passes the character set during PROTOCTL,
|
||||
88) Character Set: Unreal passes the character set during PROTOCTL,
|
||||
the value is stored here. Set this NULL to start.
|
||||
|
||||
86) Reports sync: Does the IRCd report when it's in sync (or done bursting,
|
||||
89) Reports sync: Does the IRCd report when it's in sync (or done bursting,
|
||||
depending on how you want to say it)? Remember to set
|
||||
the sync state for servers correctly if it does.
|
||||
Use 1 for yes, 0 for no.
|
||||
|
||||
87) Channel CIDR: Set to 1 if channel bans, excepts and invites
|
||||
90) Channel CIDR: Set to 1 if channel bans, excepts and invites
|
||||
support CIDR masks. Expected syntax: *!*@ip/mask.
|
||||
When set to 1, anope will only parse strict CIDR masks.
|
||||
IRCd's that try to correct invalid CIDR's (like nefarious)
|
||||
@@ -446,6 +374,15 @@ How To Add IRCd Support
|
||||
Contact the anope Dev Team if this is the case.
|
||||
Set to 0 if CIDR's are not supported by your IRCd.
|
||||
|
||||
91) Throttle Mode: The IRCd has a channelmode for throttling joins per-user.
|
||||
Use 1 for yes, 0 for no.
|
||||
|
||||
92) CMode j: CMODE_ that defines throttle mode. Use 0 for no support.
|
||||
|
||||
93) Delayed client introduction: Delay the introduction of services pseudo-
|
||||
client till after we have received the uplinks
|
||||
CAPAB.
|
||||
|
||||
So we've had this long list. Now there's a second struct to fill. This
|
||||
struct isn't as long as the previous one though, so we'll handle it quite
|
||||
quick compared to the previous one.
|
||||
@@ -528,7 +465,7 @@ How To Add IRCd Support
|
||||
void moduleAddIRCDMsgs(void)
|
||||
{
|
||||
m = createMessage("NICK", anope_event_nick);
|
||||
addCoreMessage(IRCD,m);
|
||||
addCoreMessage(IRCD, m);
|
||||
}
|
||||
|
||||
Each event should have a event handler if its important enough to be
|
||||
@@ -564,30 +501,19 @@ How To Add IRCd Support
|
||||
to read these lines and set itself up to to handle these events better.
|
||||
When adding support for your ircd, take the following steps.
|
||||
|
||||
1) In the ircd.c find the function anope_cmd_capab(); this function will
|
||||
send the CAPAB/PROTOCTL line (consult your ircd documentation for
|
||||
which to send). In a single line type in the tokens that anope must
|
||||
send. Here is an example of Hybrid's capab line:
|
||||
|
||||
/* CAPAB */
|
||||
void anope_cmd_capab()
|
||||
{
|
||||
send_cmd(NULL, "CAPAB TS5 EX IE HOPS HUB AOPS");
|
||||
}
|
||||
|
||||
2) In the ircd.h file make sure to place the defines (see below) that
|
||||
1) In the ircd.h file make sure to place the defines (see below) that
|
||||
match your IRCd's tokens; only use the ones that matter to your ircd.
|
||||
Should your IRCd add new features not covered in the defined, please
|
||||
contact the Anope Dev team before doing so. See README for information
|
||||
on how to contact the Anope team.
|
||||
|
||||
3) Ensure that the CAPAB/PROTOCTL event his handled correctly.
|
||||
2) Ensure that the CAPAB/PROTOCTL event his handled correctly.
|
||||
|
||||
A) In the function "moduleAddIRCDMsgs" making sure that you have the
|
||||
following two lines:
|
||||
|
||||
m = createMessage("CAPAB", anope_event_capab);
|
||||
addCoreMessage(IRCD,m);
|
||||
addCoreMessage(IRCD, m);
|
||||
|
||||
B) Add the function to handle the event
|
||||
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@ Anope MySQL Support
|
||||
core, we decided to save it for 2.0. However, having your db's easily
|
||||
accessible on your website is still a great feature.
|
||||
|
||||
PHASE 1:Anope will be able to save all it's databases to MySQL. It will
|
||||
PHASE 1:Anope will be able to save all its databases to MySQL. It will
|
||||
happen in conjunction with the current FFF databases. This first step is
|
||||
nothing more than a MySQL dump of the databases (i.e. read-only), since
|
||||
Anope will not (for now) read from Mysql. (COMPLETED)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
Highlighted News in Anope 1.7 (and soon 1.8)
|
||||
Highlighted News in Anope 1.8
|
||||
============================================
|
||||
* Added optional mail forking on non Windows OS
|
||||
* Added a new and improved ./Config script.
|
||||
* Added MySQL phase 2 implementation (see docs/MYSQL).
|
||||
* Added NickServ registration delays.
|
||||
@@ -21,7 +22,7 @@ Highlighted News in Anope 1.7 (and soon 1.8)
|
||||
- Charybdis 1.0 or later
|
||||
- DreamForge 4.6.7
|
||||
- Hybrid 7 or later
|
||||
- InspIRCd 1.0 or later (including 1.1)
|
||||
- InspIRCd 1.x and 2.0
|
||||
- Plexus 2.0 or later (including 3.0)
|
||||
- PTLink 6.15 or later
|
||||
- RageIRCd 2.0 or later
|
||||
@@ -45,91 +46,7 @@ Highlighted News in Anope 1.7 (and soon 1.8)
|
||||
to be saved incorrectly. Note that this breaks backwards
|
||||
compatibility on nick.db !!!
|
||||
|
||||
Highlighted News in Anope 1.6
|
||||
=============================
|
||||
* Fixed various exploits and vulnerabilities.
|
||||
* Fixed various language typos and inconsistencies.
|
||||
* Improved ignore system.
|
||||
* Improved ./configure script.
|
||||
* Removed all compile warning fixed.
|
||||
* Converted HelpServ into a proper service.
|
||||
* Added external module support.
|
||||
* Added Defense Condition (DEFCON) System.
|
||||
* Added MySQL support for mirroring databases.
|
||||
* Added multi-server configuration.
|
||||
* Added multi-domain /OS GLOBAL support.
|
||||
* Added combined +oq +oa +ha +va on net-joins.
|
||||
* Added support for ircd changes and upgrades.
|
||||
* Added HostSetters configuration directive.
|
||||
* Added /OS STAFF command.
|
||||
* Added /OS SVSNICK command.
|
||||
* Added /OS CHANKILL command.
|
||||
* Added /MS STAFF command.
|
||||
* Added /NS UPDATE command.
|
||||
* Added /MS SENDALL command.
|
||||
* Added /NS GETMAIL command.
|
||||
* Added /HS DELALL command.
|
||||
* Added /HS LIST command with pattern matching.
|
||||
* New support scripts and tools.
|
||||
* New ircd support, complete list: DreamForge 4.6.7, Bahamut 1.4.27,
|
||||
UnrealIRCd 3.1.1, UltimateIRCd 2.8.2,
|
||||
UltimateIRCd 3.0.0, Hybrid IRCd 7.0
|
||||
ViagraIRCd 1.3.x, PTlink 6.15.0
|
||||
* New Language files, complete list: cat.l, de.l, en_us.l, es.l, fr.l,
|
||||
gr.l, it.l, nl.l, pt.l, ru.l, tr.l
|
||||
|
||||
Highlighted News in Anope 1.4
|
||||
=============================
|
||||
|
||||
After the change from Epona to Anope
|
||||
------------------------------------
|
||||
* New Italian Language file
|
||||
* Added support for UltimateIRCd 3.0 and later
|
||||
* Services realtime logging to a channel
|
||||
* SuperAdmin directive for access to "super" commands.
|
||||
* Ban system is now exception aware.
|
||||
* HostServ for hostname masquerading.
|
||||
* Smarter XOP System.
|
||||
* Email verification/handshake upon registration.
|
||||
* Services can now /ignore users.
|
||||
* Smarter memo notification for channels.
|
||||
* Channel can be SUSPENDed instead of FORBIDen.
|
||||
|
||||
Before the change from Epona to Anope
|
||||
-------------------------------------
|
||||
* HostServ for networks that support them.
|
||||
* UnrealIRCd support has been rewritten, it is now fully
|
||||
working (hopefully) and officially supported again.
|
||||
* Added support for UltimateIRCd 2.8.2 and later.
|
||||
* A multi-threaded proxy detector that can scan Wingates,
|
||||
SOCKS 4/5 and HTTP proxies on ports 3128 and 8080. Don't use
|
||||
it if you have not been authorized to use it by your system
|
||||
administrator!
|
||||
* The ChanServ AOP/SOP/VOP commands, and, on networks that
|
||||
support halfops, the HOP command, have been added. They
|
||||
allow a more user-friendly control of channel privileges.
|
||||
* Use of services IDs that allow an user to be automatically
|
||||
identified after a split (if he was identified before the split)
|
||||
in a secure way. This also saves lots of bandwidth.
|
||||
* Services' default language can now be set in services.conf.
|
||||
* The OperServ RANDOMNEWS command provides an easy way to show
|
||||
network news in a random manner without flooding your users
|
||||
with them (one news per connection).
|
||||
* The BotServ SET PRIVATE option allows services admins to
|
||||
make the bot usable by IRC operators only.
|
||||
* The OperServ SQLINE command allows you to forbid nick masks
|
||||
and even channel masks with the latest Bahamut.
|
||||
* The ChanServ AKICK STICK command allows akicks to be permanently
|
||||
kept on channel.
|
||||
* The ChanServ SET TOPIC command has been renamed to TOPIC, and
|
||||
a new BAN command has been added. They both have their own
|
||||
associated levels.
|
||||
* A SET PEACE command has been added to ChanServ. It prevents
|
||||
users to use pejorative services commands (DEOP, KICK, ...)
|
||||
on users with greater or equal levels.
|
||||
|
||||
Networks using Bahamut must upgrade to Bahamut 1.4.27 or later,
|
||||
while networks using UnrealIRCd must upgrade to Unreal 3.1.1.
|
||||
|
||||
For the full changes, see the Changes file.
|
||||
|
||||
|
||||
+1
-1211
File diff suppressed because it is too large
Load Diff
+139
@@ -0,0 +1,139 @@
|
||||
Highlighted News in Anope 1.7 (and soon 1.8)
|
||||
============================================
|
||||
* Added a new and improved ./Config script.
|
||||
* Added MySQL phase 2 implementation (see docs/MYSQL).
|
||||
* Added NickServ registration delays.
|
||||
* Added read receipts for memos.
|
||||
* Added a way for modules to store data with internal structures.
|
||||
* Added nick tracking support.
|
||||
* Added support for SVSHOLD.
|
||||
* Added support for U:Lined servers.
|
||||
* Added support for TS6 IRCd's.
|
||||
* Added support for Windows.
|
||||
* Added internal events for modules.
|
||||
* Added a way to suspend nicks.
|
||||
* Added support for module configuration directives.
|
||||
* Added translation support for modules.
|
||||
* Added a module pack with handy modules.
|
||||
* Added IRCd protocol modules.
|
||||
* Added support for new IRCd's. Currently supported:
|
||||
- Bahamut 1.4.27 or later (including 1.8)
|
||||
- Charybdis 1.0 or later
|
||||
- DreamForge 4.6.7
|
||||
- Hybrid 7 or later
|
||||
- InspIRCd 1.0 or later (including 1.1)
|
||||
- Plexus 2.0 or later (including 3.0)
|
||||
- PTLink 6.15 or later
|
||||
- RageIRCd 2.0 or later
|
||||
- Ratbox 2.0.6 or later
|
||||
- ShadowIRCd 4.0 beta 7 or later
|
||||
- Solid IRCd 3.4.6 or later
|
||||
- UltimateIRCd 2.8.2 or later (including 3.0)
|
||||
- UnrealIRCd 3.1.1 or later (including 3.2)
|
||||
- ViagraIRCd 1.3 or later
|
||||
* Added new languages. Currently included:
|
||||
Catalan, German, English, Spanish, French, Greek,
|
||||
Hungarian, Italian, Dutch, Polish, Portugese,
|
||||
Russian, Turkish
|
||||
* Added support for CIDR channel lists.
|
||||
* Converted the core to be completely modular.
|
||||
* Improved random number algorithm.
|
||||
* Removed proxy detector (see docs/PROXY).
|
||||
* Fixed various exploits and vulnerabilities.
|
||||
* Fixed various language typos and inconsistencies.
|
||||
* Fixed a bug in the database system causing nickserv passwords
|
||||
to be saved incorrectly. Note that this breaks backwards
|
||||
compatibility on nick.db !!!
|
||||
|
||||
Highlighted News in Anope 1.6
|
||||
=============================
|
||||
* Fixed various exploits and vulnerabilities.
|
||||
* Fixed various language typos and inconsistencies.
|
||||
* Improved ignore system.
|
||||
* Improved ./configure script.
|
||||
* Removed all compile warning fixed.
|
||||
* Converted HelpServ into a proper service.
|
||||
* Added external module support.
|
||||
* Added Defense Condition (DEFCON) System.
|
||||
* Added MySQL support for mirroring databases.
|
||||
* Added multi-server configuration.
|
||||
* Added multi-domain /OS GLOBAL support.
|
||||
* Added combined +oq +oa +ha +va on net-joins.
|
||||
* Added support for ircd changes and upgrades.
|
||||
* Added HostSetters configuration directive.
|
||||
* Added /OS STAFF command.
|
||||
* Added /OS SVSNICK command.
|
||||
* Added /OS CHANKILL command.
|
||||
* Added /MS STAFF command.
|
||||
* Added /NS UPDATE command.
|
||||
* Added /MS SENDALL command.
|
||||
* Added /NS GETMAIL command.
|
||||
* Added /HS DELALL command.
|
||||
* Added /HS LIST command with pattern matching.
|
||||
* New support scripts and tools.
|
||||
* New ircd support, complete list: DreamForge 4.6.7, Bahamut 1.4.27,
|
||||
UnrealIRCd 3.1.1, UltimateIRCd 2.8.2,
|
||||
UltimateIRCd 3.0.0, Hybrid IRCd 7.0
|
||||
ViagraIRCd 1.3.x, PTlink 6.15.0
|
||||
* New Language files, complete list: cat.l, de.l, en_us.l, es.l, fr.l,
|
||||
gr.l, it.l, nl.l, pt.l, ru.l, tr.l
|
||||
|
||||
Highlighted News in Anope 1.4
|
||||
=============================
|
||||
|
||||
After the change from Epona to Anope
|
||||
------------------------------------
|
||||
* New Italian Language file
|
||||
* Added support for UltimateIRCd 3.0 and later
|
||||
* Services realtime logging to a channel
|
||||
* SuperAdmin directive for access to "super" commands.
|
||||
* Ban system is now exception aware.
|
||||
* HostServ for hostname masquerading.
|
||||
* Smarter XOP System.
|
||||
* Email verification/handshake upon registration.
|
||||
* Services can now /ignore users.
|
||||
* Smarter memo notification for channels.
|
||||
* Channel can be SUSPENDed instead of FORBIDen.
|
||||
|
||||
Before the change from Epona to Anope
|
||||
-------------------------------------
|
||||
* HostServ for networks that support them.
|
||||
* UnrealIRCd support has been rewritten, it is now fully
|
||||
working (hopefully) and officially supported again.
|
||||
* Added support for UltimateIRCd 2.8.2 and later.
|
||||
* A multi-threaded proxy detector that can scan Wingates,
|
||||
SOCKS 4/5 and HTTP proxies on ports 3128 and 8080. Don't use
|
||||
it if you have not been authorized to use it by your system
|
||||
administrator!
|
||||
* The ChanServ AOP/SOP/VOP commands, and, on networks that
|
||||
support halfops, the HOP command, have been added. They
|
||||
allow a more user-friendly control of channel privileges.
|
||||
* Use of services IDs that allow an user to be automatically
|
||||
identified after a split (if he was identified before the split)
|
||||
in a secure way. This also saves lots of bandwidth.
|
||||
* Services' default language can now be set in services.conf.
|
||||
* The OperServ RANDOMNEWS command provides an easy way to show
|
||||
network news in a random manner without flooding your users
|
||||
with them (one news per connection).
|
||||
* The BotServ SET PRIVATE option allows services admins to
|
||||
make the bot usable by IRC operators only.
|
||||
* The OperServ SQLINE command allows you to forbid nick masks
|
||||
and even channel masks with the latest Bahamut.
|
||||
* The ChanServ AKICK STICK command allows akicks to be permanently
|
||||
kept on channel.
|
||||
* The ChanServ SET TOPIC command has been renamed to TOPIC, and
|
||||
a new BAN command has been added. They both have their own
|
||||
associated levels.
|
||||
* A SET PEACE command has been added to ChanServ. It prevents
|
||||
users to use pejorative services commands (DEOP, KICK, ...)
|
||||
on users with greater or equal levels.
|
||||
|
||||
Networks using Bahamut must upgrade to Bahamut 1.4.27 or later,
|
||||
while networks using UnrealIRCd must upgrade to Unreal 3.1.1.
|
||||
|
||||
For the full changes, see the Changes file.
|
||||
|
||||
For announcements and discussions about Anope, please visit our
|
||||
web site http://www.anope.org
|
||||
|
||||
|
||||
+2
-2
@@ -6,9 +6,9 @@ Anope Proxy Detector
|
||||
|
||||
1) Introduction
|
||||
|
||||
Anope has had a built-in proxy detector since it's first version. Recently,
|
||||
Anope has had a built-in proxy detector since its first version. Recently,
|
||||
however, this built-in proxy detector has been removed. This was because
|
||||
the Anope team found that the proxy detector was showing it's age, and the
|
||||
the Anope team found that the proxy detector was showing its age, and the
|
||||
time needed to restore it to a good state wasn't worth it, also considering
|
||||
that there are currently good alternatives out there which do the job as
|
||||
good as it can be done already.
|
||||
|
||||
+428
-377
@@ -1,377 +1,428 @@
|
||||
Anope -- a set of IRC services for IRC networks
|
||||
-----------------------------------------------
|
||||
|
||||
Anope is 2003-2008 Anope Team <team@anope.org>.
|
||||
Based on Epona 2000-2002 PegSoft <epona@pegsoft.net>.
|
||||
Based on Services 1996-1999 Andrew Church <achurch@achurch.org>.
|
||||
|
||||
This program is free but copyrighted software; see the file COPYING for
|
||||
details.
|
||||
|
||||
Information about Anope may be found at http://www.anope.org/
|
||||
Information about Epona may be found at http://www.epona.org/
|
||||
Information about Services may be found at http://www.ircservices.esper.net/
|
||||
|
||||
Table of Contents
|
||||
-----------------
|
||||
1) Credits
|
||||
2) Presentation
|
||||
3) Installation
|
||||
4) Command Line Options
|
||||
5) Messages Translation
|
||||
6) Contact and Mailing List
|
||||
|
||||
1) Credits
|
||||
|
||||
Anope is based on Lara's Epona version 1.4.14.
|
||||
Epona is based on Andy Church's IRC Services version 4.3.3.
|
||||
|
||||
The original credits:
|
||||
|
||||
* Mauritz Antunes
|
||||
Portuguese translation
|
||||
* Jose R. Holzmann, Raul S. Villarreal
|
||||
Spanish translation
|
||||
* Andrew Kempe <theshadow@shadowfire.org>
|
||||
News system
|
||||
* <d.duca@eurcom.net>
|
||||
Italian translation
|
||||
* <mikado@holyfire.com>
|
||||
Turkish translation
|
||||
* Andrew Kempe <theshadow@shadowfire.org>
|
||||
Session limiting
|
||||
|
||||
Epona credits:
|
||||
|
||||
* lara <lara@pegsoft.net>
|
||||
Main coding
|
||||
* CafeiN <oytuny@yahoo.com>
|
||||
Turkish translation
|
||||
* Sylvain Cresto aka tost <scresto@netsante.fr>
|
||||
FreeBSD 5 patch
|
||||
* Marcelo Conde Foscarini aka Bras <ircadmin@brmarket.net>
|
||||
Portuguese translation
|
||||
* Alvaro Toledo aka POLLITO <atoledo@keldon.org>
|
||||
Spanish translation
|
||||
* chemical <chemical@musicplay.de>
|
||||
German translation
|
||||
* shine <dh@shinewelt.de>
|
||||
German translation
|
||||
* Guven Guzelbey aka MeShGuL <guzelbey@cs.utk.edu>
|
||||
Turkish translation
|
||||
* Jordi Pujol <jordi.pujol@aujac.org>
|
||||
Catalan translation
|
||||
* Eva Dachs <evadachs@terra.es>
|
||||
Catalan translation
|
||||
* Toni Perez <toni.perez@aujac.org>
|
||||
Catalan translation
|
||||
* Sergios Karalis <sergios_k@hotmail.com>
|
||||
Greek translation
|
||||
* Thomas J. Stensas aka ShadowMaster <shadowmaster@shadow-realm.org>
|
||||
Ultimate 3.x support
|
||||
|
||||
Anope credits:
|
||||
|
||||
* Adam Kramer <ribosome@anope.org>
|
||||
* Alvaro Toledo <atoledo@keldon.org>
|
||||
* Amanda Folson <amanda@anope.org>
|
||||
* Andrew Berquist <vash@anope.org>
|
||||
* Björn Stiddien <keeper@anope.org>
|
||||
* Charles Kingsley <chaz@anope.org>
|
||||
* Chris Hogben <heinz@anope.org>
|
||||
* Daniel Engel <dane@zero.org>
|
||||
* David <dv@diboo.net>
|
||||
* David Narayan <jester@phrixus.net>
|
||||
* David Robson <rob@anope.org>
|
||||
* Daniele Nicolucci <jollino@sogno.net>
|
||||
* Florian Schulze <certus@anope.org>
|
||||
* Gabriel Acevedo H. <drstein@anope.org>
|
||||
* Jan Milants <viper@anope.org>
|
||||
* JH <jh@irc-chat.net>
|
||||
* Joris Vink <joris@anope.org>
|
||||
* Lucas Nussbaum <lucas@lucas-nussbaum.net>
|
||||
* Mark Summers <mark@goopler.net>
|
||||
* Matthew Beeching <jobe@invictachat.net>
|
||||
* Naram Qashat <cyberbotx@anope.org>
|
||||
* Pieter Bootsma <geniusdex@anope.org>
|
||||
* Robin Burchell <w00t@inspircd.org>
|
||||
* Thomas Juberg Stensås <ShadowMaster@Shadow-Realm.org>
|
||||
* Trystan .S Lee <trystan@nomadirc.net>
|
||||
* openglx <openglx@brasnerd.com.br>
|
||||
|
||||
Anope Translations:
|
||||
|
||||
* GeniusDex <geniusdex@anope.org> (nl.l)
|
||||
* Kein <kein-of@yandex.ru> (ru.l)
|
||||
* Stuff <the.stuff@gmx.de> (de.l)
|
||||
* Gabriel Acevedo H. <drstein@anope.org> (es.l)
|
||||
* Janos Kapitany <sarkanyka@cjbchat.hu> (hun.l)
|
||||
* Szymon S'wierkosz <szymek@adres.pl> (pl.l)
|
||||
|
||||
Anope uses the strlcat() and strlcpy() functions from OpenSSH 2.5.1p2.
|
||||
These functions are copyrighted by Todd C. Miller:
|
||||
|
||||
Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. The name of the author may not be used to endorse or promote
|
||||
products derived from this software without specific prior written
|
||||
permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED `AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
||||
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGE.
|
||||
|
||||
|
||||
2) Presentation
|
||||
|
||||
Anope is a set of Services for IRC networks that allows users to manage
|
||||
their nicks and channels in a secure and efficient way, and administrators
|
||||
to manage their network with powerful tools.
|
||||
|
||||
Currently available services are:
|
||||
|
||||
* NickServ, a powerful nickname manager that users can use to protect
|
||||
themselves against nick stealing. Each user has its own nickname
|
||||
group, that allows the user to register as many nicks as needed
|
||||
while still being able to take profit of his privileges and to
|
||||
modify the nick configuration. NickServ also has an optional
|
||||
password retrieval feature.
|
||||
|
||||
* ChanServ, a powerful channel manager that helps users to administer
|
||||
their channels in a totally customizable way. ChanServ has an
|
||||
internal list of privileged users and banned users that controls
|
||||
accesses on a per-channel basis. It eliminates all takeover
|
||||
problems, because of its powerful op/unban/invite and even mass
|
||||
deop and mass kick functions.
|
||||
|
||||
* MemoServ, an helpful companion that allows sending short messages
|
||||
to offline users, that they can then read when they come online
|
||||
later.
|
||||
|
||||
* BotServ, an original service that allows users to get a permanent,
|
||||
friendly bot on their channels in an easy way. Each bot can be
|
||||
configured to monitor the channels against floods, repetitions,
|
||||
caps writing, and swearing, and to take appropriate actions. It
|
||||
also can handle user-friendly commands (like !op, !deop, !voice,
|
||||
!devoice, !kick, and many others), say a short greet message when
|
||||
an user joins a channel, and even "take over" ChanServ actions such
|
||||
as auto-opping users, saying the entry notice, and so on. This
|
||||
service can be disabled if you want to save some bandwidth.
|
||||
|
||||
* OperServ, the IRCops' and IRC admins' black box, that allows them
|
||||
to manage the list of network bans (also known as AKILL (DALnet) or
|
||||
GLINE (Undernet)), to configure messages displayed to users when
|
||||
they log on, to set modes and to kick users from any channel, to
|
||||
send notices quickly to the entire network, and much more!
|
||||
|
||||
* HostServ, a neat service that allows users to show custom vHosts
|
||||
(virtual hosts) instead of their real IP address; this only works
|
||||
on daemons supporting ip cloaking, such as UnrealIRCd, UltimateIRCd
|
||||
and ViagraIRCd.
|
||||
|
||||
* HelpServ, a skeleton service used to serve help files.
|
||||
|
||||
Anope currently works with:
|
||||
|
||||
* Bahamut 1.4.27 or later (including 1.8)
|
||||
* Charybdis 1.0 or later
|
||||
* DreamForge 4.6.7
|
||||
* Hybrid 7 or later
|
||||
* InspIRCd 1.0 or later (including 1.1)
|
||||
* Plexus 2.0 or later (including 3.0)
|
||||
* PTlink 6.15 or later
|
||||
* RageIRCd 2.0 beta-6 or later
|
||||
* Ratbox 2.0.6 or later
|
||||
* ShadowIRCd 4.0 beta 7 or later
|
||||
* Solid IRCd 3.4.6 or later
|
||||
* UltimateIRCd 2.8.2 or later (including 3.0)
|
||||
* UnrealIRCd 3.1.1 or later (including 3.2)
|
||||
* ViagraIRCd 1.3 or later
|
||||
|
||||
Anope could also work with some of the daemons derived by the ones listed
|
||||
above, but there's no support for them if they work or don't work.
|
||||
|
||||
|
||||
3) Installation
|
||||
|
||||
See the INSTALL file for instruction on installing Anope.
|
||||
|
||||
|
||||
4) Command Line Options
|
||||
|
||||
Normally, Anope can be run simply by invoking the "services" executable.
|
||||
Anope will then use the defaults specified in the services.conf file, and
|
||||
connect to the specified uplink server. Alternatively, any of the
|
||||
following command-line options can be specified to change the default
|
||||
values:
|
||||
|
||||
-remote server[:port] Connect to the specified server
|
||||
-local host -or- Connect from the specified address (e.g. for
|
||||
[host]:[port] multihomed servers)
|
||||
-name servername Our server name (e.g. services.some.net)
|
||||
-desc string Description of us (e.g. SomeNet Services)
|
||||
-user username Username for Services' nicks (e.g. services)
|
||||
-host hostname Hostname for Services' nicks (e.g. esper.net)
|
||||
-dir directory Directory containing Services' data files
|
||||
(e.g. /usr/local/lib/services)
|
||||
-log filename Services log filename (e.g. services.log)
|
||||
-update secs How often to update databases (in seconds)
|
||||
-expire secs How often to check for nick/channel
|
||||
expiration (in seconds)
|
||||
|
||||
Additionally, the following command-line options can be used to modify
|
||||
the behavior of Anope:
|
||||
|
||||
-debug Enable debugging mode; more info sent to log (give
|
||||
option more times for more info)
|
||||
-readonly Enable read-only mode; no changes to databases
|
||||
allowed, .db files and log not written
|
||||
-skeleton Enable skeleton mode; like read-only mode, but only
|
||||
OperServ is available
|
||||
-nofork Do not fork after startup; log messages will be
|
||||
written to terminal (as well as to the log file
|
||||
if not in read-only mode)
|
||||
-forceload Try to load as much of the databases as possible,
|
||||
even if errors are encountered
|
||||
-noexpire Expiration routines won't be run at all
|
||||
-logchan Startup with logchan enabled
|
||||
-version Display the version of Anope
|
||||
-nothird Do not load the modules specified in ModulesAutoload
|
||||
or ModulesDelayedAutoload in the config file
|
||||
-protocoldebug Debug each incoming message after protocol parsing
|
||||
-support Used for support, same as -debug -nofork -nothird
|
||||
|
||||
Upon starting, Anope will parse its command-line parameters, open its
|
||||
logfile, then (assuming the -nofork option is not given) detach itself
|
||||
and run in the background. If Anope encounters a problem reading the
|
||||
database files or cannot connect to its uplink server, it will terminate
|
||||
immediately; otherwise, it will run until the connection is terminated
|
||||
(or a QUIT, SHUTDOWN, or RESTART command is sent; see OperServ's help).
|
||||
In the case of an error, an appropriate error message will be written to
|
||||
the log file.
|
||||
|
||||
If Anope is run with the "-readonly" command-line option, it can serve as
|
||||
a "backup" to the full version of services. A "full" version of services
|
||||
(run without -readonly) will automatically reintroduce its pseudo-clients
|
||||
(NickServ, ChanServ, etc.), while a "backup" services will not, thus
|
||||
allowing full services to be brought up at any time without disrupting
|
||||
the network (and without having to take backup services down beforehand).
|
||||
|
||||
If Anope is run with the "-skeleton" command-line option, it will not try
|
||||
to load the nickname or channel databases, and will respond with "service
|
||||
is inactive" messages to any commands sent to NickServ, ChanServ,
|
||||
MemoServ or BotServ. This can be useful as an emergency stopgap measure
|
||||
when the main copy of Anope cannot be started.
|
||||
|
||||
The "-debug" option is useful if you find or suspect a problem in Anope.
|
||||
Giving it once on the command line will cause all traffic to and from
|
||||
services as well as some other debugging information to be recorded in
|
||||
the log file; if you send a bug report, PLEASE include an excerpt from
|
||||
the log file WITH DEBUGGING ACTIVE; we cannot emphasize enough how
|
||||
important this is to tracking down problems. (You can also enable
|
||||
debugging while Services is running using OperServ's SET DEBUG command.)
|
||||
If you repeat the -debug option more than once, the debugging level will
|
||||
be increased, which provides more detailed information but may also slow
|
||||
Anope down considerably and make the log file grow dramatically faster
|
||||
(in particular, at debug level 4 a message is written to the log for
|
||||
every character received from the server). In general, a debug level of 1
|
||||
is sufficient for the coding team to be able to trace a problem, because
|
||||
all network traffic is included and we can usually reproduce the problem.
|
||||
|
||||
The "-forceload" option is provided to attempt recovery of data from
|
||||
corrupted or truncated databases. Normally, if Anope encounters an error
|
||||
writing to a database file, it will attempt to restore the original
|
||||
version of the file and report an error to the logfile and through
|
||||
WALLOPS. However, if this should fail (which normally should not happen),
|
||||
or if Anope is terminated abruptly e.g. by kill -9 or a power failure,
|
||||
then one or more of the databases may be corrupt. Normally, this will
|
||||
cause Anope to abort the next time you try to run it; however, if yo
|
||||
give the -forceload option to Anope, it will instead read as much as it
|
||||
can, then skip to the next database. For obvious reasons, it's highly
|
||||
recommended to keep backup copies of your databases in case something
|
||||
does happen (since Anope will stop at the first error in a database, even
|
||||
with -forceload, meaning you lose any data after that).
|
||||
|
||||
5) Messages Translations
|
||||
|
||||
Anope has a powerful option in NickServ allowing users to choose what
|
||||
language it must use when sending messages to users. Messages are stored
|
||||
in language files (located in the lang directory).
|
||||
|
||||
Anope is currently provided with thirteen languages: Catalan, Dutch,
|
||||
English, French, German, Greek, Hungarian, Italian, Polish, Portuguese,
|
||||
Russian, Spanish and Turkish. If you want to translate Anope messages
|
||||
into another language, follow this instructions:
|
||||
|
||||
* Copy the lang/en_us.l file to a meaningful name (for example, if
|
||||
you would like to translate messages in Spanish, you would rename
|
||||
it to es.l).
|
||||
|
||||
* Edit the file with your favorite text editor. Carefully read the
|
||||
instructions given at the top of the file, and start translating
|
||||
the whole file. The file is big, so make sure you have some coffee
|
||||
available ;) Try to avoid the use of English words as much as
|
||||
possible. If the new language contains only a few 'special'
|
||||
characters, try and use latin representations of it, if possible.
|
||||
Remember that most clients are only capable of handling the
|
||||
ISO-8859-1 charset. Of course, if you are translating Anope to a
|
||||
language with a totally different charset, such as Russian, feel
|
||||
free to use the one that suites it best (and the one that is in use
|
||||
by most speakers of that language ;)).
|
||||
|
||||
* When this is done, you have two solutions: either patch Services
|
||||
source code so they take in account the new language file
|
||||
(basically, you'll have to modify lang/Makefile, language.c and
|
||||
maybe services.h), or send us the translated file so we can make
|
||||
the patch and include your language in the next Anope release.
|
||||
|
||||
* Note that there is a language tool on bin/langtool.pl that can aid
|
||||
the verification process on newly created language files. Try to
|
||||
use it before you submit a language file.
|
||||
|
||||
When new major releases come out, you'll not have to retranslate the
|
||||
whole file; the Changes.lang file will help you to know which messages
|
||||
were added, modified or deleted.
|
||||
|
||||
If you did a language file translation, and want to let others use it,
|
||||
please send it to team@anope.org (don't forget to mention clearly your
|
||||
(nick)name, your e-mail and the language name). You'll of course get full
|
||||
credit for it, and will even get future final major releases before
|
||||
anyone else to complete the translation!... ;)
|
||||
|
||||
6) Contact
|
||||
|
||||
For announcements and discussions about Anope, please visit our
|
||||
Portal and Forums at http://www.anope.org/ -- make sure you register
|
||||
yourself and your network to get full benefits.
|
||||
|
||||
If you read the documentation carefully, and didn't find the answer to
|
||||
your question, feel free to post on the website forums or join our irc
|
||||
channel (irc.anope.org #anope). Once you join our Support channel, just
|
||||
type "? report" for instructions on how to report a Bug. Be as precise as
|
||||
possible when asking a question, because we have no extraordinary powers
|
||||
and can't guess things if they aren't provided. The more precise you are,
|
||||
the sooner you'll be likely to get an answer.
|
||||
|
||||
If you think you found a bug, add it to the bug tracking system
|
||||
(http://bugs.anope.org) and - again - be as precise as possible. Also say
|
||||
whether the bug happens always or under what circumstances, and anything
|
||||
that could be useful to track your bug down. If you wrote a patch, send
|
||||
it over. :)
|
||||
Anope - a set of IRC services for IRC networks
|
||||
----------------------------------------------
|
||||
|
||||
Anope is 2003-2014 Anope Team <team@anope.org>.
|
||||
Based on Epona 2000-2002 PegSoft <epona@pegsoft.net>.
|
||||
Based on Services 1996-1999 Andrew Church <achurch@achurch.org>.
|
||||
|
||||
This program is free but copyrighted software; see the file COPYING for
|
||||
details.
|
||||
|
||||
Information about Anope may be found at http://www.anope.org/
|
||||
Information about Epona may be found at http://www.epona.org/
|
||||
Information about Services may be found at http://www.ircservices.esper.net/
|
||||
|
||||
Table of Contents
|
||||
-----------------
|
||||
1) Credits
|
||||
2) Presentation
|
||||
3) Installation
|
||||
4) Command Line Options
|
||||
5) Messages Translation
|
||||
6) Adding Your Translation Into The Source
|
||||
7) Contact and Mailing List
|
||||
|
||||
1) Credits
|
||||
|
||||
Anope is based on Lara's Epona version 1.4.14.
|
||||
Epona is based on Andy Church's IRC Services version 4.3.3.
|
||||
|
||||
The original credits:
|
||||
|
||||
* Mauritz Antunes
|
||||
Portuguese translation
|
||||
* Jose R. Holzmann, Raul S. Villarreal
|
||||
Spanish translation
|
||||
* Andrew Kempe <theshadow@shadowfire.org>
|
||||
News system
|
||||
* <d.duca@eurcom.net>
|
||||
Italian translation
|
||||
* <mikado@holyfire.com>
|
||||
Turkish translation
|
||||
* Andrew Kempe <theshadow@shadowfire.org>
|
||||
Session limiting
|
||||
|
||||
Epona credits:
|
||||
|
||||
* lara <lara@pegsoft.net>
|
||||
Main coding
|
||||
* CafeiN <oytuny@yahoo.com>
|
||||
Turkish translation
|
||||
* Sylvain Cresto aka tost <scresto@netsante.fr>
|
||||
FreeBSD 5 patch
|
||||
* Marcelo Conde Foscarini aka Bras <ircadmin@brmarket.net>
|
||||
Portuguese translation
|
||||
* Alvaro Toledo aka POLLITO <atoledo@keldon.org>
|
||||
Spanish translation
|
||||
* chemical <chemical@musicplay.de>
|
||||
German translation
|
||||
* shine <dh@shinewelt.de>
|
||||
German translation
|
||||
* Guven Guzelbey aka MeShGuL <guzelbey@cs.utk.edu>
|
||||
Turkish translation
|
||||
* Jordi Pujol <jordi.pujol@aujac.org>
|
||||
Catalan translation
|
||||
* Eva Dachs <evadachs@terra.es>
|
||||
Catalan translation
|
||||
* Toni Perez <toni.perez@aujac.org>
|
||||
Catalan translation
|
||||
* Sergios Karalis <sergios_k@hotmail.com>
|
||||
Greek translation
|
||||
* Thomas J. Stensas aka ShadowMaster <shadowmaster@shadow-realm.org>
|
||||
Ultimate 3.x support
|
||||
|
||||
Anope credits:
|
||||
|
||||
* Adam Kramer <ribosome@anope.org>
|
||||
* Adam <adam@anope.org>
|
||||
* Alvaro Toledo <atoledo@keldon.org>
|
||||
* Amanda Folson <amanda@anope.org>
|
||||
* Andrew Berquist <vash@anope.org>
|
||||
* Björn Stiddien <keeper@anope.org>
|
||||
* Charles Kingsley <chaz@anope.org>
|
||||
* Chris Hogben <heinz@anope.org>
|
||||
* Daniel Engel <dane@zero.org>
|
||||
* David <dv@diboo.net>
|
||||
* David Narayan <jester@phrixus.net>
|
||||
* David Robson <rob@anope.org>
|
||||
* Daniele Nicolucci <jollino@sogno.net>
|
||||
* Florian Schulze <certus@anope.org>
|
||||
* Gabriel Acevedo H. <drstein@anope.org>
|
||||
* Jan Milants <viper@anope.org>
|
||||
* Jens Voss <dukepyrolator@anope.org>
|
||||
* JH <jh@irc-chat.net>
|
||||
* Joris Vink <joris@anope.org>
|
||||
* Lee Holmes <lethality@anope.org>
|
||||
* Lucas Nussbaum <lucas@lucas-nussbaum.net>
|
||||
* Mark Summers <mark@goopler.net>
|
||||
* Matthew Beeching <jobe@invictachat.net>
|
||||
* Naram Qashat <cyberbotx@anope.org>
|
||||
* Phil Lavin <phil@anope.org>
|
||||
* Pieter Bootsma <geniusdex@anope.org>
|
||||
* Robin Burchell <w00t@inspircd.org>
|
||||
* Sean Roe <therock247uk@anope.org>
|
||||
* Sebastian V <hal9000@anope.org>
|
||||
* Thomas Juberg Stensås <ShadowMaster@Shadow-Realm.org>
|
||||
* Trystan .S Lee <trystan@nomadirc.net>
|
||||
* openglx <openglx@brasnerd.com.br>
|
||||
|
||||
Anope Translations:
|
||||
|
||||
* GeniusDex <geniusdex@anope.org> (nl.l)
|
||||
* Kein <kein-of@yandex.ru> (ru.l)
|
||||
* Maik Funke <Han@mefalcon.org> (de.l)
|
||||
* Gabriel Acevedo H. <drstein@anope.org> (es.l)
|
||||
* Janos Kapitany <sarkanyka@cjbchat.hu> (hun.l)
|
||||
* Szymon S'wierkosz <szymek@adres.pl> (pl.l)
|
||||
* Christopher N. <saka@epiknet.org> (fr.l)
|
||||
* Yusuf Kurekci <ysfm.20@gmail.com> (tr.l)
|
||||
|
||||
Anope uses the strlcat() and strlcpy() functions from OpenSSH 2.5.1p2.
|
||||
These functions are copyrighted by Todd C. Miller:
|
||||
|
||||
Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. The name of the author may not be used to endorse or promote
|
||||
products derived from this software without specific prior written
|
||||
permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED `AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
||||
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGE.
|
||||
|
||||
|
||||
2) Presentation
|
||||
|
||||
Anope is a set of Services for IRC networks that allows users to manage
|
||||
their nicks and channels in a secure and efficient way, and administrators
|
||||
to manage their network with powerful tools.
|
||||
|
||||
Currently available services are:
|
||||
|
||||
* NickServ, a powerful nickname manager that users can use to protect
|
||||
themselves against nick stealing. Each user has its own nickname
|
||||
group, that allows the user to register as many nicks as needed
|
||||
while still being able to take profit of his privileges and to
|
||||
modify the nick configuration. NickServ also has an optional
|
||||
password retrieval feature.
|
||||
|
||||
* ChanServ, a powerful channel manager that helps users to administer
|
||||
their channels in a totally customizable way. ChanServ has an
|
||||
internal list of privileged users and banned users that controls
|
||||
accesses on a per-channel basis. It eliminates all takeover
|
||||
problems, because of its powerful op/unban/invite and even mass
|
||||
deop and mass kick functions.
|
||||
|
||||
* MemoServ, an helpful companion that allows sending short messages
|
||||
to offline users, that they can then read when they come online
|
||||
later.
|
||||
|
||||
* BotServ, an original service that allows users to get a permanent,
|
||||
friendly bot on their channels in an easy way. Each bot can be
|
||||
configured to monitor the channels against floods, repetitions,
|
||||
caps writing, and swearing, and to take appropriate actions. It
|
||||
also can handle user-friendly commands (like !op, !deop, !voice,
|
||||
!devoice, !kick, and many others), say a short greet message when
|
||||
an user joins a channel, and even "take over" ChanServ actions such
|
||||
as auto-opping users, saying the entry notice, and so on. This
|
||||
service can be disabled if you want to save some bandwidth.
|
||||
|
||||
* OperServ, the IRCops' and IRC admins' black box, that allows them
|
||||
to manage the list of network bans (also known as AKILL (DALnet) or
|
||||
GLINE (Undernet)), to configure messages displayed to users when
|
||||
they log on, to set modes and to kick users from any channel, to
|
||||
send notices quickly to the entire network, and much more!
|
||||
|
||||
* HostServ, a neat service that allows users to show custom vHosts
|
||||
(virtual hosts) instead of their real IP address; this only works
|
||||
on daemons supporting ip cloaking, such as UnrealIRCd, UltimateIRCd
|
||||
and ViagraIRCd.
|
||||
|
||||
* HelpServ, a skeleton service used to serve help files.
|
||||
|
||||
Anope currently works with:
|
||||
|
||||
* Bahamut 1.4.27 or later (including 1.8)
|
||||
* Charybdis 1.0 or later
|
||||
* DreamForge 4.6.7
|
||||
* Hybrid 8.1 or later
|
||||
* InspIRCd 1.x, and 2.0
|
||||
* Plexus 2.0 or later (including 3.0)
|
||||
* PTlink 6.15 or later
|
||||
* RageIRCd 2.0 beta-6 or later
|
||||
* Ratbox 2.0.6 or later
|
||||
* ShadowIRCd 4.0 beta 7 or later
|
||||
* Solid IRCd 3.4.6 or later
|
||||
* UltimateIRCd 2.8.2 or later (including 3.0)
|
||||
* UnrealIRCd 3.1.1 or later (including 3.2)
|
||||
* ViagraIRCd 1.3 or later
|
||||
|
||||
Anope could also work with some of the daemons derived by the ones listed
|
||||
above, but there's no support for them if they work or don't work.
|
||||
|
||||
|
||||
3) Installation
|
||||
|
||||
See the INSTALL file for instruction on installing Anope.
|
||||
|
||||
|
||||
4) Command Line Options
|
||||
|
||||
Normally, Anope can be run simply by invoking the "services" executable.
|
||||
Anope will then use the defaults specified in the services.conf file, and
|
||||
connect to the specified uplink server. Alternatively, any of the
|
||||
following command-line options can be specified to change the default
|
||||
values:
|
||||
|
||||
-remote server[:port] Connect to the specified server
|
||||
-local host -or- Connect from the specified address (e.g. for
|
||||
[host]:[port] multihomed servers)
|
||||
-name servername Our server name (e.g. services.some.net)
|
||||
-desc string Description of us (e.g. SomeNet Services)
|
||||
-user username Username for Services' nicks (e.g. services)
|
||||
-host hostname Hostname for Services' nicks (e.g. esper.net)
|
||||
-dir directory Directory containing Services' data files
|
||||
(e.g. /usr/local/lib/services)
|
||||
-log filename Services log filename (e.g. services.log)
|
||||
-update secs How often to update databases (in seconds)
|
||||
-expire secs How often to check for nick/channel
|
||||
expiration (in seconds)
|
||||
|
||||
Additionally, the following command-line options can be used to modify
|
||||
the behavior of Anope:
|
||||
|
||||
-debug Enable debugging mode; more info sent to log (give
|
||||
option more times for more info)
|
||||
-readonly Enable read-only mode; no changes to databases
|
||||
allowed, .db files and log not written
|
||||
-skeleton Enable skeleton mode; like read-only mode, but only
|
||||
OperServ is available
|
||||
-nofork Do not fork after startup; log messages will be
|
||||
written to terminal (as well as to the log file
|
||||
if not in read-only mode)
|
||||
-forceload Try to load as much of the databases as possible,
|
||||
even if errors are encountered
|
||||
-noexpire Expiration routines won't be run at all
|
||||
-logchan Startup with logchan enabled
|
||||
-version Display the version of Anope
|
||||
-nothird Do not load the modules specified in ModulesAutoload
|
||||
or ModulesDelayedAutoload in the config file
|
||||
-protocoldebug Debug each incoming message after protocol parsing
|
||||
-support Used for support, same as -debug -nofork -nothird
|
||||
|
||||
Upon starting, Anope will parse its command-line parameters, open its
|
||||
logfile, then (assuming the -nofork option is not given) detach itself
|
||||
and run in the background. If Anope encounters a problem reading the
|
||||
database files or cannot connect to its uplink server, it will terminate
|
||||
immediately; otherwise, it will run until the connection is terminated
|
||||
(or a QUIT, SHUTDOWN, or RESTART command is sent; see OperServ's help).
|
||||
In the case of an error, an appropriate error message will be written to
|
||||
the log file.
|
||||
|
||||
If Anope is run with the "-readonly" command-line option, it can serve as
|
||||
a "backup" to the full version of services. A "full" version of services
|
||||
(run without -readonly) will automatically reintroduce its pseudo-clients
|
||||
(NickServ, ChanServ, etc.), while a "backup" services will not, thus
|
||||
allowing full services to be brought up at any time without disrupting
|
||||
the network (and without having to take backup services down beforehand).
|
||||
|
||||
If Anope is run with the "-skeleton" command-line option, it will not try
|
||||
to load the nickname or channel databases, and will respond with "service
|
||||
is inactive" messages to any commands sent to NickServ, ChanServ,
|
||||
MemoServ or BotServ. This can be useful as an emergency stopgap measure
|
||||
when the main copy of Anope cannot be started.
|
||||
|
||||
The "-debug" option is useful if you find or suspect a problem in Anope.
|
||||
Giving it once on the command line will cause all traffic to and from
|
||||
services as well as some other debugging information to be recorded in
|
||||
the log file; if you send a bug report, PLEASE include an excerpt from
|
||||
the log file WITH DEBUGGING ACTIVE; we cannot emphasize enough how
|
||||
important this is to tracking down problems. (You can also enable
|
||||
debugging while Services is running using OperServ's SET DEBUG command.)
|
||||
If you repeat the -debug option more than once, the debugging level will
|
||||
be increased, which provides more detailed information but may also slow
|
||||
Anope down considerably and make the log file grow dramatically faster
|
||||
(in particular, at debug level 4 a message is written to the log for
|
||||
every character received from the server). In general, a debug level of 1
|
||||
is sufficient for the coding team to be able to trace a problem, because
|
||||
all network traffic is included and we can usually reproduce the problem.
|
||||
|
||||
The "-forceload" option is provided to attempt recovery of data from
|
||||
corrupted or truncated databases. Normally, if Anope encounters an error
|
||||
writing to a database file, it will attempt to restore the original
|
||||
version of the file and report an error to the logfile and through
|
||||
WALLOPS. However, if this should fail (which normally should not happen),
|
||||
or if Anope is terminated abruptly e.g. by kill -9 or a power failure,
|
||||
then one or more of the databases may be corrupt. Normally, this will
|
||||
cause Anope to abort the next time you try to run it; however, if yo
|
||||
give the -forceload option to Anope, it will instead read as much as it
|
||||
can, then skip to the next database. For obvious reasons, it's highly
|
||||
recommended to keep backup copies of your databases in case something
|
||||
does happen (since Anope will stop at the first error in a database, even
|
||||
with -forceload, meaning you lose any data after that).
|
||||
|
||||
5) Messages Translations
|
||||
|
||||
Anope has a powerful option in NickServ allowing users to choose what
|
||||
language it must use when sending messages to users. Messages are stored
|
||||
in language files (located in the lang directory).
|
||||
|
||||
Anope is currently provided with thirteen languages: Catalan, Dutch,
|
||||
English, French, German, Greek, Hungarian, Italian, Polish, Portuguese,
|
||||
Russian, Spanish and Turkish. If you want to translate Anope messages
|
||||
into another language, follow this instructions:
|
||||
|
||||
* Copy the lang/en_us.l file to a meaningful name (for example, if
|
||||
you would like to translate messages in Spanish, you would rename
|
||||
it to es.l).
|
||||
|
||||
* Edit the file with your favorite text editor. Carefully read the
|
||||
instructions given at the top of the file, and start translating
|
||||
the whole file. The file is big, so make sure you have some coffee
|
||||
available ;) Try to avoid the use of English words as much as
|
||||
possible. If the new language contains only a few 'special'
|
||||
characters, try and use latin representations of it, if possible.
|
||||
Remember that most clients are only capable of handling the
|
||||
ISO-8859-1 charset. Of course, if you are translating Anope to a
|
||||
language with a totally different charset, such as Russian, feel
|
||||
free to use the one that suites it best (and the one that is in use
|
||||
by most speakers of that language ;)).
|
||||
|
||||
* When this is done, you have two solutions: either patch Services
|
||||
source code so they take in account the new language file (section 6),
|
||||
or send us the translated file so we can make the patch and include
|
||||
your language in the next Anope release.
|
||||
|
||||
* Note that there is a language tool on bin/langtool.pl that can aid
|
||||
the verification process on newly created language files. Try to
|
||||
use it before you submit a language file.
|
||||
|
||||
When new major releases come out, you'll not have to retranslate the
|
||||
whole file; the Changes.lang file will help you to know which messages
|
||||
were added, modified or deleted.
|
||||
|
||||
If you did a language file translation, and want to let others use it,
|
||||
please send it to team@anope.org (don't forget to mention clearly your
|
||||
(nick)name, your e-mail and the language name). You'll of course get full
|
||||
credit for it, and will even get future final major releases before
|
||||
anyone else to complete the translation!... ;)
|
||||
|
||||
6) Adding Your Translation Into The Source
|
||||
|
||||
First, get the latest version of Anope. This can be done by doing
|
||||
'git clone git://github.com/anope/anope anope-stable'
|
||||
|
||||
Second, Place your language file in lang/, and type 'git add file.l`. Where file is
|
||||
your language file.
|
||||
|
||||
Next, edit lang/Makefile(.win32) and add your file into both the LANGOBJS variable and
|
||||
the LANGSRCS variable (alphabetically please). Then, go down and add an entry for
|
||||
it similar the others, eg:
|
||||
en_us: en_us.l langcomp index
|
||||
./langcomp $@.l
|
||||
(which creates the english language file)
|
||||
|
||||
Now, edit include/services.h and search for "#define LANG_EN_US", and add your language to
|
||||
the bottom of the list, eg:
|
||||
#define LANG_BLAH 16 /* Blah language! */
|
||||
(given the language above its number is 15).
|
||||
Then change the NUM_LANGS to one more than it currently is (in this case, 17)
|
||||
and add one to USED_LANGS.
|
||||
|
||||
Finially, edit src/language.c and add your language to the bottom of the array there, eg:
|
||||
...
|
||||
LANG_HUN, /* Hungarian */
|
||||
LANG_PL, /* Polish */
|
||||
LANG_BLAH, /* Blah language! */
|
||||
};
|
||||
then, go down and add it with the others using load_lang(), eg:
|
||||
...
|
||||
load_lang(LANG_HUN, "hun");
|
||||
load_lang(LANG_PL, "pl");
|
||||
load_lang(LANG_BLAH, "blah");
|
||||
|
||||
Now use 'git diff HEAD > language.diff` to get the changes you made, and if it looks good (test it)
|
||||
email it to team@anope.org!
|
||||
|
||||
Please be aware we will only include a new language if there is sufficient demand for it.
|
||||
|
||||
Please do not be disappointed if we do not include your language within Anope.
|
||||
|
||||
Check Changes.lang in order for your language to continue to work on your copy of Anope upgrades.
|
||||
|
||||
7) Contact
|
||||
|
||||
For announcements and discussions about Anope, please visit our
|
||||
Portal and Forums at http://www.anope.org/ -- make sure you register
|
||||
yourself and your network to get full benefits.
|
||||
|
||||
If you read the documentation carefully, and didn't find the answer to
|
||||
your question, feel free to post on the website forums or join our irc
|
||||
channel (irc.anope.org #anope). Once you join our Support channel, just
|
||||
type "? report" for instructions on how to report a Bug. Be as precise as
|
||||
possible when asking a question, because we have no extraordinary powers
|
||||
and can't guess things if they aren't provided. The more precise you are,
|
||||
the sooner you'll be likely to get an answer.
|
||||
|
||||
If you think you found a bug, add it to the bug tracking system
|
||||
(http://bugs.anope.org) and - again - be as precise as possible. Also say
|
||||
whether the bug happens always or under what circumstances, and anything
|
||||
that could be useful to track your bug down. If you wrote a patch, send
|
||||
it over. :)
|
||||
|
||||
+202
-223
@@ -1,223 +1,202 @@
|
||||
Anope for Windows
|
||||
-----------------
|
||||
|
||||
1) Building the Source
|
||||
2) Installation
|
||||
3) Compiling Modules
|
||||
4) Other compile options
|
||||
5) Credits
|
||||
|
||||
1) Building the Source
|
||||
|
||||
NOTE: If you have downloaded one of the pre-compiled installers, you do
|
||||
NOT need to complete this step, and you can proceed to step 2.
|
||||
|
||||
If you want to build Anope from source on a Win32 system, you will need
|
||||
to follow this instructions:
|
||||
|
||||
1) Download the required files:
|
||||
|
||||
* Current Anope source:
|
||||
http://sourceforge.net/project/showfiles.php?group_id=94081
|
||||
|
||||
* CMake:
|
||||
http://www.cmake.org/cmake/resources/software.html
|
||||
|
||||
(NOTE: When installing, tell CMake to add itself to the PATH.)
|
||||
|
||||
If you have Visual C++ 6, 7 (.NET 2002/2003), 8 (2005), or 9 (2008) skip ahead to step 2, else you
|
||||
need to download the following free components from Microsoft. Once
|
||||
downloaded, install these packages.
|
||||
|
||||
* Microsoft Visual C++ 2008 Express Edition:
|
||||
http://www.microsoft.com/express/vc/
|
||||
|
||||
or
|
||||
|
||||
* Microsoft Visual C++ 2005 Express Edition:
|
||||
http://www.microsoft.com/downloads/details.aspx?FamilyId=7B0B0339-613A-46E6-AB4D-080D4D4A8C4E&displaylang=en
|
||||
|
||||
then download and install:
|
||||
|
||||
* Microsoft Windows 2008 SDK:
|
||||
http://www.microsoft.com/downloads/details.aspx?FamilyId=E6E1C3DF-A74F-4207-8586-711EBE331CDC&displaylang=en
|
||||
|
||||
or (if you prefer a smaller download)
|
||||
|
||||
* Microsoft Windows 2003 Platform SDK: (Requires WGA validation)
|
||||
http://www.microsoft.com/downloads/details.aspx?FamilyId=0BAF2B35-C656-4969-ACE8-E4C0C0716ADB&displaylang=en
|
||||
|
||||
(NOTE: Although they say for Windows Server 2003 or 2008, they do infact work on all supported
|
||||
versions of Windows. When installing the 2003 SDK, you should select the Custom option, and only select
|
||||
to have the Microsoft Windows Core SDK installed. When installing the 2008 SDK, you should select the
|
||||
Custom option, and only select to have the Developer Tools installed, but also expand that and deselect
|
||||
the Visual C++ Compilers as well as the Mobile Tools. Doing this will decrease the install time as well
|
||||
as the space used by the SDK.)
|
||||
|
||||
If you chose to download the 2003 SDK, it will not work out-of-the-box on either Visual C++ 2005 Express or
|
||||
Visual C++ 2008 Express. The 2008 SDK will work out-of-the-box with Visual C++ 2008 Express but not with
|
||||
Visual C++ 2005 Express.
|
||||
|
||||
2) Unpack the Anope tarball with your favorite uncompression program
|
||||
(WinZip or WinRAR, etc).
|
||||
|
||||
3) (Note before this step: If you fall under one of the situations at the end of Step 1 where it says that the
|
||||
SDK will not work out of the box, do not bring up the Visual C++ Command Prompt by using the link in
|
||||
the Windows Start Menu. Instead, edit vsvars32.bat in the directory where you unpacked the source code
|
||||
in step 2, so the first line that says "@SET VSINSTALLDIR=<whatever>" has the directory where you installed
|
||||
Visual C++ Express to, if different from the default. Save the file and then run it instead.)
|
||||
|
||||
Bring up the Visual C++ Command Prompt; This will launch a
|
||||
DOS Command Prompt like window, which will set the environment
|
||||
properties needed to make Anope.
|
||||
|
||||
Create a new directory, which will be used to hold the build files. You can make it
|
||||
be a directory under the source directory unpacked in step 2, or somewhere else entirely.
|
||||
|
||||
Change directories to this new folder, by typing:
|
||||
|
||||
cd <path to build directory>
|
||||
|
||||
e.g.
|
||||
|
||||
cd c:\anope-build
|
||||
|
||||
4) You now need to configure Anope to your requirements. At the prompt type:
|
||||
|
||||
<path to source directory>\Config.bat
|
||||
|
||||
NOTE: If you run an Anti-Virus program such as McAfee or Norton, you may
|
||||
be unable to run this command due to the protection in place. Some Anti-
|
||||
Virus programs may detect the Anope Configuration Tool as a worm, however
|
||||
this is not the case. If you are prompted to allow or deny execution of
|
||||
the script, you should choose allow. If the script fails to run, and no
|
||||
notice is displayed, please check your Anti-Virus settings before seeking
|
||||
assistance.
|
||||
|
||||
An interactive configuration program should guide you through the install
|
||||
options. You will be given a choice to use NMake or not. NMake will compile
|
||||
inside the command prompt window you are in. If you want to build within
|
||||
the Visual C++ IDE, say no to that option, and it'll create a Solution for
|
||||
you to open up.
|
||||
|
||||
If you cannot find whats causing the error, please visit our forums or
|
||||
our IRC Support channel for assistance.
|
||||
|
||||
5) You are now ready to compile. If you said you wanted to use NMake in step 4,
|
||||
at the prompt type:
|
||||
|
||||
nmake
|
||||
|
||||
Once you are back at the command prompt again, if there have been no
|
||||
errors, you are ready to go.
|
||||
|
||||
If instead you decided to use the Visual C++ IDE, open up the Anope.sln
|
||||
file. After the IDE has fully loaded, hit F7 to build everything.
|
||||
|
||||
Should you encounter errors with the installation process, check the
|
||||
messages displayed for advice on resolving them. If you are unable to
|
||||
resolve the issues yourself, seek assistance on our forums or in our
|
||||
IRC Support channel.
|
||||
|
||||
6) Finally you will need to install Anope. If you said you wanted to use NMake
|
||||
in step 4, at the prompt type:
|
||||
|
||||
nmake install
|
||||
|
||||
Otherwise, if you decided to use the Visual C++ IDE, find the project called
|
||||
INSTALL within the Solution Explorer. Right-click on INSTALL and choose Build.
|
||||
|
||||
When you have done this, all the files will be installed to where they belong.
|
||||
The only thing you need to do is rename "data/example.conf" to be "data/services.conf",
|
||||
and then follow the steps to set up Anope.
|
||||
|
||||
You have now completed the building phase of Anope for Windows. You can
|
||||
now move on to the next section, which is related to setting up Anope.
|
||||
|
||||
2) Installation
|
||||
|
||||
Since Anope for Windows does not use a visual interface, you must do the
|
||||
configuration with a text editor before proceeding with running Anope
|
||||
itself.
|
||||
|
||||
NOTE: You may need to open the configuration file with Wordpad, or a text
|
||||
editor which supports UNIX line endings. Opening the configuration file in
|
||||
Notepad will cause strange characters to appear, and you may not be able to
|
||||
edit the file correctly.
|
||||
|
||||
Open services.conf, and read through it carefully and adjust the settings
|
||||
you think you need to adjust. Pay special attention to these settings:
|
||||
|
||||
A) IRCDModule: This is the name of an IRCd Module that Anope will use
|
||||
to communicate with your server. Anope supports 15 IRCds,
|
||||
so ensure you set the right value here.
|
||||
B) RemoteServer: This is the address to your ircd, along with the port
|
||||
and password. You should consult your ircd
|
||||
documentation on how to link ircds.
|
||||
C) ServicesRoot: Remove the # and change the names to your nick so you
|
||||
can take control of services once they are online.
|
||||
D) UserKey1/2/3: Remove the # infront of the three UserKey settings, and
|
||||
change the parameters to numbers; around 6-7 digits will
|
||||
do.
|
||||
|
||||
If you are unsure of the settings, you can go to the dos command prompt
|
||||
and run "anope.exe -nofork -debug" and watch the information as it
|
||||
attempts to connect.
|
||||
|
||||
You can launch services in two ways. If you are sure that the entered
|
||||
configuration information is correct, simply double clicking the Anope
|
||||
executable will cause it to start; no window will pop up. If you'd rather
|
||||
have a more textual output, you can start at the dos prompt and type in
|
||||
"anope.exe". If services are successfully started up the dos prompt will
|
||||
seem to hang; at this point you can safely close the dos window.
|
||||
|
||||
3) Compiling Modules
|
||||
|
||||
If you want to build other modules than the ones shipped by default, you
|
||||
will need to modify the Makefile.inc.win32 file, in the src\modules folder.
|
||||
|
||||
A) Add modules; find the line stating "SRCS=" and add the name of the
|
||||
file to the end of the line. So if you have two files:
|
||||
|
||||
SRCS=file.c file2.c
|
||||
|
||||
If you are compiling a folder of module components, such as the example
|
||||
"catserv", you will need to add/change the "SUBS=" line. If you were
|
||||
compiling the "catserv" example, the line would look like this:
|
||||
|
||||
SUBS=catserv
|
||||
|
||||
B) When you've done this, use the same command prompt you set up in part
|
||||
1, change directories to the src\modules folder, and type:
|
||||
|
||||
nmake -f Makefile.win32
|
||||
|
||||
followed afterwards, by:
|
||||
|
||||
nmake -f Makefile.win32 install
|
||||
|
||||
C) You should now be able to load your modules on IRC via OperServ, or via
|
||||
the services.conf file.
|
||||
|
||||
|
||||
4) Other compile options
|
||||
|
||||
A) If you have trouble recompiling Anope, you should delete all files and folders
|
||||
within the build folder you created in step 3 of section 1. Afterwards, follow
|
||||
the directions from step 4 of section 1 down.
|
||||
|
||||
5) Credits
|
||||
|
||||
Anope is based on Epona and IRCServices. See CREDITS for more credits and
|
||||
a complete list of all developers.
|
||||
|
||||
Anope's Windows-specific code is provided by:
|
||||
|
||||
* Dominick Meglio <codemastr@unrealircd.com>
|
||||
* Trystan Scott Lee <trystan@nomadirc.net>
|
||||
* Chris Hogben <heinz@anope.org>
|
||||
|
||||
Anope's Windows Installer was made using:
|
||||
|
||||
* NSIS 2.20 <http://nsis.sourceforge.net>
|
||||
|
||||
Anope for Windows
|
||||
-----------------
|
||||
|
||||
1) Building the Source
|
||||
2) Installation
|
||||
3) Compiling Modules
|
||||
4) Other compile options
|
||||
5) Credits
|
||||
|
||||
1) Building the Source
|
||||
|
||||
NOTE: If you have downloaded one of the pre-compiled installers, you do
|
||||
NOT need to complete this step, and you can proceed to step 2.
|
||||
|
||||
If you want to build Anope from source on a Win32 system, you will need
|
||||
to follow this instructions:
|
||||
|
||||
1) Download the required files:
|
||||
|
||||
* Current Anope source:
|
||||
http://sourceforge.net/project/showfiles.php?group_id=94081
|
||||
|
||||
If you have Visual C++ 2008, 2010, or 2012 skip ahead to step 2, else you
|
||||
need to download the following free components from Microsoft. Once
|
||||
downloaded, install one of the following, for best results use MS VC 2010.
|
||||
|
||||
* Microsoft Visual C++ 2010 Express
|
||||
http://www.microsoft.com/visualstudio/eng/products/visual-studio-2010-express
|
||||
|
||||
or
|
||||
|
||||
* Microsoft Visual C++ 2008 Express Edition:
|
||||
http://www.microsoft.com/en-us/download/details.aspx?id=14597
|
||||
|
||||
* Microsoft Windows Platform SDK: (Requires WGA validation)
|
||||
http://www.microsoft.com/en-us/download/details.aspx?id=3138
|
||||
|
||||
* MySQL for Windows (only needed if building with MySQL enabled):
|
||||
http://dev.mysql.com/
|
||||
|
||||
(NOTE: Anope can be compiled against MySQL Version 3.23 and above)
|
||||
|
||||
|
||||
2) Unpack the Anope tarball with your favorite uncompression program
|
||||
(WinZip or WinRAR, etc).
|
||||
|
||||
3) Bring up the Visual C++ Command Prompt; This will launch a
|
||||
DOS Command Prompt like window, which will set the environment
|
||||
properties needed to make Anope.
|
||||
|
||||
Change directories to where you unpacked the source code in step 2, by typing:
|
||||
|
||||
cd <path to extracted source>
|
||||
|
||||
e.g.
|
||||
|
||||
cd c:\anope-stable
|
||||
|
||||
4) You now need to configure Anope to your requirements. At the prompt type:
|
||||
|
||||
Config.bat
|
||||
|
||||
NOTE: If you run an Anti-Virus program such as McAfee or Norton, you may
|
||||
be unable to run this command due to the protection in place. Some Anti-
|
||||
Virus programs may detect the Anope Configuration Tool as a worm, however
|
||||
this is not the case. If you are prompted to allow or deny execution of
|
||||
the script, you should choose allow. If the script fails to run, and no
|
||||
notice is displayed, please check your Anti-Virus settings before seeking
|
||||
assistance.
|
||||
|
||||
An interactive configuration program should guide you through the install
|
||||
options, and then detect your Microsoft Visual C++ Library files. If it
|
||||
fails to detect them, you should check you have everything installed.
|
||||
|
||||
If you cannot find whats causing the error, please visit our forums or
|
||||
our IRC Support channel for assistance.
|
||||
|
||||
5) You are now ready to compile. At the prompt type:
|
||||
|
||||
nmake -f Makefile.win32
|
||||
|
||||
Once you are back at the command prompt again, if there have been no
|
||||
errors, you are ready to go.
|
||||
|
||||
Should you encounter errors with the installation process, check the
|
||||
messages displayed for advice on resolving them. If you are unable to
|
||||
resolve the issues yourself, seek assistance on our forums or in our
|
||||
IRC Support channel.
|
||||
|
||||
6) Anope will install the files where they belong. The only thing you need
|
||||
to do is rename "data/example.conf" to be "data/services.conf".
|
||||
|
||||
You have now completed the building phase of Anope for Windows. You can
|
||||
now move on to the next section, which is related to setting up Anope.
|
||||
|
||||
2) Installation
|
||||
|
||||
Since Anope for Windows does not use a visual interface, you must do the
|
||||
configuration with a text editor before proceeding with running Anope
|
||||
itself.
|
||||
|
||||
NOTE: You may need to open the configuration file with Wordpad, or a text
|
||||
editor which supports UNIX line endings. Opening the configuration file in
|
||||
Notepad will cause strange characters to appear, and you may not be able to
|
||||
edit the file correctly.
|
||||
|
||||
Open services.conf, and read through it carefully and adjust the settings
|
||||
you think you need to adjust. Pay special attention to these settings:
|
||||
|
||||
A) IRCDModule: This is the name of an IRCd Module that Anope will use
|
||||
to communicate with your server. Anope supports 15 IRCds,
|
||||
so ensure you set the right value here.
|
||||
B) RemoteServer: This is the address to your ircd, along with the port
|
||||
and password. You should consult your ircd
|
||||
documentation on how to link ircds.
|
||||
C) ServicesRoot: Remove the # and change the names to your nick so you
|
||||
can take control of services once they are online.
|
||||
D) UserKey1/2/3: Remove the # infront of the three UserKey settings, and
|
||||
change the parameters to numbers; around 6-7 digits will
|
||||
do.
|
||||
|
||||
If you are unsure of the settings, you can go to the dos command prompt
|
||||
and run "anope.exe -nofork -debug" and watch the information as it
|
||||
attempts to connect.
|
||||
|
||||
You can launch services in two ways. If you are sure that the entered
|
||||
configuration information is correct, simply double clicking the Anope
|
||||
executable will cause it to start; no window will pop up. If you'd rather
|
||||
have a more textual output, you can start at the dos prompt and type in
|
||||
"anope.exe". If services are successfully started up the dos prompt will
|
||||
seem to hang; at this point you can safely close the dos window.
|
||||
|
||||
3) Compiling Modules
|
||||
|
||||
If you want to build other modules than the ones shipped by default, you
|
||||
will need to modify the Makefile.inc.win32 file, in the src\modules folder.
|
||||
|
||||
A) Add modules; find the line stating "SRCS=" and add the name of the
|
||||
file to the end of the line. So if you have two files:
|
||||
|
||||
SRCS=file.c file2.c
|
||||
|
||||
If you are compiling a folder of module components, such as the example
|
||||
"catserv", you will need to add/change the "SUBS=" line. If you were
|
||||
compiling the "catserv" example, the line would look like this:
|
||||
|
||||
SUBS=catserv
|
||||
|
||||
B) When you've done this, use the same command prompt you set up in part
|
||||
1, change directories to the src\modules folder, and type:
|
||||
|
||||
nmake -f Makefile.win32
|
||||
|
||||
followed afterwards, by:
|
||||
|
||||
nmake -f Makefile.win32 install
|
||||
|
||||
C) You should now be able to load your modules on IRC via OperServ, or via
|
||||
the services.conf file.
|
||||
|
||||
|
||||
4) Other compile options
|
||||
|
||||
A) If you have trouble recompiling Anope, you should try:
|
||||
|
||||
nmake -f Makefile.win32 distclean
|
||||
|
||||
This will clean up the source directory and allow for chages to be applied
|
||||
to previously compiled files.
|
||||
|
||||
B) A list of valid options are:
|
||||
|
||||
install
|
||||
distclean
|
||||
clean
|
||||
spotless
|
||||
all
|
||||
core
|
||||
protocols
|
||||
mypasql
|
||||
languages
|
||||
modules
|
||||
|
||||
The syntax for these options is:
|
||||
|
||||
nmake -f Makefile.win32 [option]
|
||||
|
||||
5) Credits
|
||||
|
||||
Anope is based on Epona and IRCServices. See CREDITS for more credits and
|
||||
a complete list of all developers.
|
||||
|
||||
Anope's Windows-specific code is provided by:
|
||||
|
||||
* Dominick Meglio <codemastr@unrealircd.com>
|
||||
* Trystan Scott Lee <trystan@nomadirc.net>
|
||||
* Chris Hogben <heinz@anope.org>
|
||||
|
||||
Anope's Windows Installer was made using:
|
||||
|
||||
* NSIS 2.20 <http://nsis.sourceforge.net>
|
||||
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
# If we are building for Visual Studio OR if the system we are on doesn't have sh (which would be odd on a *nix system...), we'll build a C++ program to create version.h
|
||||
if(MSVC OR NOT SH)
|
||||
# Set version.sh.c to use C++ as well as set it's compile flags
|
||||
set_source_files_properties(version.sh.c PROPERTIES LANGUAGE CXX COMPILE_FLAGS "${CXXFLAGS}")
|
||||
# Generate version_sh executable to create version.h from the contents of version.sh, setting it's linker flags as well
|
||||
add_executable(version_sh version.sh.c)
|
||||
set_target_properties(version_sh PROPERTIES LINKER_LANGUAGE CXX LINK_FLAGS "${LDFLAGS}")
|
||||
# Generate version.h from the above executable and the version.log file from the main source directory, with dependencies to the given headers and all source files in the main Anope build
|
||||
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/version.h
|
||||
COMMAND version_sh ${Anope_SOURCE_DIR}/version.log ${CMAKE_CURRENT_SOURCE_DIR}/version.sh ${CMAKE_CURRENT_BINARY_DIR}/version.h
|
||||
MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/version.sh DEPENDS version_sh ${CMAKE_CURRENT_SOURCE_DIR}/services.h ${CMAKE_CURRENT_SOURCE_DIR}/pseudo.h ${CMAKE_CURRENT_SOURCE_DIR}/messages.h ${SRC_SRCS}
|
||||
)
|
||||
# Add version_sh to list of files for CPack to ignore
|
||||
get_target_property(version_sh_BINARY version_sh LOCATION)
|
||||
get_filename_component(version_sh_BINARY ${version_sh_BINARY} NAME)
|
||||
add_to_cpack_ignored_files("${version_sh_BINARY}$" TRUE)
|
||||
# For any non-Visual Studio platforms that do have sh, we will run version.h through the version.h shell script
|
||||
else(MSVC OR NOT SH)
|
||||
# Generate version.h from version.sh and the version.log file from the main source directory, with dependencies to the given headers and all source files in the main Anope build
|
||||
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/version.h
|
||||
COMMAND ${SH} ${CMAKE_CURRENT_SOURCE_DIR}/version.sh ${Anope_SOURCE_DIR}/version.log ${CMAKE_CURRENT_BINARY_DIR}/version.h
|
||||
MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/version.sh DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/services.h ${CMAKE_CURRENT_SOURCE_DIR}/pseudo.h ${CMAKE_CURRENT_SOURCE_DIR}/messages.h ${SRC_SRCS}
|
||||
)
|
||||
endif(MSVC OR NOT SH)
|
||||
|
||||
# Add version.h to the list of files for CPack to ignore
|
||||
add_to_cpack_ignored_files("version.h$" TRUE)
|
||||
|
||||
# Add a custom target to the above file
|
||||
add_custom_target(headers DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/version.h)
|
||||
+2
-2
@@ -2,7 +2,7 @@
|
||||
all: services.h extern.h pseudo.h version.h
|
||||
|
||||
version.h: Makefile version.sh services.h pseudo.h messages.h $(SRCS)
|
||||
sh version.sh ../version.log $@
|
||||
sh version.sh
|
||||
|
||||
services.h: sysconf.h config.h extern.h
|
||||
touch $@
|
||||
@@ -13,7 +13,7 @@ extern.h: slist.h
|
||||
pseudo.h: commands.h timeout.h encrypt.h datafiles.h slist.h
|
||||
touch $@
|
||||
|
||||
clean:
|
||||
clean:
|
||||
(rm -f language.h)
|
||||
|
||||
distclean: clean
|
||||
|
||||
@@ -1,86 +0,0 @@
|
||||
|
||||
/* NickServ nickname structures. */
|
||||
|
||||
/** XXX: this really needs to die with fire and be merged with metadata into NickCore or something.
|
||||
*/
|
||||
class NickRequest
|
||||
{
|
||||
public:
|
||||
NickRequest()
|
||||
{
|
||||
next = prev = NULL;
|
||||
nick = passcode = email = NULL;
|
||||
*password = 0;
|
||||
requested = lastmail = 0;
|
||||
}
|
||||
NickRequest *next, *prev;
|
||||
char *nick;
|
||||
char *passcode;
|
||||
char password[PASSMAX];
|
||||
char *email;
|
||||
time_t requested;
|
||||
time_t lastmail; /* Unsaved */
|
||||
};
|
||||
|
||||
class NickCore;
|
||||
|
||||
class NickAlias
|
||||
{
|
||||
public:
|
||||
NickAlias()
|
||||
{
|
||||
next = prev = NULL;
|
||||
nick = last_quit = last_realname = last_usermask = NULL;
|
||||
time_registered = last_seen = 0;
|
||||
status = 0;
|
||||
nc = NULL;
|
||||
u = NULL;
|
||||
}
|
||||
|
||||
NickAlias *next, *prev;
|
||||
char *nick; /* Nickname */
|
||||
char *last_quit; /* Last quit message */
|
||||
char *last_realname; /* Last realname */
|
||||
char *last_usermask; /* Last usermask */
|
||||
time_t time_registered; /* When the nick was registered */
|
||||
time_t last_seen; /* When it was seen online for the last time */
|
||||
uint16 status; /* See NS_* below */
|
||||
NickCore *nc; /* I'm an alias of this */
|
||||
|
||||
/* Not saved */
|
||||
User *u; /* Current online user that has me */
|
||||
};
|
||||
|
||||
class NickCore : public Extensible
|
||||
{
|
||||
public:
|
||||
NickCore()
|
||||
{
|
||||
next = prev = NULL;
|
||||
display = email = greet = url = NULL;
|
||||
pass[0] = '\0';
|
||||
icq = flags = 0;
|
||||
language = accesscount = channelcount = 0;
|
||||
lastmail = 0;
|
||||
}
|
||||
|
||||
NickCore *next, *prev;
|
||||
|
||||
char *display; /* How the nick is displayed */
|
||||
char pass[PASSMAX]; /* Password of the nicks */
|
||||
char *email; /* E-mail associated to the nick */
|
||||
char *greet; /* Greet associated to the nick */
|
||||
uint32 icq; /* ICQ # associated to the nick */
|
||||
char *url; /* URL associated to the nick */
|
||||
uint32 flags; /* See NI_* below */
|
||||
uint16 language; /* Language selected by nickname owner (LANG_*) */
|
||||
uint16 accesscount; /* # of entries */
|
||||
char **access; /* Array of strings */
|
||||
MemoInfo memos;
|
||||
uint16 channelcount; /* Number of channels currently registered */
|
||||
|
||||
/* Unsaved data */
|
||||
time_t lastmail; /* Last time this nick record got a mail */
|
||||
SList aliases; /* List of aliases */
|
||||
};
|
||||
|
||||
@@ -1,71 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2008-2009 Robin Burchell <w00t@inspircd.org>
|
||||
* Copyright (C) 2008-2009 Anope Team <team@anope.org>
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
struct CommandHash;
|
||||
|
||||
class CoreExport BotInfo
|
||||
{
|
||||
public:
|
||||
BotInfo *next, *prev;
|
||||
|
||||
std::string uid; /* required for UID supporting servers, as opposed to the shitty struct Uid. */
|
||||
char *nick; /* Nickname of the bot */
|
||||
char *user; /* Its user name */
|
||||
char *host; /* Its hostname */
|
||||
char *real; /* Its real name */
|
||||
int16 flags; /* Bot flags -- see BI_* below */
|
||||
time_t created; /* Birth date ;) */
|
||||
int16 chancount; /* Number of channels that use the bot. */
|
||||
/* Dynamic data */
|
||||
time_t lastmsg; /* Last time we said something */
|
||||
CommandHash **cmdTable;
|
||||
|
||||
/** Create a new bot.
|
||||
* XXX: Note - this constructor is considered obsolete. Use the four parameter form.
|
||||
* @param nick The nickname to assign to the bot.
|
||||
*/
|
||||
BotInfo(const char *nick);
|
||||
/** Create a new bot.
|
||||
* @param nick The nickname to assign to the bot.
|
||||
* @param user The ident to give the bot.
|
||||
* @param host The hostname to give the bot.
|
||||
* @param real The realname to give the bot.
|
||||
*/
|
||||
BotInfo(const char *nick, const char *user, const char *host, const char *real);
|
||||
|
||||
/** Destroy a bot, clearing up appropriately.
|
||||
*/
|
||||
virtual ~BotInfo();
|
||||
|
||||
/** Change the nickname set on a bot.
|
||||
* @param newnick The nick to change to
|
||||
*/
|
||||
void ChangeNick(const char *newnick);
|
||||
|
||||
/** Rejoins all channels that this bot is assigned to.
|
||||
* Used on /kill, rename, etc.
|
||||
*/
|
||||
void RejoinAll();
|
||||
|
||||
/** Assign this bot to a given channel, removing the existing assigned bot if one exists.
|
||||
* @param u The user assigning the bot, or NULL
|
||||
* @param ci The channel registration to assign the bot to.
|
||||
*/
|
||||
void Assign(User *u, ChannelInfo *ci);
|
||||
|
||||
/** Remove this bot from a given channel.
|
||||
* @param u The user requesting the unassign, or NULL.
|
||||
* @param ci The channel registration to remove the bot from.
|
||||
*/
|
||||
void UnAssign(User *u, ChannelInfo *ci);
|
||||
};
|
||||
|
||||
+9
-4
@@ -1,14 +1,13 @@
|
||||
/* Declarations for command data.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -21,8 +20,14 @@
|
||||
*/
|
||||
|
||||
extern MDE Command *lookup_cmd(Command *list, char *name);
|
||||
extern void run_cmd(char *service, User *u, Command *list,
|
||||
char *name);
|
||||
extern void help_cmd(char *service, User *u, Command *list,
|
||||
char *name);
|
||||
extern void do_run_cmd(char *service, User * u, Command *c,const char *cmd);
|
||||
extern MDE void do_help_limited(char *service, User * u, Command * c);
|
||||
extern void do_help_cmd(char *service, User * u, Command *c,const char *cmd);
|
||||
extern MDE void mod_help_cmd(char *service, User *u, CommandHash *cmdTable[],const char *cmd);
|
||||
extern MDE void mod_run_cmd(char *service, User *u, CommandHash *cmdTable[],const char *cmd);
|
||||
extern MDE void do_help_limited(char *service, User * u, Command * c);
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
+6
-3
@@ -1,14 +1,13 @@
|
||||
/* Services configuration.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -36,6 +35,10 @@
|
||||
/* Define this to enable OperServ's svs commands (superadmin only). */
|
||||
#define USE_OSSVS
|
||||
|
||||
/* Define this to enable OperServ's debugging commands (Services root
|
||||
* only). These commands are undocumented; "use the source, Luke!" */
|
||||
/* #define DEBUG_COMMANDS */
|
||||
|
||||
/******************* END OF USER-CONFIGURABLE SECTION ********************/
|
||||
|
||||
/* Size of input buffer (note: this is different from BUFSIZ)
|
||||
|
||||
@@ -1,518 +0,0 @@
|
||||
#ifndef _CONFIGREADER_H_
|
||||
#define _CONFIGREADER_H_
|
||||
|
||||
#include <string>
|
||||
#include <fstream>
|
||||
#include <sstream>
|
||||
#include <vector>
|
||||
#include <map>
|
||||
#include <deque>
|
||||
|
||||
/** A configuration key and value pair
|
||||
*/
|
||||
typedef std::pair<std::string, std::string> KeyVal;
|
||||
|
||||
/** A list of related configuration keys and values
|
||||
*/
|
||||
typedef std::vector<KeyVal> KeyValList;
|
||||
|
||||
/** An entire config file, built up of KeyValLists
|
||||
*/
|
||||
typedef std::multimap<std::string, KeyValList> ConfigDataHash;
|
||||
|
||||
// Required forward definitions
|
||||
class ServerConfig;
|
||||
|
||||
/** Types of data in the core config
|
||||
*/
|
||||
enum ConfigDataType {
|
||||
DT_NOTHING, // No data
|
||||
DT_INTEGER, // Integer
|
||||
DT_UINTEGER, // Unsigned Integer
|
||||
DT_LUINTEGER, // Long Unsigned Integer
|
||||
DT_CHARPTR, // Char pointer
|
||||
DT_STRING, // std::string
|
||||
DT_BOOLEAN, // Boolean
|
||||
DT_HOSTNAME, // Hostname syntax
|
||||
DT_NOSPACES, // No spaces
|
||||
DT_IPADDRESS, // IP address (v4, v6)
|
||||
DT_TIME, // Time value
|
||||
DT_NORELOAD = 32, // Item can't be reloaded after startup
|
||||
DT_ALLOW_WILD = 64, // Allow wildcards/CIDR in DT_IPADDRESS
|
||||
DT_ALLOW_NEWLINE = 128 // New line characters allowed in DT_CHARPTR
|
||||
};
|
||||
|
||||
/** Holds a config value, either string, integer or boolean.
|
||||
* Callback functions receive one or more of these, either on
|
||||
* their own as a reference, or in a reference to a deque of them.
|
||||
* The callback function can then alter the values of the ValueItem
|
||||
* classes to validate the settings.
|
||||
*/
|
||||
class ValueItem
|
||||
{
|
||||
/** Actual data */
|
||||
std::string v;
|
||||
public:
|
||||
/** Initialize with an int */
|
||||
ValueItem(int);
|
||||
/** Initialize with a bool */
|
||||
ValueItem(bool);
|
||||
/** Initialize with a char pointer */
|
||||
ValueItem(const char *);
|
||||
/** Initialize with an std::string */
|
||||
ValueItem(const std::string &);
|
||||
/** Change value to a char pointer */
|
||||
//void Set(char *);
|
||||
/** Change value to a const char pointer */
|
||||
void Set(const char *);
|
||||
/** Change value to an std::string */
|
||||
void Set(const std::string &);
|
||||
/** Change value to an int */
|
||||
void Set(int);
|
||||
/** Get value as an int */
|
||||
int GetInteger();
|
||||
/** Get value as a string */
|
||||
char *GetString();
|
||||
/** Get value as a bool */
|
||||
bool GetBool();
|
||||
};
|
||||
|
||||
/** The base class of the container 'ValueContainer'
|
||||
* used internally by the core to hold core values.
|
||||
*/
|
||||
class ValueContainerBase
|
||||
{
|
||||
public:
|
||||
/** Constructor */
|
||||
ValueContainerBase() { }
|
||||
/** Destructor */
|
||||
virtual ~ValueContainerBase() { }
|
||||
};
|
||||
|
||||
/** ValueContainer is used to contain pointers to different
|
||||
* core values such as the server name, maximum number of
|
||||
* clients etc.
|
||||
* It is specialized to hold a data type, then pointed at
|
||||
* a value in the ServerConfig class. When the value has been
|
||||
* read and validated, the Set method is called to write the
|
||||
* value safely in a type-safe manner.
|
||||
*/
|
||||
template<typename T> class ValueContainer : public ValueContainerBase
|
||||
{
|
||||
/** Contained item */
|
||||
T val;
|
||||
public:
|
||||
/** Initialize with nothing */
|
||||
ValueContainer() : ValueContainerBase(), val(NULL) { }
|
||||
/** Initialize with a value of type T */
|
||||
ValueContainer(T Val) : ValueContainerBase(), val(Val) { }
|
||||
/** Initialize with a copy */
|
||||
ValueContainer(const ValueContainer &Val) : ValueContainerBase(), val(Val.val) { }
|
||||
ValueContainer &operator=(const ValueContainer &Val)
|
||||
{
|
||||
val = Val.val;
|
||||
return *this;
|
||||
}
|
||||
/** Change value to type T of size s */
|
||||
void Set(const T newval, size_t s)
|
||||
{
|
||||
memcpy(val, newval, s);
|
||||
}
|
||||
};
|
||||
|
||||
/** This a specific version of ValueContainer to handle character arrays specially
|
||||
*/
|
||||
template<> class ValueContainer<char **> : public ValueContainerBase
|
||||
{
|
||||
/** Contained item */
|
||||
char **val;
|
||||
public:
|
||||
/** Initialize with nothing */
|
||||
ValueContainer() : ValueContainerBase(), val(NULL) { }
|
||||
/** Initialize with a value of type T */
|
||||
ValueContainer(char **Val) : ValueContainerBase(), val(Val) { }
|
||||
/** Initialize with a copy */
|
||||
ValueContainer(const ValueContainer &Val) : ValueContainerBase(), val(Val.val) { }
|
||||
ValueContainer &operator=(const ValueContainer &Val)
|
||||
{
|
||||
val = Val.val;
|
||||
return *this;
|
||||
}
|
||||
/** Change value to type T of size s */
|
||||
void Set(const char *newval, size_t s)
|
||||
{
|
||||
if (*val) delete [] *val;
|
||||
if (!*newval) {
|
||||
*val = NULL;
|
||||
return;
|
||||
}
|
||||
*val = new char[s];
|
||||
strlcpy(*val, newval, s);
|
||||
}
|
||||
};
|
||||
|
||||
/** This a specific version of ValueContainer to handle std::string specially
|
||||
*/
|
||||
template<> class ValueContainer<std::string *> : public ValueContainerBase
|
||||
{
|
||||
/** Contained item */
|
||||
std::string *val;
|
||||
public:
|
||||
/** Initialize with nothing */
|
||||
ValueContainer() : ValueContainerBase(), val(NULL) { }
|
||||
/** Initialize with an std::string */
|
||||
ValueContainer(std::string *Val) : ValueContainerBase(), val(Val) { }
|
||||
/** Initialize with a copy */
|
||||
ValueContainer(const ValueContainer &Val) : ValueContainerBase(), val(Val.val) { }
|
||||
ValueContainer &operator=(const ValueContainer &Val)
|
||||
{
|
||||
val = Val.val;
|
||||
return *this;
|
||||
}
|
||||
/** Change value to given std::string */
|
||||
void Set(const std::string &newval)
|
||||
{
|
||||
*val = newval;
|
||||
}
|
||||
/** Change value to given char pointer */
|
||||
void Set(const char *newval)
|
||||
{
|
||||
*val = newval;
|
||||
}
|
||||
};
|
||||
|
||||
/** A specialization of ValueContainer to hold a pointer to a bool
|
||||
*/
|
||||
typedef ValueContainer<bool *> ValueContainerBool;
|
||||
|
||||
/** A specialization of ValueContainer to hold a pointer to
|
||||
* an unsigned int
|
||||
*/
|
||||
typedef ValueContainer<unsigned *> ValueContainerUInt;
|
||||
|
||||
/** A specialization of ValueContainer to hold a pointer to
|
||||
* a long unsigned int
|
||||
*/
|
||||
typedef ValueContainer<long unsigned *> ValueContainerLUInt;
|
||||
|
||||
/** A specialization of ValueContainer to hold a pointer to
|
||||
* a char array.
|
||||
*/
|
||||
typedef ValueContainer<char **> ValueContainerChar;
|
||||
|
||||
/** A specialization of ValueContainer to hold a pointer to
|
||||
* an int
|
||||
*/
|
||||
typedef ValueContainer<int *> ValueContainerInt;
|
||||
|
||||
/** A specialization of ValueContainer to hold a pointer to
|
||||
* a time_t
|
||||
*/
|
||||
typedef ValueContainer<time_t *> ValueContainerTime;
|
||||
|
||||
/** A specialization of ValueContainer to hold a pointer to
|
||||
* an std::string
|
||||
*/
|
||||
typedef ValueContainer<std::string *> ValueContainerString;
|
||||
|
||||
/** A set of ValueItems used by multi-value validator functions
|
||||
*/
|
||||
typedef std::deque<ValueItem> ValueList;
|
||||
|
||||
/** A callback for validating a single value
|
||||
*/
|
||||
typedef bool (*Validator)(ServerConfig *, const char *, const char *, ValueItem &);
|
||||
/** A callback for validating multiple value entries
|
||||
*/
|
||||
typedef bool (*MultiValidator)(ServerConfig *, const char *, const char **, ValueList &, int *, bool);
|
||||
/** A callback indicating the end of a group of entries
|
||||
*/
|
||||
typedef bool (*MultiNotify)(ServerConfig *, const char *, bool);
|
||||
|
||||
/** Holds a core configuration item and its callbacks
|
||||
*/
|
||||
struct InitialConfig
|
||||
{
|
||||
/** Tag name */
|
||||
const char *tag;
|
||||
/** Value name */
|
||||
const char *value;
|
||||
/** Default, if not defined */
|
||||
const char *default_value;
|
||||
/** Value containers */
|
||||
ValueContainerBase *val;
|
||||
/** Data types */
|
||||
int datatype;
|
||||
/** Validation function */
|
||||
Validator validation_function;
|
||||
};
|
||||
|
||||
/** Holds a core configuration item and its callbacks
|
||||
* where there may be more than one item
|
||||
*/
|
||||
struct MultiConfig
|
||||
{
|
||||
/** Tag name */
|
||||
const char *tag;
|
||||
/** One or more items within tag */
|
||||
const char *items[17];
|
||||
/** One or more defaults for items within tags */
|
||||
const char *items_default[17];
|
||||
/** One or more data types */
|
||||
int datatype[17];
|
||||
/** Initialization function */
|
||||
MultiNotify init_function;
|
||||
/** Validation function */
|
||||
MultiValidator validation_function;
|
||||
/** Completion function */
|
||||
MultiNotify finish_function;
|
||||
};
|
||||
|
||||
/** This class holds the bulk of the runtime configuration for the ircd.
|
||||
* It allows for reading new config values, accessing configuration files,
|
||||
* and storage of the configuration data needed to run the ircd, such as
|
||||
* the servername, connect classes, /ADMIN data, MOTDs and filenames etc.
|
||||
*/
|
||||
class ServerConfig
|
||||
{
|
||||
private:
|
||||
/** This variable holds the names of all
|
||||
* files included from the main one. This
|
||||
* is used to make sure that no files are
|
||||
* recursively included.
|
||||
*/
|
||||
std::vector<std::string> include_stack;
|
||||
/** Check that there is only one of each configuration item
|
||||
*/
|
||||
bool CheckOnce(const char *);
|
||||
public:
|
||||
std::ostringstream errstr;
|
||||
ConfigDataHash newconfig;
|
||||
/** This holds all the information in the config file,
|
||||
* it's indexed by tag name to a vector of key/values.
|
||||
*/
|
||||
ConfigDataHash config_data;
|
||||
/** Construct a new ServerConfig
|
||||
*/
|
||||
ServerConfig();
|
||||
/** Clears the include stack in preperation for a Read() call.
|
||||
*/
|
||||
void ClearStack();
|
||||
/** Read the entire configuration into memory
|
||||
* and initialize this class. All other methods
|
||||
* should be used only by the core.
|
||||
*/
|
||||
int Read(bool);
|
||||
/** Report a configuration error given in errormessage.
|
||||
* @param bail If this is set to true, the error is sent to the console, and the program exits
|
||||
* @param connection If this is set to a non-null value, and bail is false, the errors are spooled to
|
||||
* this connection as SNOTICEs.
|
||||
* If the parameter is NULL, the messages are spooled to all connections via WriteOpers as SNOTICEs.
|
||||
*/
|
||||
void ReportConfigError(const std::string &, bool);
|
||||
/** Load 'filename' into 'target', with the new config parser everything is parsed into
|
||||
* tag/key/value at load-time rather than at read-value time.
|
||||
*/
|
||||
bool LoadConf(ConfigDataHash &, const char *, std::ostringstream &);
|
||||
/** Load 'filename' into 'target', with the new config parser everything is parsed into
|
||||
* tag/key/value at load-time rather than at read-value time.
|
||||
*/
|
||||
bool LoadConf(ConfigDataHash &, const std::string &, std::ostringstream &);
|
||||
// Both these return true if the value existed or false otherwise
|
||||
/** Writes 'length' chars into 'result' as a string
|
||||
*/
|
||||
bool ConfValue(ConfigDataHash &, const char *, const char *, int, char *, int, bool = false);
|
||||
/** Writes 'length' chars into 'result' as a string
|
||||
*/
|
||||
bool ConfValue(ConfigDataHash &, const char *, const char *, const char *, int, char *, int, bool = false);
|
||||
/** Writes 'length' chars into 'result' as a string
|
||||
*/
|
||||
bool ConfValue(ConfigDataHash &, const std::string &, const std::string &, int, std::string &, bool = false);
|
||||
/** Writes 'length' chars into 'result' as a string
|
||||
*/
|
||||
bool ConfValue(ConfigDataHash &, const std::string &, const std::string &, const std::string &, int, std::string &, bool = false);
|
||||
/** Tries to convert the value to an integer and write it to 'result'
|
||||
*/
|
||||
bool ConfValueInteger(ConfigDataHash &, const char *, const char *, int, int &);
|
||||
/** Tries to convert the value to an integer and write it to 'result'
|
||||
*/
|
||||
bool ConfValueInteger(ConfigDataHash &, const char *, const char *, const char *, int, int &);
|
||||
/** Tries to convert the value to an integer and write it to 'result'
|
||||
*/
|
||||
bool ConfValueInteger(ConfigDataHash &, const std::string &, const std::string &, int, int &);
|
||||
/** Tries to convert the value to an integer and write it to 'result'
|
||||
*/
|
||||
bool ConfValueInteger(ConfigDataHash &, const std::string &, const std::string &, const std::string &, int, int &);
|
||||
/** Returns true if the value exists and has a true value, false otherwise
|
||||
*/
|
||||
bool ConfValueBool(ConfigDataHash &, const char *, const char *, int);
|
||||
/** Returns true if the value exists and has a true value, false otherwise
|
||||
*/
|
||||
bool ConfValueBool(ConfigDataHash &, const char *, const char *, const char *, int);
|
||||
/** Returns true if the value exists and has a true value, false otherwise
|
||||
*/
|
||||
bool ConfValueBool(ConfigDataHash &, const std::string &, const std::string &, int);
|
||||
/** Returns true if the value exists and has a true value, false otherwise
|
||||
*/
|
||||
bool ConfValueBool(ConfigDataHash &, const std::string &, const std::string &, const std::string &, int);
|
||||
/** Returns the number of occurences of tag in the config file
|
||||
*/
|
||||
int ConfValueEnum(ConfigDataHash &, const char *);
|
||||
/** Returns the number of occurences of tag in the config file
|
||||
*/
|
||||
int ConfValueEnum(ConfigDataHash &, const std::string &);
|
||||
/** Returns the numbers of vars inside the index'th 'tag in the config file
|
||||
*/
|
||||
int ConfVarEnum(ConfigDataHash &, const char *, int);
|
||||
/** Returns the numbers of vars inside the index'th 'tag in the config file
|
||||
*/
|
||||
int ConfVarEnum(ConfigDataHash &, const std::string &, int);
|
||||
void ValidateHostname(const char *, const std::string &, const std::string &);
|
||||
void ValidateIP(const char *p, const std::string &, const std::string &, bool);
|
||||
void ValidateNoSpaces(const char *, const std::string &, const std::string &);
|
||||
};
|
||||
|
||||
/** This class can be used on its own to represent an exception, or derived to represent a module-specific exception.
|
||||
* When a module whishes to abort, e.g. within a constructor, it should throw an exception using ModuleException or
|
||||
* a class derived from ModuleException. If a module throws an exception during its constructor, the module will not
|
||||
* be loaded. If this happens, the error message returned by ModuleException::GetReason will be displayed to the user
|
||||
* attempting to load the module, or dumped to the console if the ircd is currently loading for the first time.
|
||||
*/
|
||||
class ConfigException : public CoreException
|
||||
{
|
||||
public:
|
||||
/** Default constructor, just uses the error mesage 'Config threw an exception'.
|
||||
*/
|
||||
ConfigException() : CoreException("Config threw an exception", "Config Parser") {}
|
||||
/** This constructor can be used to specify an error message before throwing.
|
||||
*/
|
||||
ConfigException(const std::string &message) : CoreException(message, "Config Parser") {}
|
||||
/** This destructor solves world hunger, cancels the world debt, and causes the world to end.
|
||||
* Actually no, it does nothing. Never mind.
|
||||
* @throws Nothing!
|
||||
*/
|
||||
virtual ~ConfigException() throw() { };
|
||||
};
|
||||
|
||||
#define CONF_NO_ERROR 0x000000
|
||||
#define CONF_NOT_A_NUMBER 0x000010
|
||||
#define CONF_INT_NEGATIVE 0x000080
|
||||
#define CONF_VALUE_NOT_FOUND 0x000100
|
||||
#define CONF_FILE_NOT_FOUND 0x000200
|
||||
|
||||
/** Allows reading of values from configuration files
|
||||
* This class allows a module to read from either the main configuration file (inspircd.conf) or from
|
||||
* a module-specified configuration file. It may either be instantiated with one parameter or none.
|
||||
* Constructing the class using one parameter allows you to specify a path to your own configuration
|
||||
* file, otherwise, inspircd.conf is read.
|
||||
*/
|
||||
class CoreExport ConfigReader
|
||||
{
|
||||
protected:
|
||||
/** The contents of the configuration file
|
||||
* This protected member should never be accessed by a module (and cannot be accessed unless the
|
||||
* core is changed). It will contain a pointer to the configuration file data with unneeded data
|
||||
* (such as comments) stripped from it.
|
||||
*/
|
||||
ConfigDataHash *data;
|
||||
/** Used to store errors
|
||||
*/
|
||||
std::ostringstream *errorlog;
|
||||
/** If we're using our own config data hash or not
|
||||
*/
|
||||
bool privatehash;
|
||||
/** True if an error occured reading the config file
|
||||
*/
|
||||
bool readerror;
|
||||
/** Error code
|
||||
*/
|
||||
long error;
|
||||
public:
|
||||
/** Default constructor.
|
||||
* This constructor initialises the ConfigReader class to read services.conf.
|
||||
*/
|
||||
ConfigReader();
|
||||
/** Overloaded constructor.
|
||||
* This constructor initialises the ConfigReader class to read a user-specified config file
|
||||
*/
|
||||
ConfigReader(const std::string &);
|
||||
/** Default destructor.
|
||||
* This method destroys the ConfigReader class.
|
||||
*/
|
||||
~ConfigReader();
|
||||
/** Retrieves a value from the config file.
|
||||
* This method retrieves a value from the config file. Where multiple copies of the tag
|
||||
* exist in the config file, index indicates which of the values to retrieve.
|
||||
*/
|
||||
std::string ReadValue(const std::string &, const std::string &, int, bool = false);
|
||||
/** Retrieves a value from the config file.
|
||||
* This method retrieves a value from the config file. Where multiple copies of the tag
|
||||
* exist in the config file, index indicates which of the values to retrieve. If the
|
||||
* tag is not found the default value is returned instead.
|
||||
*/
|
||||
std::string ReadValue(const std::string &, const std::string &, const std::string &, int, bool = false);
|
||||
/** Retrieves a boolean value from the config file.
|
||||
* This method retrieves a boolean value from the config file. Where multiple copies of the tag
|
||||
* exist in the config file, index indicates which of the values to retrieve. The values "1", "yes"
|
||||
* and "true" in the config file count as true to ReadFlag, and any other value counts as false.
|
||||
*/
|
||||
bool ReadFlag(const std::string &, const std::string &, int);
|
||||
/** Retrieves a boolean value from the config file.
|
||||
* This method retrieves a boolean value from the config file. Where multiple copies of the tag
|
||||
* exist in the config file, index indicates which of the values to retrieve. The values "1", "yes"
|
||||
* and "true" in the config file count as true to ReadFlag, and any other value counts as false.
|
||||
* If the tag is not found, the default value is used instead.
|
||||
*/
|
||||
bool ReadFlag(const std::string &, const std::string &, const std::string &, int);
|
||||
/** Retrieves an integer value from the config file.
|
||||
* This method retrieves an integer value from the config file. Where multiple copies of the tag
|
||||
* exist in the config file, index indicates which of the values to retrieve. Any invalid integer
|
||||
* values in the tag will cause the objects error value to be set, and any call to GetError() will
|
||||
* return CONF_INVALID_NUMBER to be returned. need_positive is set if the number must be non-negative.
|
||||
* If a negative number is placed into a tag which is specified positive, 0 will be returned and GetError()
|
||||
* will return CONF_INT_NEGATIVE. Note that need_positive is not suitable to get an unsigned int - you
|
||||
* should cast the result to achieve that effect.
|
||||
*/
|
||||
int ReadInteger(const std::string &, const std::string &, int, bool);
|
||||
/** Retrieves an integer value from the config file.
|
||||
* This method retrieves an integer value from the config file. Where multiple copies of the tag
|
||||
* exist in the config file, index indicates which of the values to retrieve. Any invalid integer
|
||||
* values in the tag will cause the objects error value to be set, and any call to GetError() will
|
||||
* return CONF_INVALID_NUMBER to be returned. needs_unsigned is set if the number must be unsigned.
|
||||
* If a signed number is placed into a tag which is specified unsigned, 0 will be returned and GetError()
|
||||
* will return CONF_NOT_UNSIGNED. If the tag is not found, the default value is used instead.
|
||||
*/
|
||||
int ReadInteger(const std::string &, const std::string &, const std::string &, int, bool);
|
||||
/** Returns the last error to occur.
|
||||
* Valid errors can be found by looking in modules.h. Any nonzero value indicates an error condition.
|
||||
* A call to GetError() resets the error flag back to 0.
|
||||
*/
|
||||
long GetError();
|
||||
/** Counts the number of times a given tag appears in the config file.
|
||||
* This method counts the number of times a tag appears in a config file, for use where
|
||||
* there are several tags of the same kind, e.g. with opers and connect types. It can be
|
||||
* used with the index value of ConfigReader::ReadValue to loop through all copies of a
|
||||
* multiple instance tag.
|
||||
*/
|
||||
int Enumerate(const std::string &);
|
||||
/** Returns true if a config file is valid.
|
||||
* This method is partially implemented and will only return false if the config
|
||||
* file does not exist or could not be opened.
|
||||
*/
|
||||
bool Verify();
|
||||
/** Dumps the list of errors in a config file to an output location. If bail is true,
|
||||
* then the program will abort. If bail is false and user points to a valid user
|
||||
* record, the error report will be spooled to the given user by means of NOTICE.
|
||||
* if bool is false AND user is false, the error report will be spooled to all opers
|
||||
* by means of a NOTICE to all opers.
|
||||
*/
|
||||
void DumpErrors(bool);
|
||||
/** Returns the number of items within a tag.
|
||||
* For example if the tag was <test tag="blah" data="foo"> then this
|
||||
* function would return 2. Spaces and newlines both qualify as valid seperators
|
||||
* between values.
|
||||
*/
|
||||
int EnumerateValues(const std::string &, int);
|
||||
};
|
||||
|
||||
#endif
|
||||
+9
-10
@@ -1,14 +1,13 @@
|
||||
/* Database file descriptor structure and file handling routine prototypes.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -23,12 +22,12 @@
|
||||
|
||||
typedef struct dbFILE_ dbFILE;
|
||||
struct dbFILE_ {
|
||||
int mode; /* 'r' for reading, 'w' for writing */
|
||||
FILE *fp; /* The normal file descriptor */
|
||||
FILE *backupfp; /* Open file pointer to a backup copy of
|
||||
* the database file (if non-NULL) */
|
||||
char filename[MAXPATHLEN]; /* Name of the database file */
|
||||
char backupname[MAXPATHLEN]; /* Name of the backup file */
|
||||
int mode; /* 'r' for reading, 'w' for writing */
|
||||
FILE *fp; /* The normal file descriptor */
|
||||
FILE *backupfp; /* Open file pointer to a backup copy of
|
||||
* the database file (if non-NULL) */
|
||||
char filename[MAXPATHLEN]; /* Name of the database file */
|
||||
char backupname[MAXPATHLEN]; /* Name of the backup file */
|
||||
};
|
||||
|
||||
/*************************************************************************/
|
||||
@@ -42,7 +41,7 @@ E int write_file_version(dbFILE *f, uint32 version);
|
||||
E dbFILE *open_db(const char *service, const char *filename, const char *mode, uint32 version);
|
||||
E void restore_db(dbFILE *f); /* Restore to state before open_db() */
|
||||
E void close_db(dbFILE *f);
|
||||
E void backup_databases();
|
||||
E void backup_databases(void);
|
||||
|
||||
#define read_db(f,buf,len) (fread((buf),1,(len),(f)->fp))
|
||||
#define write_db(f,buf,len) (fwrite((buf),1,(len),(f)->fp))
|
||||
|
||||
+2
-3
@@ -1,15 +1,14 @@
|
||||
/* Set default values for any constants that should be in include files but
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@@ -0,0 +1,127 @@
|
||||
/* depricated.h
|
||||
*
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
All of these functions were replaced in 1.7.6, you should move your modules
|
||||
to use the new functions
|
||||
*/
|
||||
|
||||
#define change_user_mode(u, modes, arg) common_svsmode(u, modes, arg)
|
||||
#define GetIdent(x) common_get_vident(x)
|
||||
#define GetHost(x) common_get_vhost(x)
|
||||
|
||||
#define NEWNICK(nick,user,host,real,modes,qline) \
|
||||
anope_cmd_bot_nick(nick,user,host,real,modes)
|
||||
|
||||
#define s_akill(user, host, who, when, expires, reason) \
|
||||
anope_cmd_akill(user, host, who, when, expires, reason)
|
||||
|
||||
#define set_umode(user, ac, av) anope_set_umode(user, ac, av)
|
||||
|
||||
#define s_svsnoop(server, set) anope_cmd_svsnoop(server, set)
|
||||
|
||||
#define s_sqline(mask, reason) anope_cmd_sqline(mask, reason)
|
||||
|
||||
#define s_sgline(mask, reason) anope_cmd_sgline(mask, reason)
|
||||
#define s_szline(mask, reason) anope_cmd_szline(mask, reason)
|
||||
#define s_unsgline(mask) anope_cmd_unsgline(mask)
|
||||
#define s_unsqline(mask) anope_cmd_unsqline(mask)
|
||||
#define s_unszline(mask) anope_cmd_unszline(mask)
|
||||
|
||||
#define s_rakill(user, host) anope_cmd_remove_akill(user, host)
|
||||
|
||||
|
||||
# define NICKSERV_MODE ircd->nickservmode
|
||||
# define CHANSERV_MODE ircd->chanservmode
|
||||
# define HOSTSERV_MODE ircd->hostservmode
|
||||
# define MEMOSERV_MODE ircd->memoservmode
|
||||
# define BOTSERV_MODE ircd->botservmode
|
||||
# define HELPSERV_MODE ircd->helpservmode
|
||||
# define OPERSERV_MODE ircd->oprservmode
|
||||
# define DEVNULL_MODE ircd->devnullmode
|
||||
# define GLOBAL_MODE ircd->globalmode
|
||||
# define NICKSERV_ALIAS_MODE ircd->nickservaliasmode
|
||||
# define CHANSERV_ALIAS_MODE ircd->chanservaliasmode
|
||||
# define MEMOSERV_ALIAS_MODE ircd->memoservaliasmode
|
||||
# define BOTSERV_ALIAS_MODE ircd->botservaliasmode
|
||||
# define HELPSERV_ALIAS_MODE ircd->helpservaliasmode
|
||||
# define OPERSERV_ALIAS_MODE ircd->operservaliasmode
|
||||
# define DEVNULL_ALIAS_MODE ircd->devnullaliasmode
|
||||
# define GLOBAL_ALIAS_MODE ircd->globalaliasmode
|
||||
# define HOSTSERV_ALIAS_MODE ircd->hostservaliasmode
|
||||
# define BOTSERV_BOTS_MODE ircd->botserv_bot_mode
|
||||
#define CHAN_MAX_SYMBOL ircd->max_symbols
|
||||
#define MODESTOREMOVE ircd->modestoremove
|
||||
|
||||
#ifdef IRC_HYBRID
|
||||
# define HAS_HALFOP
|
||||
# define HAS_EXCEPT
|
||||
#endif
|
||||
|
||||
#ifdef IRC_VIAGRA
|
||||
# define HAS_HALFOP
|
||||
# define HAS_VHOST
|
||||
# define HAS_VIDENT
|
||||
# define HAS_EXCEPT
|
||||
#endif
|
||||
|
||||
#ifdef IRC_BAHAMUT
|
||||
# define HAS_NICKIP
|
||||
# define HAS_EXCEPT
|
||||
# define HAS_SVSHOLD
|
||||
#endif
|
||||
|
||||
#ifdef IRC_RAGE2
|
||||
# define HAS_HALFOP
|
||||
# define HAS_EXCEPT
|
||||
# define HAS_VHOST
|
||||
# define HAS_NICKVHOST
|
||||
#endif
|
||||
|
||||
#ifdef IRC_PTLINK
|
||||
# define HAS_NICKVHOST
|
||||
# define HAS_VHOST
|
||||
# define HAS_FMODE
|
||||
# define HAS_EXCEPT
|
||||
#endif
|
||||
|
||||
#ifdef IRC_ULTIMATE2
|
||||
# define IRC_ULTIMATE /* gotta do this for old mods */
|
||||
# define HAS_FMODE
|
||||
# define HAS_HALFOP
|
||||
# define HAS_LMODE
|
||||
# define HAS_VHOST
|
||||
# define HAS_VIDENT
|
||||
# define HAS_EXCEPT
|
||||
#endif
|
||||
|
||||
#if defined(IRC_UNREAL31) || defined(IRC_UNREAL32)
|
||||
# define IRC_UNREAL /* gotta do this for old mods */
|
||||
# define HAS_FMODE
|
||||
# define HAS_HALFOP
|
||||
# define HAS_LMODE
|
||||
# define HAS_NICKVHOST
|
||||
# define HAS_VHOST
|
||||
# define HAS_VIDENT
|
||||
# define HAS_EXCEPT
|
||||
#endif
|
||||
|
||||
#ifdef IRC_ULTIMATE3
|
||||
# define HAS_HALFOP
|
||||
# define HAS_VHOST
|
||||
# define HAS_NICKVHOST
|
||||
# define HAS_VIDENT
|
||||
# define HAS_EXCEPT
|
||||
#endif
|
||||
|
||||
|
||||
+6
-8
@@ -1,22 +1,20 @@
|
||||
/* Include file for high-level encryption routines.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
typedef struct encryption_ {
|
||||
int (*encrypt)(const char *src, int len, char *dest, int size);
|
||||
int (*encrypt_in_place)(char *buf, int size);
|
||||
int (*encrypt_check_len)(int passlen, int bufsize);
|
||||
int (*decrypt)(const char *src, char *dest, int size);
|
||||
int (*check_password)(const char *plaintext, const char *password);
|
||||
int (*encrypt)(const char *src, int len, char *dest, int size);
|
||||
int (*encrypt_check_len)(int passlen, int bufsize);
|
||||
int (*decrypt)(const char *src, char *dest, int size);
|
||||
int (*check_password)(const char *plaintext, const char *password);
|
||||
} Encryption;
|
||||
|
||||
|
||||
+11
-3
@@ -1,14 +1,13 @@
|
||||
/* Prototypes and external variable declarations.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -42,11 +41,16 @@
|
||||
#define EVENT_SHUTDOWN "shutdown"
|
||||
#define EVENT_SIGNAL "signal"
|
||||
#define EVENT_NICK_REGISTERED "nick_registered"
|
||||
#define EVENT_NICK_REQUESTED "nick_requested"
|
||||
#define EVENT_NICK_DROPPED "nick_dropped"
|
||||
#define EVENT_NICK_FORBIDDEN "nick_forbidden"
|
||||
#define EVENT_NICK_EXPIRE "nick_expire"
|
||||
#define EVENT_CORE_DROPPED "nickcore_dropped"
|
||||
#define EVENT_CORE_NEWDISPLAY "nickcore_newdisplay"
|
||||
#define EVENT_CHANGE_NICK "change_nick"
|
||||
#define EVENT_USER_LOGOFF "user_logoff"
|
||||
#define EVENT_NICK_GHOSTED "nick_ghosted"
|
||||
#define EVENT_NICK_RECOVERED "nick_recovered"
|
||||
#define EVENT_GROUP "nick_group"
|
||||
#define EVENT_NICK_IDENTIFY "nick_id"
|
||||
#define EVENT_SERVER_SQUIT "server_squit"
|
||||
@@ -62,3 +66,7 @@
|
||||
#define EVENT_ACCESS_CLEAR "access_clear"
|
||||
#define EVENT_NICK_LOGOUT "nick_logout"
|
||||
#define EVENT_CHAN_KICK "chan_kick"
|
||||
#define EVENT_MODLOAD "modload"
|
||||
#define EVENT_MODUNLOAD "modunload"
|
||||
#define EVENT_ADDCOMMAND "addcommand"
|
||||
#define EVENT_DELCOMMAND "delcommand"
|
||||
|
||||
+699
-313
File diff suppressed because it is too large
Load Diff
@@ -1,82 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 InspIRCd Development Team
|
||||
* Copyright (C) 2009 Anope Team <team@anope.org>
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* These classes have been copied from InspIRCd and modified
|
||||
* for use in Anope.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _HASHCOMP_H_
|
||||
#define _HASHCOMP_H_
|
||||
|
||||
#include <string>
|
||||
|
||||
/** sepstream allows for splitting token seperated lists.
|
||||
* Each successive call to sepstream::GetToken() returns
|
||||
* the next token, until none remain, at which point the method returns
|
||||
* an empty string.
|
||||
*/
|
||||
class sepstream
|
||||
{
|
||||
private:
|
||||
/** Original string.
|
||||
*/
|
||||
std::string tokens;
|
||||
/** Last position of a seperator token
|
||||
*/
|
||||
std::string::iterator last_starting_position;
|
||||
/** Current string position
|
||||
*/
|
||||
std::string::iterator n;
|
||||
/** Seperator value
|
||||
*/
|
||||
char sep;
|
||||
public:
|
||||
/** Create a sepstream and fill it with the provided data
|
||||
*/
|
||||
sepstream(const std::string &source, char seperator);
|
||||
virtual ~sepstream() { }
|
||||
|
||||
/** Fetch the next token from the stream
|
||||
* @param token The next token from the stream is placed here
|
||||
* @return True if tokens still remain, false if there are none left
|
||||
*/
|
||||
virtual bool GetToken(std::string &token);
|
||||
|
||||
/** Fetch the entire remaining stream, without tokenizing
|
||||
* @return The remaining part of the stream
|
||||
*/
|
||||
virtual const std::string GetRemaining();
|
||||
|
||||
/** Returns true if the end of the stream has been reached
|
||||
* @return True if the end of the stream has been reached, otherwise false
|
||||
*/
|
||||
virtual bool StreamEnd();
|
||||
};
|
||||
|
||||
/** A derived form of sepstream, which seperates on commas
|
||||
*/
|
||||
class commasepstream : public sepstream
|
||||
{
|
||||
public:
|
||||
/** Initialize with comma seperator
|
||||
*/
|
||||
commasepstream(const std::string &source) : sepstream(source, ',') { }
|
||||
};
|
||||
|
||||
/** A derived form of sepstream, which seperates on spaces
|
||||
*/
|
||||
class spacesepstream : public sepstream
|
||||
{
|
||||
public:
|
||||
/** Initialize with space seperator
|
||||
*/
|
||||
spacesepstream(const std::string &source) : sepstream(source, ' ') { }
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,24 @@
|
||||
# Make file for Win32
|
||||
#
|
||||
# (C) 2003-2014 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Please read COPYING and README for further details.
|
||||
#
|
||||
# Based on the original code of Epona by Lara.
|
||||
# Based on the original code of Services by Andy Church.
|
||||
#
|
||||
#
|
||||
|
||||
###########################################################################
|
||||
|
||||
clean:
|
||||
-@erase language.h
|
||||
|
||||
spotless: clean
|
||||
-@erase sysconf.h version.h
|
||||
|
||||
distclean: spotless
|
||||
|
||||
|
||||
FRC:
|
||||
+3
-4
@@ -1,14 +1,13 @@
|
||||
/* Declarations of IRC message structures, variables, and functions.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -16,7 +15,7 @@
|
||||
#include "modules.h"
|
||||
|
||||
extern Message messages[];
|
||||
extern void moduleAddMsgs();
|
||||
extern void moduleAddMsgs(void);
|
||||
extern Message *find_message(const char *name);
|
||||
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "commands.h"
|
||||
#include "language.h"
|
||||
#include "modules.h"
|
||||
#include "depricated.h"
|
||||
#include "version.h"
|
||||
|
||||
#define MOD_UNIQUE 0
|
||||
|
||||
+184
-334
@@ -1,14 +1,13 @@
|
||||
/* Modular support
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef MODULES_H
|
||||
@@ -24,17 +23,17 @@ typedef HMODULE ano_module_t;
|
||||
|
||||
#define ano_modopen(file) LoadLibrary(file)
|
||||
/* ano_moderr in modules.c */
|
||||
#define ano_modsym(file, symbol) (HMODULE)GetProcAddress(file, symbol)
|
||||
#define ano_modsym(file, symbol) (void *)GetProcAddress(file, symbol)
|
||||
#define ano_modclose(file) FreeLibrary(file) ? 0 : 1
|
||||
#define ano_modclearerr() SetLastError(0)
|
||||
#define MODULE_EXT ".so"
|
||||
#define MODULE_EXT ".dll"
|
||||
|
||||
#else
|
||||
typedef void * ano_module_t;
|
||||
|
||||
#define ano_modopen(file) dlopen(file, RTLD_LAZY)
|
||||
#define ano_moderr() dlerror()
|
||||
#define ano_modsym(file, symbol) dlsym(file, symbol)
|
||||
#define ano_modsym(file, symbol) dlsym(file, DL_PREFIX symbol)
|
||||
#define ano_modclose(file) dlclose(file)
|
||||
/* We call dlerror() here because it clears the module error after being
|
||||
* called. This previously read 'errno = 0', but that didn't work on
|
||||
@@ -48,7 +47,7 @@ typedef void * ano_module_t;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
#define CMD_HASH(x) (((x)[0]&31)<<5 | ((x)[1]&31)) /* Will gen a hash from a string :) */
|
||||
#define CMD_HASH(x) (((x)[0]&31)<<5 | ((x)[1]&31)) /* Will gen a hash from a string :) */
|
||||
#define MAX_CMD_HASH 1024
|
||||
|
||||
#define MOD_STOP 1
|
||||
@@ -69,20 +68,20 @@ typedef void * ano_module_t;
|
||||
/**********************************************************************
|
||||
* Module Returns
|
||||
**********************************************************************/
|
||||
#define MOD_ERR_OK 0
|
||||
#define MOD_ERR_MEMORY 1
|
||||
#define MOD_ERR_PARAMS 2
|
||||
#define MOD_ERR_EXISTS 3
|
||||
#define MOD_ERR_NOEXIST 4
|
||||
#define MOD_ERR_NOUSER 5
|
||||
#define MOD_ERR_NOLOAD 6
|
||||
#define MOD_ERR_NOUNLOAD 7
|
||||
#define MOD_ERR_SYNTAX 8
|
||||
#define MOD_ERR_NODELETE 9
|
||||
#define MOD_ERR_UNKNOWN 10
|
||||
#define MOD_ERR_FILE_IO 11
|
||||
#define MOD_ERR_NOSERVICE 12
|
||||
#define MOD_ERR_NO_MOD_NAME 13
|
||||
#define MOD_ERR_OK 0
|
||||
#define MOD_ERR_MEMORY 1
|
||||
#define MOD_ERR_PARAMS 2
|
||||
#define MOD_ERR_EXISTS 3
|
||||
#define MOD_ERR_NOEXIST 4
|
||||
#define MOD_ERR_NOUSER 5
|
||||
#define MOD_ERR_NOLOAD 6
|
||||
#define MOD_ERR_NOUNLOAD 7
|
||||
#define MOD_ERR_SYNTAX 8
|
||||
#define MOD_ERR_NODELETE 9
|
||||
#define MOD_ERR_UNKNOWN 10
|
||||
#define MOD_ERR_FILE_IO 11
|
||||
#define MOD_ERR_NOSERVICE 12
|
||||
#define MOD_ERR_NO_MOD_NAME 13
|
||||
|
||||
/*************************************************************************/
|
||||
/* Macros to export the Module API functions/variables */
|
||||
@@ -97,25 +96,6 @@ typedef void * ano_module_t;
|
||||
#endif
|
||||
/*************************************************************************/
|
||||
|
||||
#if !defined(_WIN32)
|
||||
#include <dlfcn.h>
|
||||
/* Define these for systems without them */
|
||||
#ifndef RTLD_NOW
|
||||
#define RTLD_NOW 0
|
||||
#endif
|
||||
#ifndef RTLD_LAZY
|
||||
#define RTLD_LAZY RTLD_NOW
|
||||
#endif
|
||||
#ifndef RTLD_GLOBAL
|
||||
#define RTLD_GLOBAL 0
|
||||
#endif
|
||||
#ifndef RTLD_LOCAL
|
||||
#define RTLD_LOCAL 0
|
||||
#endif
|
||||
#else
|
||||
const char *ano_moderr();
|
||||
#endif
|
||||
|
||||
typedef enum { CORE,PROTOCOL,THIRD,SUPPORTED,QATESTED,ENCRYPTION } MODType;
|
||||
typedef enum { MOD_OP_LOAD, MOD_OP_UNLOAD } ModuleOperation;
|
||||
|
||||
@@ -123,12 +103,16 @@ typedef enum { MOD_OP_LOAD, MOD_OP_UNLOAD } ModuleOperation;
|
||||
/* Structure for information about a *Serv command. */
|
||||
|
||||
typedef struct Command_ Command;
|
||||
struct CommandHash;
|
||||
typedef struct CommandHash_ CommandHash;
|
||||
typedef struct Module_ Module;
|
||||
typedef struct ModuleLang_ ModuleLang;
|
||||
typedef struct ModuleHash_ ModuleHash;
|
||||
typedef struct ModuleQueue_ ModuleQueue;
|
||||
typedef struct Message_ Message;
|
||||
typedef struct MessageHash_ MessageHash;
|
||||
typedef struct ModuleCallBack_ ModuleCallBack;
|
||||
typedef struct EvtMessage_ EvtMessage;
|
||||
typedef struct EvtMessageHash_ EvtMessageHash;
|
||||
typedef struct EvtHook_ EvtHook;
|
||||
typedef struct EvtHookHash_ EvtHookHash;
|
||||
|
||||
@@ -141,32 +125,21 @@ extern MDE CommandHash *HELPSERV[MAX_CMD_HASH];
|
||||
extern MDE CommandHash *OPERSERV[MAX_CMD_HASH];
|
||||
extern MDE MessageHash *IRCD[MAX_CMD_HASH];
|
||||
extern MDE ModuleHash *MODULE_HASH[MAX_CMD_HASH];
|
||||
extern MDE EvtMessageHash *EVENT[MAX_CMD_HASH];
|
||||
extern MDE EvtHookHash *EVENTHOOKS[MAX_CMD_HASH];
|
||||
|
||||
struct ModuleLang_ {
|
||||
int argc;
|
||||
char **argv;
|
||||
int argc;
|
||||
char **argv;
|
||||
};
|
||||
|
||||
/** Every module in Anope is actually a class.
|
||||
*/
|
||||
class CoreExport Module
|
||||
{
|
||||
private:
|
||||
bool permanent;
|
||||
public:
|
||||
/** The module name (e.g. os_modload)
|
||||
*/
|
||||
std::string name;
|
||||
|
||||
/** The temporary path/filename
|
||||
*/
|
||||
std::string filename;
|
||||
|
||||
ano_module_t handle;
|
||||
time_t created;
|
||||
std::string version;
|
||||
std::string author;
|
||||
struct Module_ {
|
||||
char *name;
|
||||
char *filename;
|
||||
void *handle;
|
||||
time_t time;
|
||||
char *version;
|
||||
char *author;
|
||||
|
||||
MODType type;
|
||||
|
||||
@@ -178,275 +151,75 @@ class CoreExport Module
|
||||
void (*hostHelp)(User *u); /* 6 */
|
||||
void (*helpHelp)(User *u); /* 7 */
|
||||
|
||||
/* CommandHash *cmdList[MAX_CMD_HASH]; */
|
||||
MessageHash *msgList[MAX_CMD_HASH];
|
||||
ModuleLang lang[NUM_LANGS];
|
||||
|
||||
/** Creates and initialises a new module.
|
||||
* @param loadernick The nickname of the user loading the module.
|
||||
*/
|
||||
Module(const std::string &modname, const std::string &loadernick);
|
||||
|
||||
/** Destroys a module, freeing resources it has allocated.
|
||||
*/
|
||||
~Module();
|
||||
|
||||
/** Sets a given type (CORE,PROTOCOL,3RD etc) on a module.
|
||||
* @param type The type to set the module as.
|
||||
*/
|
||||
void SetType(MODType type);
|
||||
|
||||
/** Toggles the permanent flag on a module. If a module is permanent,
|
||||
* then it may not be unloaded.
|
||||
*
|
||||
* Naturally, this setting should be used sparingly!
|
||||
*
|
||||
* @param state True if this module should be permanent, false else.
|
||||
*/
|
||||
void SetPermanent(bool state);
|
||||
|
||||
/** Retrieves whether or not a given module is permanent.
|
||||
* @return true if the module is permanent, false else.
|
||||
*/
|
||||
bool GetPermanent();
|
||||
|
||||
/** Set the modules version info.
|
||||
* @param version the version of the module
|
||||
*/
|
||||
void SetVersion(const std::string &version);
|
||||
|
||||
/** Set the modules author info
|
||||
* @param author the author of the module
|
||||
*/
|
||||
void SetAuthor(const std::string &author);
|
||||
|
||||
/**
|
||||
* Add output to nickserv help.
|
||||
* when doing a /msg nickserv help, your function will be called to allow it to send out a notice() with the code you wish to dispaly
|
||||
* @param func a pointer to the function which will display the code
|
||||
**/
|
||||
void SetNickHelp(void (*func)(User *));
|
||||
|
||||
/**
|
||||
* Add output to chanserv help.
|
||||
* when doing a /msg chanserv help, your function will be called to allow it to send out a notice() with the code you wish to dispaly
|
||||
* @param func a pointer to the function which will display the code
|
||||
**/
|
||||
void SetChanHelp(void (*func)(User *));
|
||||
|
||||
/**
|
||||
* Add output to memoserv help.
|
||||
* when doing a /msg memoserv help, your function will be called to allow it to send out a notice() with the code you wish to dispaly
|
||||
* @param func a pointer to the function which will display the code
|
||||
**/
|
||||
void SetMemoHelp(void (*func)(User *));
|
||||
|
||||
/**
|
||||
* Add output to botserv help.
|
||||
* when doing a /msg botserv help, your function will be called to allow it to send out a notice() with the code you wish to dispaly
|
||||
* @param func a pointer to the function which will display the code
|
||||
**/
|
||||
void SetBotHelp(void (*func)(User *));
|
||||
|
||||
/**
|
||||
* Add output to operserv help.
|
||||
* when doing a /msg operserv help, your function will be called to allow it to send out a notice() with the code you wish to dispaly
|
||||
* @param func a pointer to the function which will display the code
|
||||
**/
|
||||
void SetOperHelp(void (*func)(User *));
|
||||
|
||||
/**
|
||||
* Add output to hostserv help.
|
||||
* when doing a /msg hostserv help, your function will be called to allow it to send out a notice() with the code you wish to dispaly
|
||||
* @param func a pointer to the function which will display the code
|
||||
**/
|
||||
void SetHostHelp(void (*func)(User *));
|
||||
|
||||
/**
|
||||
* Add output to helpserv help.
|
||||
* when doing a /msg helpserv help, your function will be called to allow it to send out a notice() with the code you wish to dispaly
|
||||
* @param func a pointer to the function which will display the code
|
||||
**/
|
||||
void SetHelpHelp(void (*func)(User *));
|
||||
|
||||
/**
|
||||
* Allow a module to add a set of language strings to anope
|
||||
* @param langNumber the language number for the strings
|
||||
* @param ac The language count for the strings
|
||||
* @param av The language sring list.
|
||||
**/
|
||||
void InsertLanguage(int langNumber, int ac, const char **av);
|
||||
|
||||
/**
|
||||
* Delete a language from a module
|
||||
* @param langNumber the language Number to delete
|
||||
**/
|
||||
void DeleteLanguage(int langNumber);
|
||||
|
||||
/**
|
||||
* Get the text of the given lanugage string in the corrent language, or
|
||||
* in english.
|
||||
* @param u The user to send the message to
|
||||
* @param number The message number
|
||||
**/
|
||||
const char *GetLangString(User *u, int number);
|
||||
|
||||
/**
|
||||
* Send a notice to the user in the correct language, or english.
|
||||
* @param source Who sends the notice
|
||||
* @param u The user to send the message to
|
||||
* @param number The message number
|
||||
* @param ... The argument list
|
||||
**/
|
||||
void NoticeLang(char *source, User * u, int number, ...);
|
||||
|
||||
/** Add a module message to the IRCD message hash
|
||||
* @param m the Message to add
|
||||
* @param pos the Position to add the message to, e.g. MOD_HEAD, MOD_TAIL, MOD_UNIQUE
|
||||
* @return MOD_ERR_OK on success, althing else on fail.
|
||||
**/
|
||||
int AddEventHook(EvtHook *evh);
|
||||
|
||||
/**
|
||||
* remove the given message from the IRCD message hash
|
||||
* @param name the name of the message to remove
|
||||
* @return MOD_ERR_OK on success, althing else on fail.
|
||||
**/
|
||||
int DelEventHook(const char *name);
|
||||
|
||||
/**
|
||||
* Add a module provided command to the given service.
|
||||
* e.g. AddCommand(NICKSERV,c,MOD_HEAD);
|
||||
* @param cmdTable the services to add the command to
|
||||
* @param c the command to add
|
||||
* @param pos the position to add to, MOD_HEAD, MOD_TAIL, MOD_UNIQUE
|
||||
* @see createCommand
|
||||
* @return MOD_ERR_OK on successfully adding the command
|
||||
*/
|
||||
int AddCommand(CommandHash *cmdTable[], Command * c, int pos);
|
||||
|
||||
/**
|
||||
* Delete a command from the service given.
|
||||
* @param cmdTable the cmdTable for the services to remove the command from
|
||||
* @param name the name of the command to delete from the service
|
||||
* @return returns MOD_ERR_OK on success
|
||||
*/
|
||||
int DelCommand(CommandHash * cmdTable[], const char *name);
|
||||
|
||||
/**
|
||||
* Adds a timed callback for the current module.
|
||||
* This allows modules to request that anope executes one of there functions at a time in the future, without an event to trigger it
|
||||
* @param name the name of the callback, this is used for refrence mostly, but is needed it you want to delete this particular callback later on
|
||||
* @param when when should the function be executed, this is a time in the future, seconds since 00:00:00 1970-01-01 UTC
|
||||
* @param func the function to be executed when the callback is ran, its format MUST be int func(int argc, char **argv);
|
||||
* @param argc the argument count for the argv paramter
|
||||
* @param atgv a argument list to be passed to the called function.
|
||||
* @return MOD_ERR_OK on success, anything else on fail.
|
||||
* @see moduleDelCallBack
|
||||
**/
|
||||
int AddCallback(const char *name, time_t when, int (*func) (int argc, char *argv[]), int argc, char **argv);
|
||||
|
||||
/**
|
||||
* Allow modules to delete a timed callback by name.
|
||||
* @param name the name of the callback they wish to delete
|
||||
**/
|
||||
void DelCallback(const char *name);
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
/** Used to manage modules.
|
||||
*/
|
||||
class CoreExport ModuleManager
|
||||
{
|
||||
public:
|
||||
/** Load up a list of modules.
|
||||
* @param total_modules The number of modules to load
|
||||
* @param module_list The list of modules to load
|
||||
**/
|
||||
static void LoadModuleList(int total_modules, char **module_list);
|
||||
|
||||
/** Loads a given module.
|
||||
* @param m the module to load
|
||||
* @param u the user who loaded it, NULL for auto-load
|
||||
* @return MOD_ERR_OK on success, anything else on fail
|
||||
*/
|
||||
static int LoadModule(const std::string &modname, User * u);
|
||||
|
||||
/** Unload the given module.
|
||||
* @param m the module to unload
|
||||
* @param u the user who unloaded it
|
||||
* @return MOD_ERR_OK on success, anything else on fail
|
||||
*/
|
||||
static int UnloadModule(Module *m, User * u);
|
||||
|
||||
/** Run all pending module timer callbacks.
|
||||
*/
|
||||
static void RunCallbacks();
|
||||
private:
|
||||
/** Call the module_delete function to safely delete the module
|
||||
* @param m the module to delete
|
||||
*/
|
||||
static void DeleteModule(Module *m);
|
||||
};
|
||||
|
||||
|
||||
|
||||
struct ModuleHash_ {
|
||||
char *name;
|
||||
Module *m;
|
||||
ModuleHash *next;
|
||||
char *name;
|
||||
Module *m;
|
||||
ModuleHash *next;
|
||||
};
|
||||
|
||||
struct ModuleQueue_ {
|
||||
Module *m;
|
||||
ModuleOperation op;
|
||||
User *u;
|
||||
|
||||
ModuleQueue *next;
|
||||
};
|
||||
|
||||
struct Command_ {
|
||||
char *name;
|
||||
int (*routine)(User *u);
|
||||
int (*has_priv)(User *u); /* Returns 1 if user may use command, else 0 */
|
||||
char *name;
|
||||
int (*routine)(User *u);
|
||||
int (*has_priv)(User *u); /* Returns 1 if user may use command, else 0 */
|
||||
|
||||
/* Regrettably, these are hard-coded to correspond to current privilege
|
||||
* levels (v4.0). Suggestions for better ways to do this are
|
||||
* appreciated.
|
||||
*/
|
||||
int helpmsg_all; /* Displayed to all users; -1 = no message */
|
||||
int helpmsg_reg; /* Displayed to regular users only */
|
||||
int helpmsg_oper; /* Displayed to Services operators only */
|
||||
int helpmsg_admin; /* Displayed to Services admins only */
|
||||
int helpmsg_root; /* Displayed to Services root only */
|
||||
char *help_param1;
|
||||
char *help_param2;
|
||||
char *help_param3;
|
||||
char *help_param4;
|
||||
/* Regrettably, these are hard-coded to correspond to current privilege
|
||||
* levels (v4.0). Suggestions for better ways to do this are
|
||||
* appreciated.
|
||||
*/
|
||||
int helpmsg_all; /* Displayed to all users; -1 = no message */
|
||||
int helpmsg_reg; /* Displayed to regular users only */
|
||||
int helpmsg_oper; /* Displayed to Services operators only */
|
||||
int helpmsg_admin; /* Displayed to Services admins only */
|
||||
int helpmsg_root; /* Displayed to Services root only */
|
||||
char *help_param1;
|
||||
char *help_param2;
|
||||
char *help_param3;
|
||||
char *help_param4;
|
||||
|
||||
/* Module related stuff */
|
||||
int core; /* Can this command be deleted? */
|
||||
char *mod_name; /* Name of the module who owns us, NULL for core's */
|
||||
char *service; /* Service we provide this command for */
|
||||
int (*all_help)(User *u);
|
||||
int (*regular_help)(User *u);
|
||||
int (*oper_help)(User *u);
|
||||
int (*admin_help)(User *u);
|
||||
int (*root_help)(User *u);
|
||||
/* Module related stuff */
|
||||
int core; /* Can this command be deleted? */
|
||||
char *mod_name; /* Name of the module who owns us, NULL for core's */
|
||||
char *service; /* Service we provide this command for */
|
||||
int (*all_help)(User *u);
|
||||
int (*regular_help)(User *u);
|
||||
int (*oper_help)(User *u);
|
||||
int (*admin_help)(User *u);
|
||||
int (*root_help)(User *u);
|
||||
|
||||
Command *next; /* Next command responsible for the same command */
|
||||
Command *next; /* Next command responsible for the same command */
|
||||
};
|
||||
|
||||
struct CommandHash {
|
||||
char *name; /* Name of the command */
|
||||
Command *c; /* Actual command */
|
||||
CommandHash *next; /* Next command */
|
||||
struct CommandHash_ {
|
||||
char *name; /* Name of the command */
|
||||
Command *c; /* Actual command */
|
||||
CommandHash *next; /* Next command */
|
||||
};
|
||||
|
||||
struct Message_ {
|
||||
char *name;
|
||||
int (*func)(const char *source, int ac, const char **av);
|
||||
int core;
|
||||
Message *next;
|
||||
char *name;
|
||||
int (*func)(char *source, int ac, char **av);
|
||||
int core;
|
||||
char *mod_name;
|
||||
Message *next;
|
||||
};
|
||||
|
||||
struct MessageHash_ {
|
||||
char *name;
|
||||
Message *m;
|
||||
MessageHash *next;
|
||||
char *name;
|
||||
Message *m;
|
||||
MessageHash *next;
|
||||
};
|
||||
|
||||
struct ModuleCallBack_ {
|
||||
@@ -459,72 +232,149 @@ struct ModuleCallBack_ {
|
||||
ModuleCallBack *next;
|
||||
};
|
||||
|
||||
struct EvtMessage_ {
|
||||
char *name;
|
||||
int (*func)(char *source, int ac, char **av);
|
||||
int core;
|
||||
char *mod_name;
|
||||
EvtMessage *next;
|
||||
};
|
||||
|
||||
struct EvtMessageHash_ {
|
||||
char *name;
|
||||
EvtMessage *evm;
|
||||
EvtMessageHash *next;
|
||||
};
|
||||
|
||||
|
||||
struct EvtHook_ {
|
||||
int (*func)(int argc, char **argv);
|
||||
int core;
|
||||
int (*func)(int argc, char **argv);
|
||||
int core;
|
||||
char *name;
|
||||
char *mod_name;
|
||||
EvtHook *next;
|
||||
char *mod_name;
|
||||
EvtHook *next;
|
||||
};
|
||||
|
||||
struct EvtHookHash_ {
|
||||
char *name;
|
||||
EvtHook *evh;
|
||||
EvtHookHash *next;
|
||||
char *name;
|
||||
EvtHook *evh;
|
||||
EvtHookHash *next;
|
||||
};
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* Module Managment Functions */
|
||||
MDE Module *findModule(const char *name); /* Find a module */
|
||||
|
||||
int encryption_module_init(); /* Load the encryption module */
|
||||
int protocol_module_init(); /* Load the IRCD Protocol Module up*/
|
||||
void moduleCallBackPrepForUnload(const char *mod_name);
|
||||
MDE Module *createModule(char *filename); /* Create a new module, using the given name */
|
||||
int destroyModule(Module *m); /* Delete the module */
|
||||
int addModule(Module *m); /* Add a module to the module hash */
|
||||
int delModule(Module *m); /* Remove a module from the module hash */
|
||||
MDE Module *findModule(char *name); /* Find a module */
|
||||
int loadModule(Module *m,User *u); /* Load the given module into the program */
|
||||
int encryption_module_init(void); /* Load the encryption module */
|
||||
int protocol_module_init(void); /* Load the IRCD Protocol Module up*/
|
||||
int unloadModule(Module *m, User *u); /* Unload the given module from the pro */
|
||||
int prepForUnload(Module *m); /* Prepare the module for unload */
|
||||
MDE void moduleAddVersion(const char *version);
|
||||
MDE void moduleAddAuthor(const char *author);
|
||||
void modules_init(void);
|
||||
void modules_delayed_init(void);
|
||||
void moduleCallBackPrepForUnload(char *mod_name);
|
||||
MDE void moduleCallBackDeleteEntry(ModuleCallBack * prev);
|
||||
MDE char *moduleGetLastBuffer();
|
||||
MDE char *moduleGetLastBuffer(void);
|
||||
MDE void moduleSetHelpHelp(void (*func) (User * u));
|
||||
MDE void moduleDisplayHelp(int service, User *u);
|
||||
MDE void moduleSetHostHelp(void (*func) (User * u));
|
||||
MDE void moduleSetOperHelp(void (*func) (User * u));
|
||||
MDE void moduleSetBotHelp(void (*func) (User * u));
|
||||
MDE void moduleSetMemoHelp(void (*func) (User * u));
|
||||
MDE void moduleSetChanHelp(void (*func) (User * u));
|
||||
MDE void moduleSetNickHelp(void (*func) (User * u));
|
||||
MDE int moduleAddHelp(Command * c, int (*func) (User * u));
|
||||
MDE int moduleAddRegHelp(Command * c, int (*func) (User * u));
|
||||
MDE int moduleAddOperHelp(Command * c, int (*func) (User * u));
|
||||
MDE int moduleAddAdminHelp(Command * c, int (*func) (User * u));
|
||||
MDE int moduleAddRootHelp(Command * c, int (*func) (User * u));
|
||||
MDE void moduleSetType(MODType type);
|
||||
extern MDE Module *mod_current_module;
|
||||
extern MDE char *mod_current_module_name;
|
||||
extern MDE char *mod_current_buffer;
|
||||
extern MDE int mod_current_op;
|
||||
extern MDE User *mod_current_user;
|
||||
|
||||
MDE int moduleGetConfigDirective(Directive *h);
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/* Command Managment Functions */
|
||||
MDE Command *createCommand(const char *name,int (*func)(User *u),int (*has_priv)(User *u),int help_all, int help_reg, int help_oper, int help_admin,int help_root);
|
||||
MDE int destroyCommand(Command *c); /* destroy a command */
|
||||
Command *findCommand(CommandHash *cmdTable[], const char *name); /* Find a command */
|
||||
MDE int addCoreCommand(CommandHash *cmdTable[], Command *c); /* Add a command to a command table */
|
||||
MDE int moduleAddCommand(CommandHash *cmdTable[], Command *c, int pos);
|
||||
MDE int addCommand(CommandHash *cmdTable[], Command *c,int pos);
|
||||
MDE int delCommand(CommandHash *cmdTable[], Command *c,char *mod_name); /* Del a command from a cmd table */
|
||||
MDE int moduleDelCommand(CommandHash *cmdTable[],char *name); /* Del a command from a cmd table */
|
||||
MDE Command *findCommand(CommandHash *cmdTable[], const char *name); /* Find a command */
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/* Message Managment Functions */
|
||||
MDE Message *createMessage(const char *name,int (*func)(const char *source, int ac, const char **av));
|
||||
MDE Message *createMessage(const char *name,int (*func)(char *source, int ac, char **av));
|
||||
Message *findMessage(MessageHash *msgTable[], const char *name); /* Find a Message */
|
||||
MDE int addMessage(MessageHash *msgTable[], Message *m, int pos); /* Add a Message to a Message table */
|
||||
MDE int addCoreMessage(MessageHash *msgTable[], Message *m); /* Add a Message to a Message table */
|
||||
int delMessage(MessageHash *msgTable[], Message *m); /* Del a Message from a msg table */
|
||||
MDE int moduleAddMessage(Message *m, int pos);
|
||||
int delMessage(MessageHash *msgTable[], Message *m, char *mod_name); /* Del a Message from a msg table */
|
||||
MDE int moduleDelMessage(char *name);
|
||||
int destroyMessage(Message *m); /* destroy a Message*/
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
MDE EvtHook *createEventHook(const char *name, int (*func) (int argc, char **argv));
|
||||
MDE EvtMessage *createEventHandler(char *name, int (*func) (char *source, int ac, char **av));
|
||||
EvtMessage *findEventHandler(EvtMessageHash * msgEvtTable[], const char *name);
|
||||
int addCoreEventHandler(EvtMessageHash * msgEvtTable[], EvtMessage * evm);
|
||||
MDE int moduleAddEventHandler(EvtMessage * evm);
|
||||
MDE int moduleEventDelHandler(char *name);
|
||||
int delEventHandler(EvtMessageHash * msgEvtTable[], EvtMessage * evm, char *mod_name);
|
||||
int destroyEventHandler(EvtMessage * evm);
|
||||
int addEventHandler(EvtMessageHash * msgEvtTable[], EvtMessage * evm);
|
||||
|
||||
MDE EvtHook *createEventHook(char *name, int (*func) (int argc, char **argv));
|
||||
EvtHook *findEventHook(EvtHookHash * HookEvtTable[], const char *name);
|
||||
int addCoreEventHook(EvtHookHash * HookEvtTable[], EvtHook * evh);
|
||||
int delEventHook(EvtHookHash * HookEvtTable[], EvtHook * evh, const char *mod_name);
|
||||
MDE int moduleAddEventHook(EvtHook * evh);
|
||||
MDE int moduleEventDelHook(const char *name);
|
||||
int delEventHook(EvtHookHash * HookEvtTable[], EvtHook * evh, char *mod_name);
|
||||
int destroyEventHook(EvtHook * evh);
|
||||
extern char *mod_current_evtbuffer;
|
||||
|
||||
MDE void moduleInsertLanguage(int langNumber, int ac, char **av);
|
||||
MDE void moduleNoticeLang(char *source, User *u, int number, ...);
|
||||
MDE char *moduleGetLangString(User * u, int number);
|
||||
MDE void moduleDeleteLanguage(int langNumber);
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
MDE bool moduleMinVersion(int major,int minor,int patch,int build); /* Checks if the current version of anope is before or after a given verison */
|
||||
MDE int moduleAddCallback(char *name,time_t when,int (*func)(int argc, char *argv[]),int argc, char **argv);
|
||||
MDE void moduleDelCallback(char *name);
|
||||
|
||||
MDE char *moduleGetData(ModuleData **md, char *key); /* Get the value for this key from this struct */
|
||||
MDE int moduleAddData(ModuleData **md, char *key, char *value); /* Set the value for this key for this struct */
|
||||
MDE void moduleDelData(ModuleData **md, char *key); /* Delete this key/value pair */
|
||||
MDE void moduleDelAllData(ModuleData **md); /* Delete all key/value pairs for this module for this struct */
|
||||
void moduleDelAllDataMod(Module *m); /* remove all module data from all structs for this module */
|
||||
int moduleDataDebug(ModuleData **md); /* Allow for debug output of a moduleData struct */
|
||||
MDE boolean moduleMinVersion(int major,int minor,int patch,int build); /* Checks if the current version of anope is before or after a given verison */
|
||||
|
||||
/*************************************************************************/
|
||||
/* Module Queue Operations */
|
||||
MDE int queueModuleLoad(char *name, User *u);
|
||||
MDE int queueModuleUnload(char *name, User *u);
|
||||
MDE void handleModuleOperationQueue(void);
|
||||
|
||||
/*************************************************************************/
|
||||
/* Some IRCD protocol module support functions */
|
||||
|
||||
/** Update the protect deatials, could be either protect or admin etc.. */
|
||||
MDE void updateProtectDetails(const char *level_info_protect_word, const char *level_info_protectme_word, const char *fant_protect_add, const char *fant_protect_del, const char *level_protect_word, const char *protect_set_mode, const char *protect_unset_mode);
|
||||
MDE void updateProtectDetails(char *level_info_protect_word, char *level_info_protectme_word, char *fant_protect_add, char *fant_protect_del, char *level_protect_word, char *protect_set_mode, char *protect_unset_mode);
|
||||
|
||||
/************************************************************************/
|
||||
|
||||
|
||||
+2
-3
@@ -1,14 +1,13 @@
|
||||
/* Include extra includes needed by most/all pseudo-clients.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,93 +0,0 @@
|
||||
/* Modular support
|
||||
*
|
||||
* (C) 2008-2009 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
class ChannelInfo : public Extensible
|
||||
{
|
||||
public:
|
||||
ChannelInfo()
|
||||
{
|
||||
next = prev = NULL;
|
||||
founderpass[0] = name[0] = last_topic_setter[0] = '\0';
|
||||
founder = successor = NULL;
|
||||
desc = url = email = last_topic = forbidby = forbidreason = NULL;
|
||||
time_registered = last_used = last_topic_time = 0;
|
||||
flags = 0;
|
||||
bantype = accesscount = akickcount = 0;
|
||||
levels = NULL;
|
||||
access = NULL;
|
||||
akick = NULL;
|
||||
mlock_on = mlock_off = mlock_limit = 0;
|
||||
mlock_key = mlock_flood = mlock_redirect = entry_message = NULL;
|
||||
c = NULL;
|
||||
bi = NULL;
|
||||
botflags = 0;
|
||||
ttb = NULL;
|
||||
bwcount = 0;
|
||||
badwords = NULL;
|
||||
capsmin = capspercent = 0;
|
||||
floodlines = floodsecs = 0;
|
||||
repeattimes = 0;
|
||||
}
|
||||
|
||||
ChannelInfo *next, *prev;
|
||||
char name[CHANMAX];
|
||||
NickCore *founder;
|
||||
NickCore *successor; /* Who gets the channel if the founder
|
||||
* nick is dropped or expires */
|
||||
char founderpass[PASSMAX];
|
||||
char *desc;
|
||||
char *url;
|
||||
char *email;
|
||||
|
||||
time_t time_registered;
|
||||
time_t last_used;
|
||||
char *last_topic; /* Last topic on the channel */
|
||||
char last_topic_setter[NICKMAX]; /* Who set the last topic */
|
||||
time_t last_topic_time; /* When the last topic was set */
|
||||
|
||||
uint32 flags; /* See below */
|
||||
char *forbidby;
|
||||
char *forbidreason;
|
||||
|
||||
int16 bantype;
|
||||
int16 *levels; /* Access levels for commands */
|
||||
|
||||
uint16 accesscount;
|
||||
ChanAccess *access; /* List of authorized users */
|
||||
uint16 akickcount;
|
||||
AutoKick *akick; /* List of users to kickban */
|
||||
|
||||
uint32 mlock_on, mlock_off; /* See channel modes below */
|
||||
uint32 mlock_limit; /* 0 if no limit */
|
||||
char *mlock_key; /* NULL if no key */
|
||||
char *mlock_flood; /* NULL if no +f */
|
||||
char *mlock_redirect; /* NULL if no +L */
|
||||
|
||||
char *entry_message; /* Notice sent on entering channel */
|
||||
|
||||
MemoInfo memos;
|
||||
|
||||
struct channel_ *c; /* Pointer to channel record (if *
|
||||
* channel is currently in use) */
|
||||
|
||||
/* For BotServ */
|
||||
|
||||
BotInfo *bi; /* Bot used on this channel */
|
||||
uint32 botflags; /* BS_* below */
|
||||
int16 *ttb; /* Times to ban for each kicker */
|
||||
|
||||
uint16 bwcount;
|
||||
BadWord *badwords; /* For BADWORDS kicker */
|
||||
int16 capsmin, capspercent; /* For CAPS kicker */
|
||||
int16 floodlines, floodsecs; /* For FLOOD kicker */
|
||||
int16 repeattimes; /* For REPEAT kicker */
|
||||
};
|
||||
|
||||
+8
-8
@@ -2,19 +2,19 @@
|
||||
// Microsoft Developer Studio generated include file.
|
||||
// Used by Win32GUI.rc
|
||||
//
|
||||
#define VER_ANOPE 1
|
||||
#define MANIFEST_RESOURCE_ID 2
|
||||
#define ICON_APP 129
|
||||
#define VER_ANOPE 1
|
||||
#define MANIFEST_RESOURCE_ID 2
|
||||
#define ICON_APP 129
|
||||
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NO_MFC 1
|
||||
#define _APS_NEXT_RESOURCE_VALUE 152
|
||||
#define _APS_NEXT_COMMAND_VALUE 40061
|
||||
#define _APS_NEXT_CONTROL_VALUE 1167
|
||||
#define _APS_NEXT_SYMED_VALUE 104
|
||||
#define _APS_NO_MFC 1
|
||||
#define _APS_NEXT_RESOURCE_VALUE 152
|
||||
#define _APS_NEXT_COMMAND_VALUE 40061
|
||||
#define _APS_NEXT_CONTROL_VALUE 1167
|
||||
#define _APS_NEXT_SYMED_VALUE 104
|
||||
#endif
|
||||
#endif
|
||||
|
||||
+678
-805
File diff suppressed because it is too large
Load Diff
+3
-4
@@ -1,14 +1,13 @@
|
||||
/* Header for Services list handler.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -32,7 +31,7 @@ struct slistopts_ {
|
||||
int32 flags; /* Flags for the list. See below. */
|
||||
|
||||
int (*compareitem) (SList *slist, void *item1, void *item2); /* Called to compare two items */
|
||||
int (*isequal) (SList *slist, void *item1, void *item2); /* Called by slist_indexof. item1 can be an arbitrary pointer. */
|
||||
int (*isequal) (SList *slist, void *item1, void *item2); /* Called by slist_indexof. item1 can be an arbitrary pointer. */
|
||||
void (*freeitem) (SList *slist, void *item); /* Called when an item is removed */
|
||||
};
|
||||
|
||||
|
||||
+2
-3
@@ -1,9 +1,9 @@
|
||||
/*
|
||||
*
|
||||
* (C) 2004-2009 Anope Team
|
||||
* (C) 2004-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
@@ -22,7 +22,6 @@ typedef SOCKET ano_socket_t;
|
||||
#define ano_sockgeterr() WSAGetLastError()
|
||||
#define ano_sockseterr(err) WSASetLastError(err)
|
||||
/* ano_sockstrerror in sockutil.c */
|
||||
extern char *ano_sockstrerror(int);
|
||||
/* ano_socksetnonb in sockutil.c */
|
||||
#define ano_sockerrnonb(err) (err == WSAEINPROGRESS || err == WSAEWOULDBLOCK)
|
||||
#define SOCKERR_EBADF WSAENOTSOCK
|
||||
|
||||
@@ -1,121 +0,0 @@
|
||||
#ifndef _SYSCONF_H_
|
||||
#define _SYSCONF_H_
|
||||
|
||||
#cmakedefine DEFUMASK @DEFUMASK@
|
||||
#cmakedefine HAVE_SYS_TYPES_H 1
|
||||
#cmakedefine HAVE_STDINT_H 1
|
||||
#cmakedefine HAVE_STDDEF_H 1
|
||||
#cmakedefine HAVE_BACKTRACE 1
|
||||
#cmakedefine HAVE_GETHOSTBYNAME 1
|
||||
#cmakedefine HAVE_GETTIMEOFDAY 1
|
||||
#cmakedefine HAVE_SETGRENT 1
|
||||
#cmakedefine HAVE_STRCASECMP 1
|
||||
#cmakedefine HAVE_STRICMP 1
|
||||
#cmakedefine HAVE_STRINGS_H 1
|
||||
#cmakedefine HAVE_STRLCAT 1
|
||||
#cmakedefine HAVE_STRLCPY 1
|
||||
#cmakedefine HAVE_SYS_SELECT_H 1
|
||||
#cmakedefine HAVE_UMASK 1
|
||||
#cmakedefine RUNGROUP "@RUNGROUP@"
|
||||
#cmakedefine SERVICES_BIN "@SERVICES_BIN@"
|
||||
|
||||
#cmakedefine HAVE_UINT8_T 1
|
||||
#cmakedefine HAVE_U_INT8_T 1
|
||||
#cmakedefine HAVE_INT16_T 1
|
||||
#cmakedefine HAVE_UINT16_T 1
|
||||
#cmakedefine HAVE_U_INT16_T 1
|
||||
#cmakedefine HAVE_INT32_T 1
|
||||
#cmakedefine HAVE_UINT32_T 1
|
||||
#cmakedefine HAVE_U_INT32_T 1
|
||||
|
||||
#ifdef HAVE_SYS_TYPES_H
|
||||
# include <sys/types.h>
|
||||
#endif
|
||||
#ifdef HAVE_STDINT_H
|
||||
# include <stdint.h>
|
||||
#endif
|
||||
#ifdef HAVE_STDDEF_H
|
||||
# include <stddef.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_UINT8_T
|
||||
typedef uint8_t uint8;
|
||||
#else
|
||||
# ifdef HAVE_U_INT8_T
|
||||
typedef u_int8_t uint8;
|
||||
# else
|
||||
# ifdef _WIN32
|
||||
typedef unsigned __int8 uint8;
|
||||
# else
|
||||
typedef unsigned short uint8;
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_INT16_T
|
||||
typedef int16_t int16;
|
||||
#else
|
||||
# ifdef _WIN32
|
||||
typedef signed __int16 int16;
|
||||
# else
|
||||
typedef int int16;
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_UINT16_T
|
||||
typedef uint16_t uint16;
|
||||
#else
|
||||
# ifdef HAVE_U_INT16_T
|
||||
typedef u_int16_t uint16;
|
||||
# else
|
||||
# ifdef _WIN32
|
||||
typedef unsigned __int16 uint16;
|
||||
# else
|
||||
typedef unsigned int uint16;
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_INT32_T
|
||||
typedef int32_t int32;
|
||||
#else
|
||||
# ifdef _WIN32
|
||||
typedef signed __int32 int32;
|
||||
# else
|
||||
typedef long int32;
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_UINT32_T
|
||||
typedef uint32_t uint32;
|
||||
#else
|
||||
# ifdef HAVE_U_INT32_T
|
||||
typedef u_int32_t uint32;
|
||||
# else
|
||||
# ifdef _WIN32
|
||||
typedef unsigned __int32 uint32;
|
||||
# else
|
||||
typedef unsigned long uint32;
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
# ifdef MSVCPP
|
||||
# define snprintf _snprintf
|
||||
# endif
|
||||
# define popen _popen
|
||||
# define pclose _pclose
|
||||
# define ftruncate _chsize
|
||||
# ifdef MSVCPP
|
||||
# define PATH_MAX MAX_PATH
|
||||
# endif
|
||||
# define MAXPATHLEN MAX_PATH
|
||||
# define bzero(buf, size) memset(buf, 0, size)
|
||||
# ifdef MSVCPP
|
||||
# define strcasecmp stricmp
|
||||
# endif
|
||||
# define sleep(x) Sleep(x * 1000)
|
||||
#endif
|
||||
|
||||
#endif
|
||||
+202
-96
@@ -1,121 +1,227 @@
|
||||
#ifndef _SYSCONF_H_
|
||||
#define _SYSCONF_H_
|
||||
/* include/sysconf.h.in. Generated from configure.in by autoheader. */
|
||||
|
||||
/* "Default umask Permissions" */
|
||||
#undef DEFUMASK
|
||||
#undef HAVE_SYS_TYPES_H
|
||||
#undef HAVE_STDINT_H
|
||||
#undef HAVE_STDDEF_H
|
||||
|
||||
/* "No prefix needed for dlopen" */
|
||||
#undef DL_PREFIX
|
||||
|
||||
/* "Has sys/types.h" */
|
||||
#undef HAS_SYS_TYPES_H
|
||||
|
||||
/* "" */
|
||||
#undef HAVE_BACKTRACE
|
||||
|
||||
/* Define to 1 if you have the `fork' function. */
|
||||
#undef HAVE_FORK
|
||||
|
||||
/* Define to 1 if you have the `gethostbyname' function. */
|
||||
#undef HAVE_GETHOSTBYNAME
|
||||
|
||||
/* Define to 1 if you have the `gethostbyname_r' function. */
|
||||
#undef HAVE_GETHOSTBYNAME_R
|
||||
|
||||
/* Define to 1 if you have the `gettimeofday' function. */
|
||||
#undef HAVE_GETTIMEOFDAY
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#undef HAVE_INTTYPES_H
|
||||
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#undef HAVE_MEMORY_H
|
||||
|
||||
/* Define to 1 if you have the `setgrent' function. */
|
||||
#undef HAVE_SETGRENT
|
||||
|
||||
/* Define to 1 if you have the `snprintf' function. */
|
||||
#undef HAVE_SNPRINTF
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#undef HAVE_STDINT_H
|
||||
|
||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||
#undef HAVE_STDLIB_H
|
||||
|
||||
/* Define to 1 if you have the `strcasecmp' function. */
|
||||
#undef HAVE_STRCASECMP
|
||||
|
||||
/* Define to 1 if you have the `strdup' function. */
|
||||
#undef HAVE_STRDUP
|
||||
|
||||
/* Define to 1 if you have the `strerror' function. */
|
||||
#undef HAVE_STRERROR
|
||||
|
||||
/* Define to 1 if you have the `stricmp' function. */
|
||||
#undef HAVE_STRICMP
|
||||
|
||||
/* "" */
|
||||
#undef HAVE_STRINGS_H
|
||||
|
||||
/* Define to 1 if you have the <string.h> header file. */
|
||||
#undef HAVE_STRING_H
|
||||
|
||||
/* Define to 1 if you have the `strlcat' function. */
|
||||
#undef HAVE_STRLCAT
|
||||
|
||||
/* Define to 1 if you have the `strlcpy' function. */
|
||||
#undef HAVE_STRLCPY
|
||||
|
||||
/* Define to 1 if you have the `strsignal' function. */
|
||||
#undef HAVE_STRSIGNAL
|
||||
|
||||
/* Define to 1 if you have the `strspn' function. */
|
||||
#undef HAVE_STRSPN
|
||||
|
||||
/* Define to 1 if you have the `sys_errlist' function. */
|
||||
#undef HAVE_SYS_ERRLIST
|
||||
|
||||
/* "" */
|
||||
#undef HAVE_SYS_SELECT_H
|
||||
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#undef HAVE_SYS_STAT_H
|
||||
|
||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||
#undef HAVE_SYS_TYPES_H
|
||||
|
||||
/* Define to 1 if you have the `umask' function. */
|
||||
#undef HAVE_UMASK
|
||||
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#undef HAVE_UNISTD_H
|
||||
|
||||
/* va_list as array */
|
||||
#undef HAVE_VA_LIST_AS_ARRAY
|
||||
|
||||
/* "Module dir" */
|
||||
#undef MODULE_PATH
|
||||
|
||||
/* "Has mysql/mysql.h" */
|
||||
#undef MYSQL_HEADER_PREFIX
|
||||
|
||||
/* Define to the address where bug reports for this package should be sent. */
|
||||
#undef PACKAGE_BUGREPORT
|
||||
|
||||
/* Define to the full name of this package. */
|
||||
#undef PACKAGE_NAME
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#undef PACKAGE_STRING
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#undef PACKAGE_TARNAME
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#undef PACKAGE_VERSION
|
||||
|
||||
/* "Run group" */
|
||||
#undef RUNGROUP
|
||||
#define SERVICES_BIN "services"
|
||||
|
||||
#undef HAVE_UINT8_T
|
||||
#undef HAVE_U_INT8_T
|
||||
#undef HAVE_INT16_T
|
||||
#undef HAVE_UINT16_T
|
||||
#undef HAVE_U_INT16_T
|
||||
#undef HAVE_INT32_T
|
||||
#undef HAVE_UINT32_T
|
||||
#undef HAVE_U_INT32_T
|
||||
/* "Binary Dir" */
|
||||
#undef SERVICES_BIN
|
||||
|
||||
/* "services bin dir" */
|
||||
#undef SERVICES_DIR
|
||||
|
||||
/* The size of a `int', as computed by sizeof. */
|
||||
#undef SIZEOF_INT
|
||||
|
||||
/* The size of a `long', as computed by sizeof. */
|
||||
#undef SIZEOF_LONG
|
||||
|
||||
/* The size of a `short', as computed by sizeof. */
|
||||
#undef SIZEOF_SHORT
|
||||
|
||||
/* "modules not available" */
|
||||
#undef STATIC_LINKING
|
||||
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#undef STDC_HEADERS
|
||||
|
||||
/* "Modules available" */
|
||||
#undef USE_MODULES
|
||||
|
||||
/* "Use Mysql" */
|
||||
#undef USE_MYSQL
|
||||
|
||||
/* "Use RDB" */
|
||||
#undef USE_RDB
|
||||
|
||||
/* Define to `short' if <sys/types.h> does not define. */
|
||||
#undef int16_t
|
||||
|
||||
/* Define to `long' if <sys/types.h> does not define. */
|
||||
#undef int32_t
|
||||
|
||||
/* Define to `unsigned short' if <sys/types.h> does not define. */
|
||||
#undef u_int16_t
|
||||
|
||||
/* Define to `unsigned long' if <sys/types.h> does not define. */
|
||||
#undef u_int32_t
|
||||
|
||||
/* Static config, copy from here to below before running autoheader! */
|
||||
|
||||
#ifndef BIG_ENDIAN
|
||||
|
||||
/* Big Endian system */
|
||||
#undef BIG_ENDIAN
|
||||
|
||||
#ifdef HAVE_SYS_TYPES_H
|
||||
# include <sys/types.h>
|
||||
#endif
|
||||
#ifdef HAVE_STDINT_H
|
||||
# include <stdint.h>
|
||||
#endif
|
||||
#ifdef HAVE_STDDEF_H
|
||||
# include <stddef.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_UINT8_T
|
||||
typedef uint8_t uint8;
|
||||
#else
|
||||
# ifdef HAVE_U_INT8_T
|
||||
typedef u_int8_t uint8;
|
||||
# else
|
||||
# ifdef _WIN32
|
||||
typedef unsigned __int8 uint8;
|
||||
# else
|
||||
typedef unsigned short uint8;
|
||||
# endif
|
||||
# endif
|
||||
#ifndef LITTLE_ENDIAN
|
||||
|
||||
/* Little Endian system */
|
||||
#undef LITTLE_ENDIAN
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_INT16_T
|
||||
/**
|
||||
* NOTE: BIG_ENDIAN and LITTLE_ENDIAN defines should not be left in
|
||||
* by autoheader as they may be defined or may not be, as such we check
|
||||
* if there defined before messing with them!
|
||||
**/
|
||||
|
||||
#ifdef HAS_SYS_TYPES_H
|
||||
#include <sys/types.h>
|
||||
#endif
|
||||
|
||||
#ifdef __STRICT_ANSI__
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
|
||||
/* We KNOW these are not ansi, we are defining them here to suppress the warning
|
||||
* * s messages on a "make strict" compile */
|
||||
#ifndef snprintf
|
||||
int snprintf(char *str, size_t size, const char *format, ...);
|
||||
#endif
|
||||
#ifndef vprintf
|
||||
int vprintf(const char *format, va_list ap);
|
||||
#endif
|
||||
#ifndef vfprintf
|
||||
int vfprintf(FILE *stream, const char *format, va_list ap);
|
||||
#endif
|
||||
#ifndef vsprintf
|
||||
int vsprintf(char *str, const char *format, va_list ap);
|
||||
#endif
|
||||
#ifndef vsnprintf
|
||||
int vsnprintf(char *str, size_t size, const char *format, va_list ap);
|
||||
#endif
|
||||
|
||||
FILE *popen(const char *command, const char *type);
|
||||
int pclose(FILE *stream);
|
||||
FILE *fdopen(int fildes, const char *mode);
|
||||
|
||||
int ftruncate(int fd, off_t length);
|
||||
|
||||
#ifdef HAVE_STRSIGNAL
|
||||
char *strsignal(int sig);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
typedef int16_t int16;
|
||||
#else
|
||||
# ifdef _WIN32
|
||||
typedef signed __int16 int16;
|
||||
# else
|
||||
typedef int int16;
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_UINT16_T
|
||||
typedef uint16_t uint16;
|
||||
#else
|
||||
# ifdef HAVE_U_INT16_T
|
||||
typedef u_int16_t uint16;
|
||||
# else
|
||||
# ifdef _WIN32
|
||||
typedef unsigned __int16 uint16;
|
||||
# else
|
||||
typedef unsigned int uint16;
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_INT32_T
|
||||
typedef int32_t int32;
|
||||
#else
|
||||
# ifdef _WIN32
|
||||
typedef signed __int32 int32;
|
||||
# else
|
||||
typedef long int32;
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_UINT32_T
|
||||
typedef uint32_t uint32;
|
||||
#else
|
||||
# ifdef HAVE_U_INT32_T
|
||||
typedef u_int32_t uint32;
|
||||
# else
|
||||
# ifdef _WIN32
|
||||
typedef unsigned __int32 uint32;
|
||||
# else
|
||||
typedef unsigned long uint32;
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
# ifdef MSVCPP
|
||||
# define snprintf _snprintf
|
||||
# endif
|
||||
# define popen _popen
|
||||
# define pclose _pclose
|
||||
# define ftruncate _chsize
|
||||
# ifdef MSVCPP
|
||||
# define PATH_MAX MAX_PATH
|
||||
# endif
|
||||
# define MAXPATHLEN MAX_PATH
|
||||
# define bzero(buf, size) memset(buf, 0, size)
|
||||
# ifdef MSVCPP
|
||||
# define strcasecmp stricmp
|
||||
# endif
|
||||
# define sleep(x) Sleep(x * 1000)
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
|
||||
#define SERVICES_DIR "data"
|
||||
#define SERVICES_BIN "anope.exe"
|
||||
|
||||
typedef signed __int16 int16;
|
||||
typedef signed __int16 int16_t;
|
||||
typedef unsigned __int16 uint16;
|
||||
typedef unsigned __int16 u_int16_t;
|
||||
typedef signed __int32 int32;
|
||||
typedef signed __int32 int32_t;
|
||||
typedef unsigned __int32 uint32;
|
||||
typedef unsigned __int32 u_int32_t;
|
||||
typedef unsigned __int8 u_int8_t;
|
||||
|
||||
#define HAVE_STRINGS_H 0
|
||||
#define HAVE_SYS_SELECT_H 0
|
||||
#define HAVE_SYS_SYSPROTO_H 0
|
||||
|
||||
#define HAVE_STRERROR 1
|
||||
#define HAVE_SYS_ERRLIST 0
|
||||
#define HAVE_SNPRINTF 1
|
||||
#define BAD_SNPRINTF 0
|
||||
#define HAVE_STRICMP 1
|
||||
#define HAVE_STRCASECMP 0
|
||||
#define HAVE_STRDUP 1
|
||||
#define HAVE_STRSPN 1
|
||||
#define HAVE_STRSIGNAL 0
|
||||
#define HAVE_GETTIMEOFDAY 0
|
||||
#define HAVE_SETGRENT 0
|
||||
#define HAVE_UMASK 0
|
||||
#define HAVE_FORK 0
|
||||
#define HAVE_GETHOSTBYNAME 1
|
||||
#define HAVE_BACKTRACE 0
|
||||
|
||||
/* Enable Module support */
|
||||
#define USE_MODULES
|
||||
#define MODULE_PATH ".\\modules\\"
|
||||
|
||||
/* Windows/MSVC likes to name things differently */
|
||||
#define snprintf _snprintf
|
||||
#define popen _popen
|
||||
#define pclose _pclose
|
||||
#define ftruncate _chsize
|
||||
#define PATH_MAX MAX_PATH
|
||||
#define MAXPATHLEN MAX_PATH
|
||||
#define bzero(buf, size) memset(buf, 0, size)
|
||||
#define strcasecmp stricmp
|
||||
#define sleep(x) Sleep(x*1000)
|
||||
|
||||
|
||||
+13
-9
@@ -1,14 +1,13 @@
|
||||
/* Time-delay routine include stuff.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -21,16 +20,16 @@
|
||||
/* Definitions for timeouts: */
|
||||
typedef struct timeout_ Timeout;
|
||||
struct timeout_ {
|
||||
Timeout *next, *prev;
|
||||
time_t settime, timeout;
|
||||
int repeat; /* Does this timeout repeat indefinitely? */
|
||||
void (*code)(Timeout *); /* This structure is passed to the code */
|
||||
void *data; /* Can be anything */
|
||||
Timeout *next, *prev;
|
||||
time_t settime, timeout;
|
||||
int repeat; /* Does this timeout repeat indefinitely? */
|
||||
void (*code)(Timeout *); /* This structure is passed to the code */
|
||||
void *data; /* Can be anything */
|
||||
};
|
||||
|
||||
|
||||
/* Check the timeout list for any pending actions. */
|
||||
extern void check_timeouts();
|
||||
extern void check_timeouts(void);
|
||||
|
||||
/* Add a timeout to the list to be triggered in `delay' seconds. Any
|
||||
* timeout added from within a timeout routine will not be checked during
|
||||
@@ -41,5 +40,10 @@ extern Timeout *add_timeout(int delay, void (*code)(Timeout *), int repeat);
|
||||
/* Remove a timeout from the list (if it's there). */
|
||||
extern void del_timeout(Timeout *t);
|
||||
|
||||
#ifdef DEBUG_COMMANDS
|
||||
/* Send the list of timeouts to the given user. */
|
||||
extern int send_timeout_list(User *u);
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* TIMEOUT_H */
|
||||
|
||||
-101
@@ -1,101 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2008-2009 Robin Burchell <w00t@inspircd.org>
|
||||
* Copyright (C) 2008-2009 Anope Team <team@anope.org>
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
struct u_chanlist {
|
||||
struct u_chanlist *next, *prev;
|
||||
Channel *chan;
|
||||
int16 status; /* Associated flags; see CSTATUS_* below. */
|
||||
};
|
||||
|
||||
struct u_chaninfolist {
|
||||
struct u_chaninfolist *next, *prev;
|
||||
ChannelInfo *chan;
|
||||
};
|
||||
|
||||
/* Online user and channel data. */
|
||||
class CoreExport User : public Extensible
|
||||
{
|
||||
public: // XXX: exposing a tiny bit too much
|
||||
User *next, *prev;
|
||||
|
||||
char nick[NICKMAX];
|
||||
|
||||
char *username; /* ident */
|
||||
char *host; /* User's real hostname */
|
||||
char *hostip; /* User's IP number */
|
||||
char *vhost; /* User's virtual hostname */
|
||||
std::string chost; /* User's cloaked hostname */
|
||||
char *vident; /* User's virtual ident */
|
||||
char *realname; /* Realname */
|
||||
Server *server; /* Server user is connected to */
|
||||
char *nickTrack; /* Nick Tracking */
|
||||
time_t timestamp; /* Timestamp of the nick */
|
||||
time_t my_signon; /* When did _we_ see the user? */
|
||||
time_t svid; /* Services ID */
|
||||
uint32 mode; /* See below */
|
||||
char *uid; /* Univeral ID */
|
||||
|
||||
NickAlias *na;
|
||||
|
||||
int isSuperAdmin; /* is SuperAdmin on or off? */
|
||||
|
||||
struct u_chanlist *chans; /* Channels user has joined */
|
||||
struct u_chaninfolist *founder_chans; /* Channels user has identified for */
|
||||
|
||||
unsigned short invalid_pw_count; /* # of invalid password attempts */
|
||||
time_t invalid_pw_time; /* Time of last invalid password */
|
||||
|
||||
time_t lastmemosend; /* Last time MS SEND command used */
|
||||
time_t lastnickreg; /* Last time NS REGISTER cmd used */
|
||||
time_t lastmail; /* Last time this user sent a mail */
|
||||
|
||||
|
||||
/****************************************************************/
|
||||
|
||||
/** Create a new user object, initialising necessary fields and
|
||||
* adds it to the hash
|
||||
*
|
||||
* @parameter nick The nickname of the user account.
|
||||
*/
|
||||
User(const std::string &nick);
|
||||
|
||||
/** Destroy a user.
|
||||
*/
|
||||
~User();
|
||||
|
||||
/** Update the nickname of a user record accordingly, should be
|
||||
* called from ircd protocol.
|
||||
*/
|
||||
void SetNewNick(const std::string &newnick);
|
||||
|
||||
/** Update the displayed (vhost) of a user record.
|
||||
* This is used (if set) instead of real host.
|
||||
*/
|
||||
void SetDisplayedHost(const std::string &host);
|
||||
|
||||
/** Update the displayed ident (username) of a user record.
|
||||
*/
|
||||
void SetIdent(const std::string &ident);
|
||||
|
||||
/** Updates the realname of the user record.
|
||||
*/
|
||||
void SetRealname(const std::string &realname);
|
||||
|
||||
/**
|
||||
* Send a message (notice or privmsg, depending on settings) to a user
|
||||
* @param source Sender nick
|
||||
* @param fmt Format of the Message
|
||||
* @param ... any number of parameters
|
||||
* @return void
|
||||
*/
|
||||
void SendMessage(const char *source, const char *fmt, ...);
|
||||
void SendMessage(const char *source, const std::string &msg);
|
||||
};
|
||||
|
||||
+11
-10
@@ -3,12 +3,8 @@
|
||||
# Build version string and increment Services build number.
|
||||
#
|
||||
|
||||
if [ $# -lt 2 ] ; then
|
||||
echo "Syntax: $0 <version.log> <version.h>"
|
||||
exit 1
|
||||
fi
|
||||
# Grab version information from the version control file.
|
||||
CTRL="$1"
|
||||
CTRL="../version.log"
|
||||
if [ -f $CTRL ] ; then
|
||||
. $CTRL
|
||||
else
|
||||
@@ -19,9 +15,8 @@ fi
|
||||
VERSION="${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}${VERSION_EXTRA} (${VERSION_BUILD})"
|
||||
VERSIONDOTTED="${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}${VERSION_EXTRA}.${VERSION_BUILD}"
|
||||
|
||||
VERSIONH="$2"
|
||||
if [ -f $VERSIONH ] ; then
|
||||
BUILD=`fgrep '#define BUILD' $VERSIONH | cut -f2 -d\"`
|
||||
if [ -f version.h ] ; then
|
||||
BUILD=`fgrep '#define BUILD' version.h | sed 's/^#define BUILD.*\([0-9]*\).*$/\1/'`
|
||||
BUILD=`expr $BUILD + 1 2>/dev/null`
|
||||
else
|
||||
BUILD=1
|
||||
@@ -29,10 +24,10 @@ fi
|
||||
if [ ! "$BUILD" ] ; then
|
||||
BUILD=1
|
||||
fi
|
||||
cat >$VERSIONH <<EOF
|
||||
cat >version.h <<EOF
|
||||
/* Version information for Services.
|
||||
*
|
||||
* (C) 2003-2008 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and CREDITS for further details.
|
||||
@@ -57,6 +52,12 @@ cat >$VERSIONH <<EOF
|
||||
#define VERSION_STRING "$VERSION"
|
||||
#define VERSION_STRING_DOTTED "$VERSIONDOTTED"
|
||||
|
||||
#ifdef DEBUG_COMMANDS
|
||||
# define VER_DEBUG "D"
|
||||
#else
|
||||
# define VER_DEBUG
|
||||
#endif
|
||||
|
||||
#if defined(_WIN32)
|
||||
# if _MSC_VER >= 1400
|
||||
# define VER_OS "W"
|
||||
|
||||
+138
-150
@@ -1,9 +1,9 @@
|
||||
/* version file handler for win32.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
@@ -16,8 +16,8 @@
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <cstdlib>
|
||||
#include <cctype>
|
||||
|
||||
#define CTRL "version.log"
|
||||
|
||||
long version_major, version_minor, version_patch, version_build, build;
|
||||
char *version_extra = NULL;
|
||||
@@ -30,209 +30,197 @@ long get_value(char *);
|
||||
char *get_value_str(char *);
|
||||
char *strip(char *);
|
||||
void parse_version(FILE *);
|
||||
void write_version(FILE *, const char *);
|
||||
void write_version(FILE *);
|
||||
void parse_line(FILE *, char *);
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
int main()
|
||||
{
|
||||
if (argc < 4) {
|
||||
fprintf(stderr, "Syntax: %s <version.log> <version.sh> <version.h>\n", argv[0]);
|
||||
exit(1);
|
||||
}
|
||||
FILE *fd = fopen(argv[1], "r");
|
||||
FILE *fd = fopen(CTRL, "r");
|
||||
|
||||
|
||||
if (!fd) {
|
||||
fprintf(stderr, "Error: Unable to find control file: %s\n", argv[1]);
|
||||
exit(0);
|
||||
}
|
||||
if (!fd) {
|
||||
fprintf(stderr, "Error: Unable to find control file: " CTRL "\n");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
load_ctrl(fd);
|
||||
fclose(fd);
|
||||
load_ctrl(fd);
|
||||
fclose(fd);
|
||||
|
||||
_snprintf(version, 1024, "%ld.%ld.%ld%s (%ld)", version_major, version_minor,
|
||||
version_patch, (version_extra ? version_extra : ""), version_build);
|
||||
_snprintf(version, 1024, "%d.%d.%d%s (%d)", version_major, version_minor,
|
||||
version_patch, (version_extra ? version_extra : ""), version_build);
|
||||
|
||||
_snprintf(version_dotted, 1024, "%ld.%ld.%ld%s.%ld", version_major, version_minor,
|
||||
version_patch, (version_extra ? version_extra : ""), version_build);
|
||||
_snprintf(version_dotted, 1024, "%d.%d.%d%s.%d", version_major, version_minor,
|
||||
version_patch, (version_extra ? version_extra : ""), version_build);
|
||||
|
||||
fd = fopen(argv[3], "r");
|
||||
fd = fopen("version.h", "r");
|
||||
|
||||
if (fd) {
|
||||
parse_version(fd);
|
||||
fclose(fd);
|
||||
} else
|
||||
build = 1;
|
||||
if (fd) {
|
||||
parse_version(fd);
|
||||
fclose(fd);
|
||||
} else
|
||||
build = 1;
|
||||
|
||||
|
||||
fd = fopen(argv[3], "w");
|
||||
write_version(fd, argv[2]);
|
||||
fclose(fd);
|
||||
|
||||
fd = fopen("version.h", "w");
|
||||
write_version(fd);
|
||||
fclose(fd);
|
||||
|
||||
if (version_extra)
|
||||
free(version_extra);
|
||||
}
|
||||
|
||||
void load_ctrl(FILE * fd)
|
||||
{
|
||||
char buf[512];
|
||||
while (fgets(buf, 511, fd)) {
|
||||
char *var;
|
||||
char buf[512];
|
||||
while (fgets(buf, 511, fd)) {
|
||||
char *var;
|
||||
|
||||
strip(buf);
|
||||
strip(buf);
|
||||
|
||||
var = strtok(buf, "=");
|
||||
if (!var)
|
||||
continue;
|
||||
if (!strcmp(var, "VERSION_MAJOR"))
|
||||
version_major = get_value(strtok(NULL, ""));
|
||||
else if (!strcmp(var, "VERSION_MINOR"))
|
||||
version_minor = get_value(strtok(NULL, ""));
|
||||
else if (!strcmp(var, "VERSION_PATCH"))
|
||||
version_patch = get_value(strtok(NULL, ""));
|
||||
else if (!strcmp(var, "VERSION_BUILD"))
|
||||
version_build = get_value(strtok(NULL, ""));
|
||||
else if (!strcmp(var, "VERSION_EXTRA"))
|
||||
version_extra = get_value_str(strtok(NULL, ""));
|
||||
var = strtok(buf, "=");
|
||||
if (!var)
|
||||
continue;
|
||||
if (!strcmp(var, "VERSION_MAJOR"))
|
||||
version_major = get_value(strtok(NULL, ""));
|
||||
else if (!strcmp(var, "VERSION_MINOR"))
|
||||
version_minor = get_value(strtok(NULL, ""));
|
||||
else if (!strcmp(var, "VERSION_PATCH"))
|
||||
version_patch = get_value(strtok(NULL, ""));
|
||||
else if (!strcmp(var, "VERSION_BUILD"))
|
||||
version_build = get_value(strtok(NULL, ""));
|
||||
else if (!strcmp(var, "VERSION_EXTRA"))
|
||||
version_extra = get_value_str(strtok(NULL, ""));
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
char *strip(char *str)
|
||||
{
|
||||
char *c;
|
||||
if ((c = strchr(str, '\n')))
|
||||
*c = 0;
|
||||
if ((c = strchr(str, '\r')))
|
||||
*c = 0;
|
||||
return str;
|
||||
char *c;
|
||||
if ((c = strchr(str, '\n')))
|
||||
*c = 0;
|
||||
if ((c = strchr(str, '\r')))
|
||||
*c = 0;
|
||||
return str;
|
||||
}
|
||||
|
||||
long get_value(char *string)
|
||||
{
|
||||
// XXX : if the fields in version.log are empty strtok returns a double quote, dont try to atol it then
|
||||
if (string[1] != '"')
|
||||
return atol(get_value_str(string));
|
||||
else
|
||||
return 0;
|
||||
return atol(get_value_str(string));
|
||||
}
|
||||
|
||||
char *get_value_str(char *string)
|
||||
{
|
||||
int len;
|
||||
char *newstr;
|
||||
int len;
|
||||
|
||||
if (*string == '"')
|
||||
string++;
|
||||
if (*string == '"')
|
||||
string++;
|
||||
|
||||
len = strlen(string);
|
||||
len = strlen(string);
|
||||
|
||||
if (string[len - 1] == '"')
|
||||
string[len - 1] = 0;
|
||||
if (!*string)
|
||||
return NULL;
|
||||
newstr = (char *)malloc(len + 1);
|
||||
strcpy(newstr, string);
|
||||
return newstr;
|
||||
//return strdup(string);
|
||||
if (string[len - 1] == '"')
|
||||
string[len - 1] = 0;
|
||||
if (!*string)
|
||||
return NULL;
|
||||
return strdup(string);
|
||||
}
|
||||
|
||||
void parse_version(FILE * fd)
|
||||
{
|
||||
char buf[1024];
|
||||
char buf[1024];
|
||||
|
||||
while (fgets(buf, 1023, fd)) {
|
||||
char *para1;
|
||||
while (fgets(buf, 1023, fd)) {
|
||||
char *para1;
|
||||
|
||||
strip(buf);
|
||||
para1 = strtok(buf, " \t");
|
||||
strip(buf);
|
||||
para1 = strtok(buf, " \t");
|
||||
|
||||
if (!para1)
|
||||
continue;
|
||||
if (!para1)
|
||||
continue;
|
||||
|
||||
if (!strcmp(para1, "#define")) {
|
||||
char *para2 = strtok(NULL, " \t");
|
||||
if (!strcmp(para1, "#define")) {
|
||||
char *para2 = strtok(NULL, " \t");
|
||||
|
||||
if (!para2)
|
||||
continue;
|
||||
if (!para2)
|
||||
continue;
|
||||
|
||||
if (!strcmp(para2, "BUILD")) {
|
||||
char *value = strtok(NULL, "");
|
||||
build = get_value(value);
|
||||
build++;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
build = 1;
|
||||
if (!strcmp(para2, "BUILD")) {
|
||||
char *value = strtok(NULL, "");
|
||||
build = get_value(value);
|
||||
build++;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
build = 1;
|
||||
}
|
||||
|
||||
void write_version(FILE * fd, const char *input)
|
||||
void write_version(FILE * fd)
|
||||
{
|
||||
FILE *fdin = fopen(input, "r");
|
||||
char buf[1024];
|
||||
short until_eof = 0;
|
||||
FILE *fdin = fopen("include\\version.sh", "r");
|
||||
char buf[1024];
|
||||
short until_eof = 0;
|
||||
|
||||
while (fgets(buf, 1023, fdin)) {
|
||||
strip(buf);
|
||||
if (!fdin)
|
||||
return;
|
||||
while (fgets(buf, 1023, fdin)) {
|
||||
strip(buf);
|
||||
|
||||
if (until_eof)
|
||||
{
|
||||
if (!strcmp(buf, "EOF"))
|
||||
break;
|
||||
else
|
||||
parse_line(fd, buf);
|
||||
}
|
||||
|
||||
if (!strcmp(buf, "cat >$VERSIONH <<EOF"))
|
||||
until_eof = 1;
|
||||
}
|
||||
if (until_eof)
|
||||
if (!strcmp(buf, "EOF"))
|
||||
break;
|
||||
else
|
||||
parse_line(fd, buf);
|
||||
|
||||
if (!strcmp(buf, "cat >version.h <<EOF"))
|
||||
until_eof = 1;
|
||||
}
|
||||
fclose(fdin);
|
||||
}
|
||||
|
||||
void parse_line(FILE * fd, char *line)
|
||||
{
|
||||
char *c;
|
||||
for (c = line; *c; c++) {
|
||||
/* It's a variable, find out which */
|
||||
if (*c == '$') {
|
||||
char *var, *varbegin;
|
||||
char *c;
|
||||
for (c = line; *c; c++) {
|
||||
/* It's a variable, find out which */
|
||||
if (*c == '$') {
|
||||
char *var, *varbegin;
|
||||
|
||||
if (*(c + 1))
|
||||
c++;
|
||||
else
|
||||
continue;
|
||||
for (var = varbegin = c; var; var++) {
|
||||
if (!isalnum(*var) && *var != '_')
|
||||
break;
|
||||
}
|
||||
if (var != varbegin) {
|
||||
char tmp = *var;
|
||||
if (*(c + 1))
|
||||
c++;
|
||||
else
|
||||
continue;
|
||||
for (var = varbegin = c; var; var++) {
|
||||
if (!isalnum(*var) && *var != '_')
|
||||
break;
|
||||
}
|
||||
if (var != varbegin) {
|
||||
char tmp = *var;
|
||||
|
||||
*var = 0;
|
||||
if (!strcmp(varbegin, "VERSION_MAJOR"))
|
||||
fprintf(fd, "%ld", version_major);
|
||||
else if (!strcmp(varbegin, "VERSION_MINOR"))
|
||||
fprintf(fd, "%ld", version_minor);
|
||||
else if (!strcmp(varbegin, "VERSION_PATCH"))
|
||||
fprintf(fd, "%ld", version_patch);
|
||||
else if (!strcmp(varbegin, "VERSION_EXTRA")) {
|
||||
if (version_extra)
|
||||
fprintf(fd, "%s", version_extra);
|
||||
} else if (!strcmp(varbegin, "VERSION_BUILD"))
|
||||
fprintf(fd, "%ld", version_build);
|
||||
else if (!strcmp(varbegin, "BUILD"))
|
||||
fprintf(fd, "%ld", build);
|
||||
else if (!strcmp(varbegin, "VERSION"))
|
||||
fprintf(fd, "%s", version);
|
||||
else if (!strcmp(varbegin, "VERSIONDOTTED"))
|
||||
fprintf(fd, "%s", version_dotted);
|
||||
if (tmp) fputc(tmp, fd);
|
||||
}
|
||||
c = var;
|
||||
} else
|
||||
fputc(*c, fd);
|
||||
}
|
||||
*var = 0;
|
||||
if (!strcmp(varbegin, "VERSION_MAJOR"))
|
||||
fprintf(fd, "%d", version_major);
|
||||
else if (!strcmp(varbegin, "VERSION_MINOR"))
|
||||
fprintf(fd, "%d", version_minor);
|
||||
else if (!strcmp(varbegin, "VERSION_PATCH"))
|
||||
fprintf(fd, "%d", version_patch);
|
||||
else if (!strcmp(varbegin, "VERSION_EXTRA")) {
|
||||
if (version_extra)
|
||||
fprintf(fd, "%s", version_extra);
|
||||
} else if (!strcmp(varbegin, "VERSION_BUILD"))
|
||||
fprintf(fd, "%d", version_build);
|
||||
else if (!strcmp(varbegin, "BUILD"))
|
||||
fprintf(fd, "%d", build);
|
||||
else if (!strcmp(varbegin, "VERSION"))
|
||||
fprintf(fd, "%s", version);
|
||||
else if (!strcmp(varbegin, "VERSIONDOTTED"))
|
||||
fprintf(fd, "%s", version_dotted);
|
||||
fputc(tmp, fd);
|
||||
}
|
||||
c = var;
|
||||
} else
|
||||
fputc(*c, fd);
|
||||
}
|
||||
/* We only need \n here - we didn't open the file as binary -GD */
|
||||
fprintf(fd, "\n");
|
||||
fprintf(fd, "\n");
|
||||
}
|
||||
|
||||
+585
-257
@@ -1,7 +1,7 @@
|
||||
//
|
||||
// install.js - Windows Configuration
|
||||
//
|
||||
// (C) 2003-2008 Anope Team
|
||||
// (C) 2003-2014 Anope Team
|
||||
// Contact us at team@anope.org
|
||||
//
|
||||
// This program is free but copyrighted software; see the file COPYING for
|
||||
@@ -10,269 +10,597 @@
|
||||
// Based on the original code of Epona by Lara.
|
||||
// Based on the original code of Services by Andy Church.
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
|
||||
var anopeVersion = "Unknown";
|
||||
var vMaj, vMin, vPat, vBuild, vExtra;
|
||||
var drivesToCheck = ['C', 'D', 'E', 'F', 'G', 'H'];
|
||||
|
||||
var installerResponses = new Array();
|
||||
var softwareVersions = {
|
||||
'Compiler' : false,
|
||||
'MySQLDB' : false
|
||||
};
|
||||
|
||||
var installerQuestions = [
|
||||
{
|
||||
'question' : [
|
||||
'In what directory do you want Anope to be installed?'
|
||||
],
|
||||
'short' : 'Install directory:',
|
||||
'default_answer' : '',
|
||||
'store_answer' : function(answer) {
|
||||
if (!answer) {
|
||||
WScript.Echo("You must give a directory!\n");
|
||||
return false;
|
||||
{
|
||||
'question' : [
|
||||
'Do you want to compile Anope with MySQL Support?',
|
||||
'NOTE: You will need to have installed MySQL 3.23 or Above'
|
||||
],
|
||||
'short' : 'Enable MySQL Support?',
|
||||
'options' : [
|
||||
'yes',
|
||||
'no'
|
||||
],
|
||||
'default_answer' : 'no',
|
||||
'store_answer' : function (answer) {
|
||||
if (answer == 'yes') {
|
||||
if (!findMySQL()) {
|
||||
WScript.Echo("\nERROR: Cannot find MySQL - See error messages above for details.\n");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
installerResponses['MySQL DB Support'] = answer;
|
||||
return true;
|
||||
},
|
||||
'commit_config' : function() {
|
||||
if (installerResponses['MySQL DB Support'] == 'yes') {
|
||||
f.WriteLine("USE_MYSQL=1");
|
||||
f.WriteLine("MYSQL_LIB=\""+softwareVersions['MySQLDB'].installedDrive+":\\"+softwareVersions['MySQLDB'].libpaths[0]+"\"");
|
||||
f.WriteLine("MYSQL_INC=\""+softwareVersions['MySQLDB'].installedDrive+":\\"+softwareVersions['MySQLDB'].incpaths[0]+"\"");
|
||||
f.WriteLine("LIBS=$(LIBS) /LIBPATH:$(MYSQL_LIB)");
|
||||
f.WriteLine("MYSQL_LIB_PATH=/LIBPATH:$(MYSQL_LIB)");
|
||||
f.WriteLine("BASE_CFLAGS=$(BASE_CFLAGS) /I $(MYSQL_INC)");
|
||||
f.WriteLine("MYSQL_INC_PATH=/I $(MYSQL_INC)");
|
||||
f.WriteLine("RDB_C=rdb.c");
|
||||
f.WriteLine("RDB_O=rdb.obj");
|
||||
f.WriteLine("MYSQL_C=mysql.c");
|
||||
f.WriteLine("MYSQL_O=mysql.obj");
|
||||
f.WriteLine("BASE_CFLAGS=/D USE_MYSQL /D USE_RDB $(BASE_CFLAGS) /D HAVE_MYSQL_MYSQL_H");
|
||||
f.WriteLine("MYPASQL_BUILD=$(CC) /LD $(MYSQL_INC_PATH) src\\mypasql.c /link $(MYSQL_LIB_PATH) $(LFLAGS) /DEF:src\mypasql.def libmysql.lib ws2_32.lib advapi32.lib /NODEFAULTLIB:LIBCMTD.lib");
|
||||
f.WriteLine("LIBS=$(LIBS) libmysql.lib");
|
||||
}
|
||||
else {
|
||||
f.WriteLine("USE_MYSQL=0");
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
];
|
||||
|
||||
var buildPackages = [
|
||||
{
|
||||
'name' : 'Microsoft Visual Studio 2012',
|
||||
'libpaths' : [
|
||||
'Program Files\\Microsoft Visual Studio 11.0\\VC\\lib',
|
||||
'Program Files (x86)\\Microsoft Visual Studio 11.0\\VC\\lib',
|
||||
'Program Files\\Microsoft SDKs\\Windows\\v7.0\\Lib',
|
||||
'Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0\\Lib',
|
||||
],
|
||||
'incpaths': [
|
||||
'Program Files\\Microsoft Visual Studio 11.0\\VC\\include',
|
||||
'Program Files (x86)\\Microsoft Visual Studio 11.0\\VC\\include',
|
||||
'Program Files\\Microsoft SDKs\\Windows\\v7.0\\Include',
|
||||
'Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0\\Include',
|
||||
],
|
||||
'nmake' : [
|
||||
'Program Files\\Microsoft Visual Studio 11.0\\VC\\bin',
|
||||
'Program Files (x86)\\Microsoft Visual Studio 11.0\\VC\\bin',
|
||||
],
|
||||
'additional_switches' : [ '/w' ],
|
||||
'installedDrive' : 'C'
|
||||
},
|
||||
{
|
||||
'name' : 'Microsoft Visual Studio 2010 (64bit)',
|
||||
'libpaths' : [
|
||||
'Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\lib',
|
||||
'Program Files\\Microsoft SDKs\\Windows\\v7.1\\Lib',
|
||||
'Program Files\\Microsoft SDKs\\Windows\\v7.0\\Lib',
|
||||
'Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\Lib'
|
||||
],
|
||||
'incpaths': [
|
||||
'Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\include',
|
||||
'Program Files\\Microsoft SDKs\\Windows\\v7.1\\Include',
|
||||
'Program Files\\Microsoft SDKs\\Windows\\v7.0\\Include',
|
||||
'Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\Include'
|
||||
],
|
||||
'nmake' : [
|
||||
'Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\bin',
|
||||
],
|
||||
'additional_switches' : [ '/w' ],
|
||||
'installedDrive' : 'C'
|
||||
},
|
||||
{
|
||||
'name' : 'Microsoft Visual Studio 2010',
|
||||
'libpaths' : [
|
||||
'Program Files\\Microsoft Visual Studio 10.0\\VC\\lib',
|
||||
'Program Files\\Microsoft SDKs\\Windows\\v7.1\\Lib',
|
||||
'Program Files\\Microsoft SDKs\\Windows\\v7.0\\Lib',
|
||||
'Program Files\\Microsoft SDKs\\Windows\\v7.0A\\Lib'
|
||||
],
|
||||
'incpaths' : [
|
||||
'Program Files\\Microsoft Visual Studio 10.0\\VC\\include',
|
||||
'Program Files\\Microsoft SDKs\\Windows\\v7.1\\Include',
|
||||
'Program Files\\Microsoft SDKs\\Windows\\v7.0\\Include',
|
||||
'Program Files\\Microsoft SDKs\\Windows\\v7.0A\\Include'
|
||||
],
|
||||
'nmake' : [
|
||||
'Program Files\\Microsoft Visual Studio 10.0\\VC\\bin',
|
||||
],
|
||||
'additional_switches' : [ '/w' ],
|
||||
'installedDrive' : 'C'
|
||||
},
|
||||
{
|
||||
'name' : 'Microsoft Visual Studio 2008',
|
||||
'libpaths' : [
|
||||
'Program Files\\Microsoft Visual Studio 9.0\\VC\\Lib',
|
||||
'Program Files\\Microsoft Platform SDK for Windows Server 2003 R2\\Lib'
|
||||
],
|
||||
'incpaths' : [
|
||||
'Program Files\\Microsoft Visual Studio 9.0\\VC\\Include',
|
||||
'Program Files\\Microsoft Platform SDK for Windows Server 2003 R2\\Include'
|
||||
],
|
||||
'nmake' : [
|
||||
'Program Files\\Microsoft Platform SDK for Windows Server 2003 R2\\Bin',
|
||||
],
|
||||
'additional_switches' : [ '/w' ],
|
||||
'installedDrive' : 'C'
|
||||
},
|
||||
{
|
||||
'name' : 'Microsoft Visual Studio 2008 (64bit)',
|
||||
'libpaths' : [
|
||||
'Program Files (x86)\\Microsoft Visual Studio 9.0\\VC\\Lib',
|
||||
'Program Files\\Microsoft Platform SDK for Windows Server 2003 R2\\Lib'
|
||||
],
|
||||
'incpaths' : [
|
||||
'Program Files (x86)\\Microsoft Visual Studio 9.0\\VC\\Include',
|
||||
'Program Files\\Microsoft Platform SDK for Windows Server 2003 R2\\Include'
|
||||
],
|
||||
'nmake' : [
|
||||
'Program Files\\Microsoft Platform SDK for Windows Server 2003 R2\\Bin',
|
||||
],
|
||||
'additional_switches' : [ '/w' ],
|
||||
'installedDrive' : 'C'
|
||||
},
|
||||
|
||||
{
|
||||
'name' : 'Microsoft Visual Studio 2005',
|
||||
'libpaths' : [
|
||||
'Program Files\\Microsoft Visual Studio 8\\VC\\Lib',
|
||||
'Program Files\\Microsoft Platform SDK for Windows Server 2003 R2\\Lib'
|
||||
],
|
||||
'incpaths' : [
|
||||
'Program Files\\Microsoft Visual Studio 8\\VC\\Include',
|
||||
'Program Files\\Microsoft Platform SDK for Windows Server 2003 R2\\Include'
|
||||
],
|
||||
'nmake' : [
|
||||
'Program Files\\Microsoft Platform SDK for Windows Server 2003 R2\\Bin',
|
||||
''
|
||||
],
|
||||
'additional_switches' : [
|
||||
'/w'
|
||||
],
|
||||
'installedDrive' : 'C'
|
||||
},
|
||||
{
|
||||
'name' : 'Microsoft Visual Studio 2005 (Old PSDK)',
|
||||
'libpaths' : [
|
||||
'Program Files\\Microsoft Visual Studio 8\\VC\\Lib',
|
||||
'Program Files\\Microsoft Platform SDK\\Lib'
|
||||
],
|
||||
'incpaths' : [
|
||||
'Program Files\\Microsoft Visual Studio 8\\VC\\Include',
|
||||
'Program Files\\Microsoft Platform SDK\\Include'
|
||||
],
|
||||
'nmake' : [
|
||||
'Program Files\\Microsoft Platform SDK\\Bin',
|
||||
''
|
||||
],
|
||||
'additional_switches' : [
|
||||
'/w'
|
||||
],
|
||||
'installedDrive' : 'C'
|
||||
}
|
||||
];
|
||||
|
||||
|
||||
var mysqlVersions = [
|
||||
|
||||
{
|
||||
'name' : 'MySQL 5.5',
|
||||
'libpaths' : [
|
||||
'Program Files\\MySQL\\MySQL Server 5.5\\Lib'
|
||||
],
|
||||
'incpaths' : [
|
||||
'Program Files\\MySQL\\MySQL Server 5.5\\Include'
|
||||
],
|
||||
'dllfile' : 'Program Files\\MySQL\\MySQL Server 5.5\\bin\\libmysql.dll',
|
||||
'installedDrive' : 'C'
|
||||
},
|
||||
|
||||
{
|
||||
'name' : 'MySQL 5.1',
|
||||
'libpaths' : [
|
||||
'Program Files\\MySQL\\MySQL Server 5.1\\Lib\\opt'
|
||||
],
|
||||
'incpaths' : [
|
||||
'Program Files\\MySQL\\MySQL Server 5.1\\Include'
|
||||
],
|
||||
'dllfile' : 'Program Files\\MySQL\\MySQL Server 5.1\\bin\\libmysql.dll',
|
||||
'installedDrive' : 'C'
|
||||
},
|
||||
|
||||
{
|
||||
'name' : 'MySQL 5.0',
|
||||
'libpaths' : [
|
||||
'Program Files\\MySQL\\MySQL Server 5.0\\Lib\\opt'
|
||||
],
|
||||
'incpaths' : [
|
||||
'Program Files\\MySQL\\MySQL Server 5.0\\Include'
|
||||
],
|
||||
'dllfile' : 'Program Files\\MySQL\\MySQL Server 5.0\\Bin\\libmysql.dll',
|
||||
'installedDrive' : 'C'
|
||||
},
|
||||
|
||||
{
|
||||
'name' : 'MySQL 4.1',
|
||||
'libpaths' : [
|
||||
'Program Files\\MySQL\\MySQL Server 4.1\\Lib\\opt'
|
||||
],
|
||||
'incpaths' : [
|
||||
'Program Files\\MySQL\\MySQL Server 4.1\\Include'
|
||||
],
|
||||
'dllfile' : 'Program Files\\MySQL\\MySQL Server 4.1\\Bin\\libmysql.dll',
|
||||
'installedDrive' : 'C'
|
||||
},
|
||||
|
||||
{
|
||||
'name' : 'MySQL 4.0',
|
||||
'libpaths' : [
|
||||
'Program Files\\MySQL\\MySQL Server 4.0\\Lib\\opt'
|
||||
],
|
||||
'incpaths' : [
|
||||
'Program Files\\MySQL\\MySQL Server 4.0\\Include'
|
||||
],
|
||||
'dllfile' : 'Program Files\\MySQL\\MySQL Server 4.0\\Bin\\libmysql.dll',
|
||||
'installedDrive' : 'C'
|
||||
},
|
||||
|
||||
{
|
||||
'name' : 'MySQL 3.23 or older (or other default path)',
|
||||
'libpaths' : [
|
||||
'mysql\\lib\\opt'
|
||||
],
|
||||
'incpaths' : [
|
||||
'mysql\\include'
|
||||
],
|
||||
'dllfile' : 'mysql\\Bin\\libmysql.dll',
|
||||
'installedDrive' : 'C'
|
||||
}
|
||||
|
||||
];
|
||||
|
||||
var bannerReplacements = [
|
||||
{
|
||||
'findtext' : /CURVER/g,
|
||||
'replacement' : function() { FindAnopeVersion(); return anopeVersion; }
|
||||
},
|
||||
{
|
||||
'findtext' : / For more options type .\/Config --help/g,
|
||||
'replacement' : function() { return ''; }
|
||||
}
|
||||
];
|
||||
|
||||
|
||||
var fso = WScript.CreateObject("Scripting.FileSystemObject");
|
||||
var x, y, z;
|
||||
|
||||
if (fso.FileExists('.BANNER')) {
|
||||
var bannerStream = fso.OpenTextFile(".BANNER");
|
||||
var bannerText = bannerStream.ReadAll();
|
||||
bannerStream.close();
|
||||
|
||||
for (x in bannerReplacements) {
|
||||
var thisReplacement = bannerReplacements[x];
|
||||
bannerText = bannerText.replace(thisReplacement['findtext'], thisReplacement['replacement']);
|
||||
}
|
||||
|
||||
WScript.Echo(bannerText+"\n");
|
||||
}
|
||||
else {
|
||||
WScript.Echo("ERROR: Cannot find banner file!\n");
|
||||
}
|
||||
|
||||
WScript.Echo("Press Enter to Begin...");
|
||||
InstallerInput();
|
||||
WScript.Echo("");
|
||||
|
||||
for (x in installerQuestions) {
|
||||
var thisQuestion = installerQuestions[x];
|
||||
var validResponse = false;
|
||||
var validOpts = new Array();
|
||||
while (!validResponse) {
|
||||
for (y in thisQuestion.question) {
|
||||
var qLine = thisQuestion.question[y];
|
||||
WScript.Echo(qLine);
|
||||
}
|
||||
WScript.Echo('');
|
||||
var choiceLine = '';
|
||||
for (y in thisQuestion.options) {
|
||||
choiceLine += thisQuestion.options[y] + ', ';
|
||||
validOpts[thisQuestion.options[y]] = true;
|
||||
}
|
||||
choiceLine = choiceLine.substring(0, choiceLine.length - 2);
|
||||
WScript.Echo("Available Options: "+choiceLine);
|
||||
WScript.Echo("Default Answer: "+thisQuestion.default_answer+"\n");
|
||||
WScript.Echo(thisQuestion.short);
|
||||
var inputValue = InstallerInput().toLowerCase();
|
||||
if (!inputValue) {
|
||||
inputValue = thisQuestion.default_answer;
|
||||
}
|
||||
if (!validOpts[inputValue]) {
|
||||
WScript.Echo("ERROR: Invalid option '"+inputValue+"'\n");
|
||||
}
|
||||
else if (thisQuestion.store_answer(inputValue)) {
|
||||
validResponse = true;
|
||||
}
|
||||
}
|
||||
WScript.Echo("");
|
||||
}
|
||||
|
||||
if (!findCompiler()) {
|
||||
WScript.Echo("\nERROR: No suitable build tools were found!");
|
||||
WScript.Echo("Please ensure you have downloaded and installed a version of Visual C++ and/or PlatformSDK.\n");
|
||||
WScript.Echo("For more information on the tools needed to build Anope on Windows, see:\nhttp://wiki.anope.org/index.php/Windows:1.8#Compiling\n");
|
||||
}
|
||||
else {
|
||||
WScript.Echo("\nBuild tools were found successfully!\n");
|
||||
WScript.Echo("\nAnope will be compiled with the following options:\n");
|
||||
for (x in installerResponses) {
|
||||
var thisResponse = installerResponses[x];
|
||||
WScript.Echo("\t"+x+":\t\t["+thisResponse.toUpperCase()+"]");
|
||||
}
|
||||
for (x in softwareVersions) {
|
||||
var thisVer = softwareVersions[x];
|
||||
if (!thisVer) {
|
||||
WScript.Echo("\t"+x+" Version:\t\tNot Enabled");
|
||||
}
|
||||
else {
|
||||
WScript.Echo("\t"+x+" Version:\t\t"+thisVer.name);
|
||||
}
|
||||
}
|
||||
WScript.Echo("\tAnope Version:\t\t\t"+anopeVersion);
|
||||
WScript.Echo("\nTo continue, please press Enter...");
|
||||
InstallerInput();
|
||||
|
||||
var f = fso.OpenTextFile("Makefile.inc.win32", 2);
|
||||
f.WriteLine("#");
|
||||
f.WriteLine("# Generated by install.js");
|
||||
f.WriteLine("#");
|
||||
|
||||
if (typeof(softwareVersions['Compiler'].additional_switches) !== 'boolean') {
|
||||
var switch_line = '';
|
||||
for (x in softwareVersions['Compiler'].additional_switches) {
|
||||
switch_line += softwareVersions['Compiler'].additional_switches[x]+" ";
|
||||
}
|
||||
f.WriteLine("VC6="+switch_line);
|
||||
}
|
||||
var path_line = '';
|
||||
for (x in softwareVersions['Compiler'].libpaths) {
|
||||
path_line += "/LIBPATH:\""+softwareVersions['Compiler'].installedDrive+":\\"+softwareVersions['Compiler'].libpaths[x]+"\" ";
|
||||
}
|
||||
f.WriteLine("LIBPATH="+path_line);
|
||||
path_line = '';
|
||||
var path_line_rc = '';
|
||||
for (x in softwareVersions['Compiler'].incpaths) {
|
||||
path_line += "/I \""+softwareVersions['Compiler'].installedDrive+":\\"+softwareVersions['Compiler'].incpaths[x]+"\" ";
|
||||
path_line_rc += "/i \""+softwareVersions['Compiler'].installedDrive+":\\"+softwareVersions['Compiler'].incpaths[x]+"\" ";
|
||||
}
|
||||
f.WriteLine("INCFLAGS="+path_line);
|
||||
f.WriteLine("VERSION="+anopeVersion);
|
||||
f.WriteLine("PROGRAM=anope.exe");
|
||||
f.WriteLine("DATDEST=data");
|
||||
f.WriteLine("CC=cl");
|
||||
f.WriteLine("RC=rc");
|
||||
f.WriteLine("MAKE=nmake -f Makefile.win32");
|
||||
f.WriteLine("BASE_CFLAGS=$(VC6) /O2 /MD $(INCFLAGS)");
|
||||
f.WriteLine("RC_FLAGS="+path_line_rc);
|
||||
f.WriteLine("LIBS=wsock32.lib advapi32.lib /NODEFAULTLIB:libcmtd.lib");
|
||||
f.WriteLine("LFLAGS=$(LIBPATH)");
|
||||
|
||||
for (x in installerQuestions) {
|
||||
var thisQuestion = installerQuestions[x];
|
||||
thisQuestion.commit_config();
|
||||
}
|
||||
|
||||
f.WriteLine("MORE_CFLAGS = /I\"../include\"");
|
||||
f.WriteLine("CFLAGS = /nologo $(CDEFS) $(BASE_CFLAGS) $(MORE_CFLAGS)");
|
||||
f.close();
|
||||
|
||||
generateRC();
|
||||
|
||||
WScript.Echo("\nConfiguration Complete!");
|
||||
WScript.Echo("-----------------------\n");
|
||||
WScript.Echo("Anope has been configured to your system. To compile, simply type:");
|
||||
WScript.Echo("nmake -f Makefile.win32\n");
|
||||
WScript.Echo("If you update Anope, you should run this script again to ensure\nall available options are set.\n");
|
||||
|
||||
}
|
||||
// Fin.
|
||||
|
||||
// -----------------------------------------------------------------
|
||||
|
||||
// Functions
|
||||
|
||||
function FindAnopeVersion() {
|
||||
if (!fso.FileExists('version.log')) {
|
||||
anopeVersion = 'Unknown';
|
||||
return;
|
||||
}
|
||||
|
||||
var versionLog = fso.OpenTextFile("version.log");
|
||||
while (!versionLog.atEndOfStream) {
|
||||
var versionLine = versionLog.readline();
|
||||
var thisMatch = versionLine.replace('\n', '');
|
||||
while (thisMatch.match(/\"/g)) {
|
||||
thisMatch = thisMatch.replace('"', '');
|
||||
}
|
||||
if (!fso.FolderExists(answer)) {
|
||||
if (fso.FileExists(answer)) {
|
||||
WScript.Echo(answer + " exists, but is not a directory!\n");
|
||||
return false;
|
||||
}
|
||||
WScript.Echo(answer + " does not exist. Create it ([yes]/no)?\n");
|
||||
var inputValue = InstallerInput().toLowerCase();
|
||||
if (!inputValue) {
|
||||
inputValue = 'yes';
|
||||
}
|
||||
if (inputValue != 'no') {
|
||||
fso.CreateFolder(answer);
|
||||
}
|
||||
}
|
||||
else if (fso.FileExists(answer + '\\include\\services.h')) {
|
||||
WScript.Echo("You cannot use the Anope source directory as a target directory.\n");
|
||||
return false;
|
||||
}
|
||||
installerResponses['Install Directory'] = answer.replace(/\\/g, '/');
|
||||
return true;
|
||||
},
|
||||
'cmake_argument' : function() {
|
||||
return '-DINSTDIR:STRING=' + installerResponses['Install Directory'];
|
||||
versionLine = thisMatch;
|
||||
if (versionLine.match(/VERSION_MAJOR=/g)) {
|
||||
vMaj = versionLine.replace('VERSION_MAJOR=', '');
|
||||
continue;
|
||||
}
|
||||
if (versionLine.match(/VERSION_MINOR=/g)) {
|
||||
vMin = versionLine.replace('VERSION_MINOR=', '');
|
||||
continue;
|
||||
}
|
||||
if (versionLine.match(/VERSION_PATCH=/g)) {
|
||||
vPat = versionLine.replace('VERSION_PATCH=', '');
|
||||
continue;
|
||||
}
|
||||
if (versionLine.match(/VERSION_EXTRA=/g)) {
|
||||
vExtra = versionLine.replace('VERSION_EXTRA=', '');
|
||||
continue;
|
||||
}
|
||||
if (versionLine.match(/VERSION_BUILD=/g)) {
|
||||
vBuild = versionLine.replace('VERSION_BUILD=', '');
|
||||
continue;
|
||||
}
|
||||
}
|
||||
versionLog.close();
|
||||
anopeVersion = vMaj+"."+vMin+"."+vPat+"."+vBuild+vExtra;
|
||||
return;
|
||||
}
|
||||
|
||||
function InstallerInput() {
|
||||
var input = WScript.StdIn.Readline();
|
||||
return input;
|
||||
}
|
||||
|
||||
function findMySQL() {
|
||||
WScript.Echo("\nLooking for MySQL...\n");
|
||||
var installedDrive = "";
|
||||
for (x in mysqlVersions) {
|
||||
var thisSQLVer = mysqlVersions[x];
|
||||
WScript.Echo("Looking for: "+thisSQLVer.name+"...");
|
||||
if (!(installedDrive = findFile("libmysql.lib", thisSQLVer.libpaths))) {
|
||||
WScript.Echo("ERROR: Cannot find libmysql.lib - This version is probably not installed...\n");
|
||||
continue;
|
||||
}
|
||||
if (!findFile("mysql.h", thisSQLVer.incpaths)) {
|
||||
WScript.Echo("ERROR: Cannot find mysql.h - Half of this version of MySQL is installed (strange)...\n");
|
||||
continue;
|
||||
}
|
||||
WScript.Echo("SUCCESS: "+thisSQLVer.name+" is installed, and is complete!\n");
|
||||
thisSQLVer.installedDrive = installedDrive;
|
||||
softwareVersions.MySQLDB = thisSQLVer;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function findCompiler() {
|
||||
WScript.Echo("\nLooking for a suitable compiler...\n");
|
||||
var noPSDK = false;
|
||||
var installedDrive = "";
|
||||
for (x in buildPackages) {
|
||||
var thisPack = buildPackages[x];
|
||||
WScript.Echo("Looking for: "+thisPack.name+"...");
|
||||
if (!(installedDrive = findFile("MSVCRT.lib", thisPack.libpaths))) {
|
||||
WScript.Echo("ERROR: Cannot find MSVCRT.lib - This version is probably not installed...\n");
|
||||
continue;
|
||||
}
|
||||
if (!findFile("wsock32.lib", thisPack.libpaths)) {
|
||||
WScript.Echo("ERROR: Cannot find wsock32.lib - Probably missing PlatformSDK...\n");
|
||||
noPSDK = true;
|
||||
continue;
|
||||
}
|
||||
if (!findFile("advapi32.lib", thisPack.libpaths)) {
|
||||
WScript.Echo("ERROR: Cannot find advapi32.lib - Probably missing PlatformSDK...\n");
|
||||
noPSDK = true;
|
||||
continue;
|
||||
}
|
||||
if (!findFile("stdio.h", thisPack.incpaths)) {
|
||||
WScript.Echo("ERROR: Cannot find stdio.h - Missing core header files...\n");
|
||||
continue;
|
||||
}
|
||||
if (!findFile("windows.h", thisPack.incpaths)) {
|
||||
WScript.Echo("ERROR: Cannot find windows.h - Probably missing PlatformSDK headers...\n");
|
||||
noPSDK = true;
|
||||
continue;
|
||||
}
|
||||
if (!findFile("nmake.exe", thisPack.nmake)) {
|
||||
WScript.Echo("ERROR: Cannot find a copy of nmake.exe...\n");
|
||||
WScript.Echo("In order to compile Anope, you need a working copy of nmake.exe on your system.");
|
||||
WScript.Echo("A freely available copy can be downloaded from the url below.");
|
||||
WScript.Echo("nmake.exe is also available in the PlatformSDK which can be freely downloaded from Microsoft.\n");
|
||||
WScript.Echo("nmake.exe:\nhttp://download.microsoft.com/download/vc15/patch/1.52/w95/en-us/nmake15.exe\n");
|
||||
break;
|
||||
}
|
||||
WScript.Echo("SUCCESS: "+thisPack.name+" was found, and is complete!");
|
||||
thisPack.installedDrive = installedDrive;
|
||||
softwareVersions.Compiler = thisPack;
|
||||
return true;
|
||||
}
|
||||
if (noPSDK) {
|
||||
WScript.Echo("Some of the build tools were detected on your computer, but the essential PlatformSDK components were missing.");
|
||||
WScript.Echo("You will need to download the PlatformSDK from the URL below, ensuring that the Core Windows files, and Debugging Tools are installed.");
|
||||
WScript.Echo("For more details on installing the PlatformSDK, visit http://wiki.anope.org/index.php/Windows:1.8#Compiling\n");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function findFile(fileName, arrayOfPaths) {
|
||||
for (z in arrayOfPaths) {
|
||||
var thisPath = arrayOfPaths[z];
|
||||
for (y in drivesToCheck) {
|
||||
var thisDrive = drivesToCheck[y];
|
||||
if (fso.FileExists(thisDrive+":\\"+thisPath+"\\"+fileName)) {
|
||||
return thisDrive;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
'question' : [
|
||||
'Would you like to build using NMake instead of using Visual Studio?',
|
||||
'NOTE: If you decide to use NMake, you must be in an environment where',
|
||||
' NMake can function, such as the Visual Studio command line.',
|
||||
' If you say yes to this while not in an environment that can run',
|
||||
' NMake, it can cause the CMake configuration to enter an endless',
|
||||
' loop.'
|
||||
],
|
||||
'short' : 'Use NMake?',
|
||||
'options' : [
|
||||
'yes',
|
||||
'no'
|
||||
],
|
||||
'default_answer' : 'no',
|
||||
'store_answer' : function(answer) {
|
||||
installerResponses['Use NMake'] = answer;
|
||||
return true;
|
||||
},
|
||||
'cmake_argument' : function() {
|
||||
if (installerResponses['Use NMake'] == 'yes') return '-G"NMake Makefiles"';
|
||||
else return '';
|
||||
}
|
||||
},
|
||||
{
|
||||
'question' : [
|
||||
'Would you like to build a debug version of Anope?'
|
||||
],
|
||||
'short' : 'Build debug?',
|
||||
'options' : [
|
||||
'yes',
|
||||
'no'
|
||||
],
|
||||
'default_answer' : 'no',
|
||||
'store_answer' : function(answer) {
|
||||
installerResponses['Debug'] = answer;
|
||||
return true;
|
||||
},
|
||||
'cmake_argument' : function() {
|
||||
if (installerResponses['Debug'] == 'msvc') return '';
|
||||
else if (installerResponses['Debug'] == 'yes') return '-DCMAKE_BUILD_TYPE:STRING=DEBUG';
|
||||
else return '-DCMAKE_BUILD_TYPE:STRING=RELEASE';
|
||||
}
|
||||
},
|
||||
{
|
||||
'question' : [
|
||||
'Are you using Visual Studio 2008? If you are, you need to answer yes',
|
||||
'to this question, otherwise CMake will not function properly.'
|
||||
],
|
||||
'short' : 'Using Visual Studio 2008?',
|
||||
'options' : [
|
||||
'yes',
|
||||
'no'
|
||||
],
|
||||
'default_answer' : 'no',
|
||||
'store_answer' : function(answer) {
|
||||
installerResponses['Visual Studio 2008'] = answer;
|
||||
return true;
|
||||
},
|
||||
'cmake_argument' : function() {
|
||||
if (installerResponses['Visual Studio 2008'] == 'yes') return '-G"Visual Studio 9 2008"';
|
||||
else return '';
|
||||
}
|
||||
},
|
||||
];
|
||||
|
||||
var bannerReplacements = [
|
||||
{
|
||||
'findtext' : /CURVER/g,
|
||||
'replacement' : function() { FindAnopeVersion(); return anopeVersion; }
|
||||
},
|
||||
{
|
||||
'findtext' : / For more options type SOURCE_DIR\/Config --help/g,
|
||||
'replacement' : function() { return ''; }
|
||||
}
|
||||
];
|
||||
|
||||
var ScriptPath = WScript.ScriptFullName.substr(0, WScript.ScriptFullName.length - WScript.ScriptName.length);
|
||||
|
||||
var fso = WScript.CreateObject('Scripting.FileSystemObject');
|
||||
var x, y, z;
|
||||
|
||||
if (fso.FileExists(ScriptPath + '.BANNER')) {
|
||||
var bannerStream = fso.OpenTextFile(ScriptPath + '.BANNER');
|
||||
var bannerText = bannerStream.ReadAll();
|
||||
bannerStream.close();
|
||||
|
||||
for (x in bannerReplacements) {
|
||||
var thisReplacement = bannerReplacements[x];
|
||||
bannerText = bannerText.replace(thisReplacement['findtext'], thisReplacement['replacement']);
|
||||
}
|
||||
|
||||
WScript.Echo(bannerText + "\n");
|
||||
}
|
||||
else {
|
||||
WScript.Echo("ERROR: Cannot find banner file!\n");
|
||||
}
|
||||
|
||||
WScript.Echo('Press Enter to Begin...');
|
||||
InstallerInput();
|
||||
WScript.Echo('');
|
||||
|
||||
for (x in installerQuestions) {
|
||||
var thisQuestion = installerQuestions[x];
|
||||
var validResponse = false;
|
||||
var validOpts = new Array();
|
||||
if (thisQuestion.short == 'Build debug?' && installerResponses['Use NMake'] == 'no') {
|
||||
installerResponses['Debug'] = 'msvc';
|
||||
continue;
|
||||
}
|
||||
if (thisQuestion.short == 'Using Visual Studio 2008?' && installerResponses['Debug'] != 'msvc') {
|
||||
installerResponses['Visual Studio 2008'] = 'no';
|
||||
continue;
|
||||
}
|
||||
while (!validResponse) {
|
||||
for (y in thisQuestion.question) {
|
||||
var qLine = thisQuestion.question[y];
|
||||
WScript.Echo(qLine);
|
||||
}
|
||||
WScript.Echo('');
|
||||
var choiceLine = '';
|
||||
if (thisQuestion.options) {
|
||||
for (y in thisQuestion.options) {
|
||||
choiceLine += thisQuestion.options[y] + ', ';
|
||||
validOpts[thisQuestion.options[y]] = true;
|
||||
}
|
||||
choiceLine = choiceLine.substring(0, choiceLine.length - 2);
|
||||
WScript.Echo('Available Options: ' + choiceLine);
|
||||
}
|
||||
if (thisQuestion.default_answer) WScript.Echo('Default Answer: ' + thisQuestion.default_answer + "\n");
|
||||
WScript.Echo(thisQuestion.short);
|
||||
var inputValue = InstallerInput().toLowerCase();
|
||||
if (!inputValue) {
|
||||
inputValue = thisQuestion.default_answer;
|
||||
}
|
||||
if (choiceLine && !validOpts[inputValue]) {
|
||||
WScript.Echo("ERROR: Invalid option '" + inputValue + "'\n");
|
||||
}
|
||||
else if (thisQuestion.store_answer(inputValue)) {
|
||||
validResponse = true;
|
||||
}
|
||||
}
|
||||
WScript.Echo('');
|
||||
}
|
||||
|
||||
WScript.Echo("\nAnope will be compiled with the following options:\n");
|
||||
for (x in installerResponses) {
|
||||
var thisResponse = installerResponses[x];
|
||||
WScript.Echo("\t" + x + ":\t\t[" + thisResponse.toUpperCase() + "]");
|
||||
}
|
||||
WScript.Echo("\tAnope Version:\t\t\t" + anopeVersion);
|
||||
WScript.Echo("\nTo continue, please press Enter...");
|
||||
InstallerInput();
|
||||
|
||||
var cmake = 'cmake';
|
||||
for (x in installerQuestions) {
|
||||
var thisQuestion = installerQuestions[x];
|
||||
cmake += ' ' + thisQuestion.cmake_argument();
|
||||
}
|
||||
cmake += ' "' + ScriptPath + '"';
|
||||
WScript.Echo(cmake + "\n");
|
||||
|
||||
var shell = WScript.CreateObject('WScript.Shell');
|
||||
var cmake_shell = shell.exec('%comspec% /c ' + cmake);
|
||||
while (!cmake_shell.StdOut.AtEndOfStream) {
|
||||
var strLine = cmake_shell.StdOut.ReadLine();
|
||||
WScript.Echo(strLine);
|
||||
}
|
||||
|
||||
if (installerResponses['Use NMake'] == 'yes') WScript.Echo("\nTo compile Anope, run 'nmake'. To install, run 'nmake install'.\n");
|
||||
else WScript.Echo("\nTo compile Anope, open Anope.sln and build the solution. To install,\ndo a build on the INSTALL project.\n");
|
||||
WScript.Echo("If you update Anope, you should run this script again to ensure\nall available options are set.\n");
|
||||
|
||||
// -----------------------------------------------------------------
|
||||
|
||||
// Functions
|
||||
|
||||
function FindAnopeVersion() {
|
||||
if (!fso.FileExists(ScriptPath + 'version.log')) {
|
||||
anopeVersion = 'Unknown';
|
||||
return;
|
||||
}
|
||||
|
||||
var versionLog = fso.OpenTextFile(ScriptPath + 'version.log');
|
||||
while (!versionLog.atEndOfStream) {
|
||||
var versionLine = versionLog.readline();
|
||||
var thisMatch = versionLine.replace('\n', '');
|
||||
while (thisMatch.match(/\"/g)) {
|
||||
thisMatch = thisMatch.replace('"', '');
|
||||
}
|
||||
versionLine = thisMatch;
|
||||
if (versionLine.match(/VERSION_MAJOR=/g)) {
|
||||
vMaj = versionLine.replace('VERSION_MAJOR=', '');
|
||||
continue;
|
||||
}
|
||||
if (versionLine.match(/VERSION_MINOR=/g)) {
|
||||
vMin = versionLine.replace('VERSION_MINOR=', '');
|
||||
continue;
|
||||
}
|
||||
if (versionLine.match(/VERSION_PATCH=/g)) {
|
||||
vPat = versionLine.replace('VERSION_PATCH=', '');
|
||||
continue;
|
||||
}
|
||||
if (versionLine.match(/VERSION_EXTRA=/g)) {
|
||||
vExtra = versionLine.replace('VERSION_EXTRA=', '');
|
||||
continue;
|
||||
}
|
||||
if (versionLine.match(/VERSION_BUILD=/g)) {
|
||||
vBuild = versionLine.replace('VERSION_BUILD=', '');
|
||||
continue;
|
||||
}
|
||||
}
|
||||
versionLog.close();
|
||||
anopeVersion = vMaj + '.' + vMin + '.' + vPat + '.' + vBuild + vExtra;
|
||||
return;
|
||||
}
|
||||
|
||||
function InstallerInput() {
|
||||
var input = WScript.StdIn.Readline();
|
||||
return input;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function generateRC() {
|
||||
var version_matches = [
|
||||
{
|
||||
'find' : /VERSION_COMMA/g,
|
||||
'replacement' : vMaj+","+vMin+","+vPat+","+vBuild
|
||||
},
|
||||
|
||||
{
|
||||
'find' : /VERSION_FULL/g,
|
||||
'replacement' : anopeVersion
|
||||
},
|
||||
|
||||
{
|
||||
'find' : /VERSION_DOTTED/g,
|
||||
'replacement' : vMaj+"."+vMin+"."+vPat+"."+vBuild
|
||||
}
|
||||
];
|
||||
|
||||
var template = fso.OpenTextFile("src/win32.rc.template", 1);
|
||||
var output = fso.OpenTextFile("src/win32.rc", 2, true);
|
||||
if (!template) {
|
||||
WScript.Echo("ERROR: Unable to generate win32.rc file - Couldn't open source file..");
|
||||
}
|
||||
if (!output) {
|
||||
WScript.Echo("ERROR: Unable to generate win32.rc file - Couldn't open output file..");
|
||||
}
|
||||
var templateText = template.ReadAll();
|
||||
template.close();
|
||||
|
||||
for (x in version_matches) {
|
||||
var thisVerStr = version_matches[x];
|
||||
while (templateText.match(thisVerStr.find)) {
|
||||
templateText = templateText.replace(thisVerStr.find, thisVerStr.replacement);
|
||||
}
|
||||
}
|
||||
|
||||
output.WriteLine(templateText);
|
||||
output.close();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,115 +0,0 @@
|
||||
# Set the source file for langcomp to use C++ as well as set it's compile flags
|
||||
set_source_files_properties(langcomp.c PROPERTIES LANGUAGE CXX COMPILE_FLAGS "${CXXFLAGS}")
|
||||
# Generate langcomp and set it's linker flags
|
||||
add_executable(langcomp langcomp.c)
|
||||
set_target_properties(langcomp PROPERTIES LINKER_LANGUAGE CXX LINK_FLAGS "${LDFLAGS}")
|
||||
# Get the location of the binary to use later
|
||||
get_target_property(langcomp_BINARY langcomp LOCATION)
|
||||
# Add the executable to the list of files for CPack to ignore
|
||||
file(RELATIVE_PATH langcomp_BINARY_RELATIVE ${Anope_BINARY_DIR} ${langcomp_BINARY})
|
||||
add_to_cpack_ignored_files("${langcomp_BINARY_RELATIVE}$" TRUE)
|
||||
|
||||
# Determine if langtool should be built
|
||||
if(MSVC)
|
||||
set(BUILD_LANGTOOL TRUE)
|
||||
else(MSVC)
|
||||
if(NOT GREP OR NOT PERL)
|
||||
set(BUILD_LANGTOOL TRUE)
|
||||
else(NOT GREP OR NOT PERL)
|
||||
set(BUILD_LANGTOOL FALSE)
|
||||
endif(NOT GREP OR NOT PERL)
|
||||
endif(MSVC)
|
||||
|
||||
# If grep or perl don't exist on the system, build langtool to generate index and language.h
|
||||
if(BUILD_LANGTOOL)
|
||||
# Set the source file for langtool to use C++ as well as set it's compile flags
|
||||
set_source_files_properties(langtool.c PROPERTIES LANGUAGE CXX COMPILE_FLAGS "${CXXFLAGS}")
|
||||
# Generate langtool and set it's linker flags
|
||||
add_executable(langtool langtool.c)
|
||||
set_target_properties(langtool PROPERTIES LINKER_LANGUAGE CXX LINK_FLAGS "${LDFLAGS}")
|
||||
# Get the location of the binary to use later)
|
||||
get_target_property(langtool_BINARY langtool LOCATION)
|
||||
# Add the executable to the list of files for CPack to ignore
|
||||
file(RELATIVE_PATH langtool_BINARY_RELATIVE ${Anope_BINARY_DIR} ${langtool_BINARY})
|
||||
add_to_cpack_ignored_files("${langtool_BINARY_RELATIVE}$" TRUE)
|
||||
endif(BUILD_LANGTOOL)
|
||||
|
||||
# If grep exists (and we aren't using Visual Studio, it hates this), use it to generate the index file
|
||||
if(NOT MSVC AND GREP)
|
||||
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/index
|
||||
COMMAND ${GREP} '^[A-Z]' ${CMAKE_CURRENT_SOURCE_DIR}/en_us.l > ${CMAKE_CURRENT_BINARY_DIR}/index
|
||||
MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/en_us.l
|
||||
)
|
||||
# Otherwise, use langtool to generate the index file
|
||||
else(NOT MSVC AND GREP)
|
||||
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/index
|
||||
COMMAND ${langtool_BINARY} index ${CMAKE_CURRENT_SOURCE_DIR}/en_us.l ${CMAKE_CURRENT_BINARY_DIR}/index
|
||||
MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/en_us.l DEPENDS langtool
|
||||
)
|
||||
endif(NOT MSVC AND GREP)
|
||||
# Add the index file to the list of files for CPack to ignore
|
||||
file(RELATIVE_PATH index_RELATIVE ${Anope_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/index)
|
||||
add_to_cpack_ignored_files("${index_RELATIVE}$")
|
||||
|
||||
# Find all the *.l files within the current source directory, and sort the list
|
||||
file(GLOB LANG_SRCS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.l")
|
||||
if(CMAKE244_OR_BETTER)
|
||||
list(SORT LANG_SRCS)
|
||||
endif(CMAKE244_OR_BETTER)
|
||||
|
||||
# Iterate through the language files
|
||||
foreach(LANG_L ${LANG_SRCS})
|
||||
# Convert the language file's extension to have no extension
|
||||
STRING(REGEX REPLACE "\\.l$" "" LANG ${LANG_L})
|
||||
# Add the language file to the list of compiled language files
|
||||
append_to_list(LANGS ${CMAKE_CURRENT_BINARY_DIR}/${LANG})
|
||||
# Generate a compiled language file using langcomp, as well as having a dependency on the index file being generated
|
||||
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${LANG}
|
||||
COMMAND ${langcomp_BINARY} ${CMAKE_CURRENT_SOURCE_DIR}/${LANG_L} ${CMAKE_CURRENT_BINARY_DIR}/${LANG}
|
||||
MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/${LANG_L} DEPENDS langcomp ${CMAKE_CURRENT_BINARY_DIR}/index
|
||||
)
|
||||
# Add the language file to the list of files for CPack to ignore
|
||||
file(RELATIVE_PATH LANG_RELATIVE ${Anope_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/${LANG})
|
||||
add_to_cpack_ignored_files("${LANG_RELATIVE}$")
|
||||
endforeach(LANG_L)
|
||||
|
||||
# If perl exists (and we aren't using Visual Studio, it hates this), use it to generate language.h
|
||||
if(NOT MSVC AND PERL)
|
||||
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/language.h
|
||||
COMMAND ${PERL} -e < ${CMAKE_CURRENT_BINARY_DIR}/index > ${CMAKE_CURRENT_BINARY_DIR}/language.h 'print STDERR \"Generating language.h... \"\; $$i=0\; while \(<>\) { chop\; printf \"\#define %-32s %d\\n\", $$_, $$i++\; } print \"\\n\#define NUM_STRINGS $$i\\n\"\; print STDERR \"$$i strings\\n\"\;'
|
||||
MAIN_DEPENDENCY ${CMAKE_CURRENT_BINARY_DIR}/index
|
||||
)
|
||||
# Otherwise, use langtool to generate language.h
|
||||
else(NOT MSVC AND PERL)
|
||||
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/language.h
|
||||
COMMAND ${langtool_BINARY} language.h ${CMAKE_CURRENT_BINARY_DIR}/index ${CMAKE_CURRENT_BINARY_DIR}/language.h
|
||||
MAIN_DEPENDENCY ${CMAKE_CURRENT_BINARY_DIR}/index DEPENDS langtool
|
||||
)
|
||||
endif(NOT MSVC AND PERL)
|
||||
# Add language.h to the list of files for CPack to ignore
|
||||
add_to_cpack_ignored_files("language.h$" TRUE)
|
||||
|
||||
# Add a custom target to depend on the language files and language.h
|
||||
add_custom_target(language DEPENDS ${LANGS} ${CMAKE_CURRENT_BINARY_DIR}/language.h)
|
||||
|
||||
# If RUNGROUP was set, make the permissions be to have owner read/write as well as group read/write
|
||||
if(RUNGROUP)
|
||||
set(PERMS OWNER_READ OWNER_WRITE GROUP_READ GROUP_WRITE)
|
||||
# Otherwise, only make the permissions be owner read/write
|
||||
else(RUNGROUP)
|
||||
set(PERMS OWNER_READ OWNER_WRITE)
|
||||
endif(RUNGROUP)
|
||||
# Set the language files to be installed to the languages directory under the data directory
|
||||
install(FILES ${LANGS}
|
||||
DESTINATION data/languages
|
||||
PERMISSIONS ${PERMS}
|
||||
)
|
||||
|
||||
# On non-Windows platforms, if RUNGROUP is set, change the permissions of the languages directory
|
||||
if(NOT WIN32)
|
||||
if(RUNGROUP)
|
||||
install(CODE "execute_process(COMMAND ${CHMOD} 2770 \"\${CMAKE_INSTALL_PREFIX}/data/languages\")")
|
||||
else(RUNGROUP)
|
||||
install(CODE "execute_process(COMMAND ${CHMOD} 0700 \"\${CMAKE_INSTALL_PREFIX}/data/languages\")")
|
||||
endif(RUNGROUP)
|
||||
endif(NOT WIN32)
|
||||
+37
-35
@@ -1,13 +1,13 @@
|
||||
# Makefile for language module
|
||||
|
||||
MAKEARGS = 'CFLAGS=${CFLAGS}' 'CC=${CC}' 'ANOPELIBS=${ANOPELIBS}' \
|
||||
'LDFLAGS=${LDFLAGS}' 'INSTDIR=${INSTDIR}' 'INSTALL=${INSTALL}' \
|
||||
'LDFLAGS=${LDFLAGS}' 'BINDEST=${BINDEST}' 'INSTALL=${INSTALL}' \
|
||||
'INCLUDEDIR=${INCLUDEDIR}' 'RM=${RM}' 'CP=${CP}' \
|
||||
'TOUCH=${TOUCH}' 'SHELL=${SHELL}' \
|
||||
'RUNGROUP=${RUNGROUP}' 'MAKEBIN=${MAKEBIN}'
|
||||
'TOUCH=${TOUCH}' 'SHELL=${SHELL}' 'DATDEST=${DATDEST}' \
|
||||
'RUNGROUP=${RUNGROUP}' 'USE_MODULES=${USE_MODULES}'
|
||||
|
||||
LANGOBJS = cat de en_us es fr gr hun it nl pl pt ru tr
|
||||
LANGSRCS = cat.l de.l en_us.l es.l fr.l gr.l hun.l it.l nl.l pl.l pt.l ru.l tr.l
|
||||
LANGOBJS = cat de en_us es fr gr hun it ja_utf8 nl pl pt ru tr
|
||||
LANGSRCS = cat.l de.l en_us.l es.l fr.l gr.l hun.l it.l ja_utf8.l nl.l pl.l pt.l ru.l tr.l
|
||||
|
||||
LANGCOMP = ./langcomp
|
||||
#LANGCOMP = ./langcomp -w
|
||||
@@ -18,24 +18,24 @@ all: $(LANGOBJS)
|
||||
distclean: clean spotless
|
||||
|
||||
install: all
|
||||
test -d $(INSTDIR)/data/languages || mkdir $(INSTDIR)/data/languages
|
||||
test -d $(DATDEST)/languages || mkdir $(DATDEST)/languages
|
||||
@if [ "$(RUNGROUP)" ] ; then \
|
||||
echo chgrp -R $(RUNGROUP) $(INSTDIR)/data/languages ; \
|
||||
chgrp -R $(RUNGROUP) $(INSTDIR)/data/languages ; \
|
||||
echo chmod -R g+rw $(INSTDIR)/data/languages ; \
|
||||
chmod -R g+rw $(INSTDIR)/data/languages ; \
|
||||
$(CP) $(LANGOBJS) $(INSTDIR)/data/languages ; \
|
||||
echo chgrp -R $(RUNGROUP) $(INSTDIR)/data/languages ; \
|
||||
chgrp -R $(RUNGROUP) $(INSTDIR)/data/languages/* ; \
|
||||
echo chmod -R g+rw $(INSTDIR)/data/languages/* ; \
|
||||
chmod -R g+rw $(INSTDIR)/data/languages/* ; \
|
||||
echo chgrp -R $(RUNGROUP) $(DATDEST)/languages ; \
|
||||
chgrp -R $(RUNGROUP) $(DATDEST)/languages ; \
|
||||
echo chmod -R g+rw $(DATDEST)/languages ; \
|
||||
chmod -R g+rw $(DATDEST)/languages ; \
|
||||
$(CP) $(LANGOBJS) $(DATDEST)/languages ; \
|
||||
echo chgrp -R $(RUNGROUP) $(DATDEST)/languages ; \
|
||||
chgrp -R $(RUNGROUP) $(DATDEST)/languages/* ; \
|
||||
echo chmod -R g+rw $(DATDEST)/languages/* ; \
|
||||
chmod -R g+rw $(DATDEST)/languages/* ; \
|
||||
fi
|
||||
@if [ ! "$(RUNGROUP)" ] ; then \
|
||||
chmod 700 $(INSTDIR)/data/languages/ ; \
|
||||
$(CP) $(LANGOBJS) $(INSTDIR)/data/languages ; \
|
||||
chmod 600 $(INSTDIR)/data/languages/* ; \
|
||||
chmod 700 $(DATDEST)/languages/ ; \
|
||||
$(CP) $(LANGOBJS) $(DATDEST)/languages ; \
|
||||
chmod 600 $(DATDEST)/languages/* ; \
|
||||
fi
|
||||
|
||||
|
||||
clean:
|
||||
rm -f $(LANGOBJS) langcomp language.h
|
||||
|
||||
@@ -44,39 +44,41 @@ spotless: clean
|
||||
|
||||
|
||||
cat: cat.l langcomp index
|
||||
@./langcomp $@.l $@
|
||||
./langcomp $@.l
|
||||
de: de.l langcomp index
|
||||
@./langcomp $@.l $@
|
||||
./langcomp $@.l
|
||||
en_us: en_us.l langcomp index
|
||||
@./langcomp $@.l $@
|
||||
./langcomp $@.l
|
||||
es: es.l langcomp index
|
||||
@./langcomp $@.l $@
|
||||
./langcomp $@.l
|
||||
fr: fr.l langcomp index
|
||||
@./langcomp $@.l $@
|
||||
./langcomp $@.l
|
||||
gr: gr.l langcomp index
|
||||
@./langcomp $@.l $@
|
||||
./langcomp $@.l
|
||||
hun: hun.l langcomp index
|
||||
@./langcomp $@.l $@
|
||||
./langcomp $@.l
|
||||
it: it.l langcomp index
|
||||
@./langcomp $@.l $@
|
||||
./langcomp $@.l
|
||||
ja_utf8: ja_utf8.l langcomp index
|
||||
./langcomp $@.l
|
||||
nl: nl.l langcomp index
|
||||
@./langcomp $@.l $@
|
||||
./langcomp $@.l
|
||||
pl: pl.l langcomp index
|
||||
@./langcomp $@.l $@
|
||||
./langcomp $@.l
|
||||
pt: pt.l langcomp index
|
||||
@./langcomp $@.l $@
|
||||
./langcomp $@.l
|
||||
ru: ru.l langcomp index
|
||||
@./langcomp $@.l $@
|
||||
./langcomp $@.l
|
||||
tr: tr.l langcomp index
|
||||
@./langcomp $@.l $@
|
||||
./langcomp $@.l
|
||||
|
||||
langcomp: langcomp.c
|
||||
@$(MAKEBIN) $(CC) $(CFLAGS) langcomp.c -o $@
|
||||
$(CC) $(CFLAGS) langcomp.c -o $@
|
||||
|
||||
|
||||
language.h: index Makefile
|
||||
@perl -e <index >$@ 'print STDERR "Generating language.h... "; $$i=0; while (<>) { chop; printf "#define %-32s %d\n", $$_, $$i++; } print "\n#define NUM_STRINGS $$i\n"; print STDERR "$$i strings\n";'
|
||||
@cp language.h ../include
|
||||
cp language.h ../include
|
||||
|
||||
index: en_us.l
|
||||
@grep '^[A-Z]' en_us.l >index
|
||||
grep '^[A-Z]' en_us.l >index
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
# Makefile for language module
|
||||
|
||||
include ../Makefile.inc.win32
|
||||
|
||||
|
||||
LANGOBJS = cat de en_us es fr hun gr nl pl pt tr it ja_utf8 ru
|
||||
LANGSRCS = cat de en_us.l es fr.l hun.l gr.l nl.l pl.l pt.l tr.l it.l ja_utf8.l ru.l
|
||||
|
||||
LANGCOMP = ./langcomp
|
||||
#LANGCOMP = ./langcomp -w
|
||||
|
||||
|
||||
all: $(LANGOBJS)
|
||||
|
||||
|
||||
install: all
|
||||
-copy cat ..\$(DATDEST)\languages
|
||||
-copy en_us ..\$(DATDEST)\languages
|
||||
-copy de ..\$(DATDEST)\languages
|
||||
-copy es ..\$(DATDEST)\languages
|
||||
-copy fr ..\$(DATDEST)\languages
|
||||
-copy hun ..\$(DATDEST)\languages
|
||||
-copy gr ..\$(DATDEST)\languages
|
||||
-copy nl ..\$(DATDEST)\languages
|
||||
-copy pl ..\$(DATDEST)\languages
|
||||
-copy pt ..\$(DATDEST)\languages
|
||||
-copy tr ..\$(DATDEST)\languages
|
||||
-copy it ..\$(DATDEST)\languages
|
||||
-copy ja_utf8 ..\$(DATDEST)\languages
|
||||
-copy ru ..\$(DATDEST)\languages
|
||||
|
||||
clean:
|
||||
-@erase $(LANGOBJS) langcomp.exe langtool.exe *.obj index
|
||||
|
||||
spotless: clean
|
||||
-@erase language.h
|
||||
|
||||
|
||||
cat: cat.l langtool.exe langcomp.exe index
|
||||
langcomp $@.l
|
||||
de: de.l langtool.exe langcomp.exe index
|
||||
langcomp $@.l
|
||||
en_us: en_us.l langtool.exe langcomp.exe index
|
||||
langcomp $@.l
|
||||
es: es.l langtool.exe langcomp.exe index
|
||||
langcomp $@.l
|
||||
fr: fr.l langtool.exe langcomp.exe index
|
||||
langcomp $@.l
|
||||
hun: hun.l langtool.exe langcomp.exe index
|
||||
langcomp $@.l
|
||||
gr: gr.l langtool.exe langcomp.exe index
|
||||
langcomp $@.l
|
||||
nl: nl.l langtool.exe langcomp.exe index
|
||||
langcomp $@.l
|
||||
pl: pl.l langtool.exe langcomp.exe index
|
||||
langcomp $@.l
|
||||
pt: pt.l langtool.exe langcomp.exe index
|
||||
langcomp $@.l
|
||||
tr: tr.l langtool.exe langcomp.exe index
|
||||
langcomp $@.l
|
||||
it: it.l langtool.exe langcomp.exe index
|
||||
langcomp $@.l
|
||||
ja_utf8: ja_utf8.l langtool.exe langcomp.exe index
|
||||
langcomp $@.l
|
||||
ru: ru.l langtool.exe langcomp.exe index
|
||||
langcomp $@.l
|
||||
|
||||
langtool.exe: langtool.c
|
||||
$(CC) $(CFLAGS) langtool.c -o $@ /link $(LFLAGS)
|
||||
|
||||
langcomp.exe: langcomp.c
|
||||
$(CC) $(CFLAGS) langcomp.c -o $@ /link $(LFLAGS)
|
||||
|
||||
language.h: langtool.exe index
|
||||
langtool language.h
|
||||
|
||||
index: langtool.exe en_us.l
|
||||
langtool index
|
||||
+41
-41
@@ -1,9 +1,9 @@
|
||||
# Catalan Language File.
|
||||
#
|
||||
# (C) 2003-2008 Anope Team
|
||||
# (C) 2003-2014 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Please read COPYING and README for furhter details.
|
||||
# Please read COPYING and README for further details.
|
||||
#
|
||||
# Based on the original code of Epona by Lara.
|
||||
# Based on the original code of Services by Andy Church.
|
||||
@@ -679,7 +679,7 @@ NICK_SASET_HIDE_STATUS_OFF
|
||||
|
||||
# SASET MSG responses
|
||||
NICK_SASET_MSG_SYNTAX
|
||||
SSAET nickname PRIVATE {ON | OFF}
|
||||
SSAET nickname MSG {ON | OFF}
|
||||
NICK_SASET_MSG_ON
|
||||
Services will now reply to %s with messages.
|
||||
NICK_SASET_MSG_OFF
|
||||
@@ -707,7 +707,7 @@ NICK_SASET_LANGUAGE_SYNTAX
|
||||
NICK_SASET_LANGUAGE_UNKNOWN
|
||||
Unknown language number %d. Type %R%s HELP SET LANGUAGE for a list of languages.
|
||||
NICK_SASET_LANGUAGE_CHANGED
|
||||
Language changed to Catalan.
|
||||
Language for %s changed to %s.
|
||||
|
||||
|
||||
# ACCESS responses
|
||||
@@ -1821,6 +1821,10 @@ MEMO_SENT
|
||||
MEMO_MASS_SENT
|
||||
A massmemo has been sent to all registered users.
|
||||
|
||||
# STAFF responses
|
||||
MEMO_STAFF_SYNTAX
|
||||
STAFF memo-text
|
||||
|
||||
# CANCEL responses
|
||||
MEMO_CANCEL_SYNTAX
|
||||
CANCEL {nick | canal}
|
||||
@@ -1887,7 +1891,7 @@ MEMO_SET_UNKNOWN_OPTION
|
||||
|
||||
# SET NOTIFY responses
|
||||
MEMO_SET_NOTIFY_SYNTAX
|
||||
SET NOTIFY {ON | LOGON | NEW | OFF}
|
||||
SET NOTIFY {ON | LOGON | NEW | MAIL | NOMAIL | OFF}
|
||||
MEMO_SET_NOTIFY_ON
|
||||
%s ara et notificara dels teus memos quant et conectis i quant et siguin enviats.
|
||||
MEMO_SET_NOTIFY_LOGON
|
||||
@@ -2949,6 +2953,8 @@ OPER_JUPE_SYNTAX
|
||||
# RAW responses
|
||||
OPER_JUPE_HOST_ERROR
|
||||
Please use a valid server name when juping
|
||||
OPER_JUPE_INVALID_SERVER
|
||||
You can not jupe your services server or your uplink server.
|
||||
|
||||
# RAW responses
|
||||
OPER_RAW_SYNTAX
|
||||
@@ -2968,7 +2974,7 @@ OPER_CANNOT_RESTART
|
||||
|
||||
# LISTIGNORE responses
|
||||
OPER_IGNORE_SYNTAX
|
||||
Syntax: IGNORE {ADD|DEL|LIST|CLEAR} [time] [nick | mask]
|
||||
IGNORE {ADD|DEL|LIST|CLEAR} [time] [nick | mask]
|
||||
OPER_IGNORE_VALID_TIME
|
||||
You have to enter a valid number as time.
|
||||
OPER_IGNORE_TIME_DONE
|
||||
@@ -3060,7 +3066,7 @@ OPER_STAFF_AFORMAT
|
||||
# DefCon Messages
|
||||
|
||||
OPER_DEFCON_SYNTAX
|
||||
Syntax: DEFCON [1|2|3|4|5]
|
||||
DEFCON [1|2|3|4|5]
|
||||
OPER_DEFCON_DENIED
|
||||
This service is temporarly disabled, please try again later
|
||||
OPER_DEFCON_NO_CONF
|
||||
@@ -3281,7 +3287,7 @@ OPER_HELP_DEFCON
|
||||
Syntax: DEFCON [1|2|3|4|5]
|
||||
|
||||
The defcon system can be used to implement a pre-defined
|
||||
set of restrictions to services useful during an attemtped
|
||||
set of restrictions to services useful during an attempted
|
||||
attack on the network.
|
||||
|
||||
OPER_HELP_DEFCON_NO_NEW_CHANNELS
|
||||
@@ -3333,7 +3339,7 @@ NEWS_RANDOM_TEXT
|
||||
[Notícies al Atzar - %s] %s
|
||||
|
||||
NEWS_LOGON_SYNTAX
|
||||
Sintaxis: LOGONNEWS {ADD|DEL|LIST} [text|numero]
|
||||
LOGONNEWS {ADD|DEL|LIST} [text|numero]
|
||||
NEWS_LOGON_LIST_HEADER
|
||||
Notícies d'entrada:
|
||||
NEWS_LOGON_LIST_ENTRY
|
||||
@@ -3342,13 +3348,13 @@ NEWS_LOGON_LIST_ENTRY
|
||||
NEWS_LOGON_LIST_NONE
|
||||
No hi ha notícies de entrada.
|
||||
NEWS_LOGON_ADD_SYNTAX
|
||||
Sintaxis: LOGONNEWS ADD texto
|
||||
LOGONNEWS ADD texto
|
||||
NEWS_LOGON_ADD_FULL
|
||||
La llista de notícies esta plena!
|
||||
NEWS_LOGON_ADDED
|
||||
Noves notícies d'entrada afegida (#%d).
|
||||
NEWS_LOGON_DEL_SYNTAX
|
||||
Sintaxis: LOGONNEWS DEL {numero | ALL}
|
||||
LOGONNEWS DEL {numero | ALL}
|
||||
NEWS_LOGON_DEL_NOT_FOUND
|
||||
Notícia d'entrada #%d no trobada!
|
||||
NEWS_LOGON_DELETED
|
||||
@@ -3385,7 +3391,7 @@ NEWS_OPER_DELETED_ALL
|
||||
Totes les notícies de oper esborrades.
|
||||
|
||||
NEWS_RANDOM_SYNTAX
|
||||
Sintaxis: RANDOMNEWS {ADD|DEL|LIST} [text|numero]
|
||||
RANDOMNEWS {ADD|DEL|LIST} [text|numero]
|
||||
NEWS_RANDOM_LIST_HEADER
|
||||
Notícies al Azar:
|
||||
NEWS_RANDOM_LIST_ENTRY
|
||||
@@ -3394,13 +3400,13 @@ NEWS_RANDOM_LIST_ENTRY
|
||||
NEWS_RANDOM_LIST_NONE
|
||||
No hi ha notícies al azar.
|
||||
NEWS_RANDOM_ADD_SYNTAX
|
||||
Sintaxis: RANDOMNEWS ADD text
|
||||
RANDOMNEWS ADD text
|
||||
NEWS_RANDOM_ADD_FULL
|
||||
La llista de notícies esta plena!
|
||||
NEWS_RANDOM_ADDED
|
||||
Nova noticia a l'atzar afegida (#%d).
|
||||
NEWS_RANDOM_DEL_SYNTAX
|
||||
Sintaxis: RANDOMNEWS DEL {numero | ALL}
|
||||
RANDOMNEWS DEL {numero | ALL}
|
||||
NEWS_RANDOM_DEL_NOT_FOUND
|
||||
Noticia a l'atzar #%d no trobada!
|
||||
NEWS_RANDOM_DELETED
|
||||
@@ -3417,14 +3423,12 @@ NEWS_HELP_LOGON
|
||||
|
||||
Edits or displays the list of logon news messages. When a
|
||||
user connects to the network, these messages will be sent
|
||||
to them. (However, no more than %s messages will be
|
||||
to them. (However, no more than %d messages will be
|
||||
sent in order to avoid flooding the user. If there are
|
||||
more news messages, only the most recent will be sent.)
|
||||
NewsCount can be configured in services.conf.
|
||||
|
||||
LOGONNEWS LIST may be used by any IRC operator to list the
|
||||
current news messages. ADD and DEL may only be used by
|
||||
Services admins.
|
||||
LOGONNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_OPER
|
||||
Syntax: OPERNEWS ADD text
|
||||
@@ -3433,14 +3437,12 @@ NEWS_HELP_OPER
|
||||
|
||||
Edits or displays the list of oper news messages. When a
|
||||
user opers up (with the /OPER command), these messages will
|
||||
be sent to them. (However, no more than %s messages will
|
||||
be sent to them. (However, no more than %d messages will
|
||||
be sent in order to avoid flooding the user. If there are
|
||||
more news messages, only the most recent will be sent.)
|
||||
NewsCount can be configured in services.conf.
|
||||
|
||||
OPERNEWS LIST may be used by any IRC operator to list the
|
||||
current oper news messages. ADD and DEL may only be used by
|
||||
Services admins.
|
||||
OPERNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_RANDOM
|
||||
Sintaxis: RANDOMNEWS ADD text
|
||||
@@ -3451,9 +3453,7 @@ NEWS_HELP_RANDOM
|
||||
Quant un usuari es connecta a la xarxa, un (i nomès un) dels
|
||||
missatges a l'atzar sera escollit i enviat a ells.
|
||||
|
||||
RANDOMNEWS LIST pot ser utilitzat per qualsevol operador
|
||||
d'IRC per llistar la llista de notícies actual. ADD i DEL
|
||||
nomès pot ser utilitzats per administradors de serveis.
|
||||
RANDOMNEWS may only be used by Services admins.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
@@ -4347,7 +4347,7 @@ CHAN_HELP_CMD_GETKEY
|
||||
CHAN_HELP_CMD_INFO
|
||||
INFO Lists information about the named registered channel
|
||||
CHAN_HELP_CMD_INVITE
|
||||
INVITE Tells ChanServ to invite you or a given nick into a channel
|
||||
INVITE Tells ChanServ to invite you into a channel
|
||||
CHAN_HELP_CMD_KICK
|
||||
KICK Kicks a selected nick from a channel
|
||||
CHAN_HELP_CMD_LIST
|
||||
@@ -4632,13 +4632,9 @@ CHAN_HELP_SET_PRIVATE
|
||||
CHAN_HELP_SET_RESTRICTED
|
||||
Sintàxi: SET canal RESTRICTED {ON | OFF}
|
||||
|
||||
Habilita o deshabilita l'opció de accés restringit
|
||||
per a un canal. Quan l' accés restringit està
|
||||
establert, Els usuaris seran inhabilitats de tenir
|
||||
privilegis d'operador de canal. (usuaris amb accés
|
||||
negatiu i, si seguretat de ops està establerta,
|
||||
usuaris no a la llista de accés) seran
|
||||
kickeajats i banejats del canal.
|
||||
Enables or disables the restricted access option for a
|
||||
channel. When restricted access is set, users not on
|
||||
the access list will instead be kicked and banned from the channel.
|
||||
|
||||
CHAN_HELP_SET_SECURE
|
||||
Sintàxi: SET canal SECURE {ON | OFF}
|
||||
@@ -5221,6 +5217,7 @@ CHAN_HELP_CLEAR
|
||||
neteja els Modes i,k,l,m,n,p,s,t).
|
||||
BANS neteja tots els bans en el canal.
|
||||
EXCEPTS neteja tots els excepts en el canal.
|
||||
INVITES Clears all invites on the channel.
|
||||
OPS Esborra estatus d'operador de canal(Mode +o)
|
||||
de tots els operadors de canal.
|
||||
HOPS Removes channel-halfoperator status (mode +h) from
|
||||
@@ -5503,7 +5500,7 @@ MEMO_HELP_SET
|
||||
sobre una opció específica.
|
||||
|
||||
MEMO_HELP_SET_NOTIFY
|
||||
Sintàxi: SET NOTIFY {ON | LOGON | NEW | OFF}
|
||||
Sintàxi: SET NOTIFY {ON | LOGON | NEW | MAIL | NOMAIL | OFF}
|
||||
|
||||
Canvia quan se't notificarà de nous memos:
|
||||
|
||||
@@ -5514,6 +5511,9 @@ MEMO_HELP_SET_NOTIFY
|
||||
o quan treguis /AWAY.
|
||||
NEW Sols seras notificat de memos quan se't
|
||||
enviin.
|
||||
MAIL You will be notified of memos by email aswell as
|
||||
any other settings you have.
|
||||
NOMAIL You will not be notified of memos by email.
|
||||
OFF No rebràs cap notificació per memos.
|
||||
|
||||
ON és escencialment LOGON i NEW combinats.
|
||||
@@ -5699,7 +5699,7 @@ OPER_HELP_CMD_SHUTDOWN
|
||||
OPER_HELP_CMD_DEFCON
|
||||
DEFCON Manipulate the DefCon system
|
||||
OPER_HELP_CMD_CHANKILL
|
||||
CHANKILL Kill all users on a specific channel
|
||||
CHANKILL AKILL all users on a specific channel
|
||||
OPER_HELP_CMD_OLINE
|
||||
OLINE Give Operflags to a certain user
|
||||
OPER_HELP_CMD_UMODE
|
||||
@@ -6713,7 +6713,7 @@ HOST_SETALL
|
||||
HOST_DELALL
|
||||
vhosts for group %s have been removed.
|
||||
HOST_DELALL_SYNTAX
|
||||
Syntax: DELALL <nick>.
|
||||
DELALL <nick>.
|
||||
HOST_IDENT_SETALL
|
||||
vhost for group %s set to %s@%s.
|
||||
HOST_SET_ERROR
|
||||
@@ -6727,9 +6727,9 @@ HOST_SET_IDENTTOOLONG
|
||||
HOST_NOREG
|
||||
User %s not found in the nickserv db.
|
||||
HOST_SET_SYNTAX
|
||||
Syntax %R%s set <nick> <hostmask>.
|
||||
SET <nick> <hostmask>.
|
||||
HOST_SETALL_SYNTAX
|
||||
Syntax %R%s setall <nick> <hostmask>.
|
||||
SETALL <nick> <hostmask>.
|
||||
HOST_DENIED
|
||||
Access Denied.
|
||||
HOST_NOT_ASSIGNED
|
||||
@@ -6745,7 +6745,7 @@ HOST_NOT_REGED
|
||||
HOST_DEL
|
||||
vhost for %s removed.
|
||||
HOST_DEL_SYNTAX
|
||||
Syntax: %R%s del <nick>.
|
||||
DEL <nick>.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
@@ -6765,9 +6765,9 @@ HOST_NO_VIDENT
|
||||
#
|
||||
###########################################################################
|
||||
HOST_GROUP
|
||||
All vhost's in the group %s have been set to %s
|
||||
All vhosts in the group %s have been set to %s
|
||||
HOST_IDENT_GROUP
|
||||
All vhost's in the group %s have been set to %s@%s
|
||||
All vhosts in the group %s have been set to %s@%s
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# Deutsches Language file.
|
||||
#
|
||||
# (C) 2003-2008 Anope Team
|
||||
# (C) 2003-2014 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Please read COPYING and README for furhter details.
|
||||
# Please read COPYING and README for further details.
|
||||
#
|
||||
# Based on the original code of Epona by Lara.
|
||||
# Based on the original code of Services by Andy Church.
|
||||
@@ -12,8 +12,9 @@
|
||||
# - Solltest du irgendwelche Rechtschreibfehler oder sonstige
|
||||
# Verbesserungsvorschläge haben, immer her damit!
|
||||
#
|
||||
# letzte Änderung: 28.02.2003
|
||||
# INFO ::: Letzte Änderung: 29.01.2011 -- Han` -- Han@mefalcon.org --
|
||||
#
|
||||
##########################################################################
|
||||
#
|
||||
# This program is free but copyrighted software; see the file COPYING for
|
||||
# details.
|
||||
@@ -49,13 +50,6 @@
|
||||
# (including empty lines). This has to be a tab, not spaces.
|
||||
##########################################################################
|
||||
#
|
||||
# INFO ::: Letzte Änderung: 19.10.2008 -- Han` --
|
||||
#
|
||||
##########################################################################
|
||||
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
# Name of this language
|
||||
#
|
||||
###########################################################################
|
||||
@@ -319,10 +313,13 @@ END_OF_ANY_LIST
|
||||
|
||||
# Automatic messages
|
||||
LIST_INCORRECT_RANGE
|
||||
Incorrect range specified. The correct syntax is #from-to.
|
||||
Du hast einen fehlerhaften Bereich angegeben.
|
||||
Die richtige Schreibweise ist #von-bis.
|
||||
Beispiel: #1-50 oder #1-100
|
||||
CS_LIST_INCORRECT_RANGE
|
||||
To search for channels starting with #, search for the channel
|
||||
name without the #-sign prepended (anope instead of #anope).
|
||||
Um nach Channeln zu suchen die mit # beginnen, suche nach Channelnamen
|
||||
ohne das #-Symbol voranszutellen (anope anstatt #anope).
|
||||
Wildcards können verwendet werden.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
@@ -695,7 +692,7 @@ NICK_SASET_HIDE_STATUS_OFF
|
||||
|
||||
# SASET MSG responses
|
||||
NICK_SASET_MSG_SYNTAX
|
||||
SASET nickname PRIVATE {ON | OFF}
|
||||
SASET nickname MSG {ON | OFF}
|
||||
NICK_SASET_MSG_ON
|
||||
Die Services werden jetzt %s mit messages antworten.
|
||||
NICK_SASET_MSG_OFF
|
||||
@@ -724,7 +721,7 @@ NICK_SASET_LANGUAGE_UNKNOWN
|
||||
Unbekannte Sprachen-Nummer %d.
|
||||
Tippe %R%s HELP SET LANGUAGE um eine Liste aller verfügbaren Sprachen zu erhalten.
|
||||
NICK_SASET_LANGUAGE_CHANGED
|
||||
Sprache wurde geändert zu Deutsch.
|
||||
Language for %s changed to %s.
|
||||
|
||||
|
||||
# ACCESS responses
|
||||
@@ -789,7 +786,7 @@ NICK_INFO_EMAIL
|
||||
NICK_INFO_VHOST
|
||||
vHost: %s
|
||||
NICK_INFO_VHOST2
|
||||
vHost: %s@%s
|
||||
vHost: %s@%s
|
||||
NICK_INFO_ICQ
|
||||
ICQ #: %d
|
||||
NICK_INFO_GREET
|
||||
@@ -859,7 +856,7 @@ NICK_GLIST_FOOTER
|
||||
NICK_GLIST_REPLY
|
||||
%c%s
|
||||
NICK_GLIST_REPLY_ADMIN
|
||||
%c%s (wird in %s auslaufen)
|
||||
%c%s (wird am %s auslaufen)
|
||||
|
||||
# RECOVER responses
|
||||
NICK_RECOVER_SYNTAX
|
||||
@@ -1130,7 +1127,9 @@ CHAN_LOGOUT_SERVADMIN_SYNTAX
|
||||
CHAN_LOGOUT_SUCCEEDED
|
||||
Der User %s wurde vom Channel %s ausgeloggt.
|
||||
CHAN_LOGOUT_ALL_SUCCEEDED
|
||||
Alle identifizierten User wurden vom Channel ausgeloggt %s (except the channel founder).
|
||||
Alle identifizierten User wurden vom Channel ausgeloggt %s (außer dem Channel Founder).
|
||||
CHAN_LOGOUT_FOUNDER_FAILED
|
||||
You may not log out of %s (you are founder).
|
||||
|
||||
# DROP responses
|
||||
CHAN_DROP_SYNTAX
|
||||
@@ -1160,7 +1159,7 @@ CHAN_SUCCESSOR_CHANGED
|
||||
CHAN_SUCCESSOR_UNSET
|
||||
Der Eintrag des Vertreters für %s wurde entfernt.
|
||||
CHAN_SUCCESSOR_IS_FOUNDER
|
||||
%s kann nicht gleichzeitig Gründer und Vertreter im Channel %s sein.
|
||||
%s kann nicht gleichzeitig Founder und Vertreter im Channel %s sein.
|
||||
|
||||
# SET PASSWORD responses
|
||||
CHAN_SET_PASSWORD_FAILED
|
||||
@@ -1559,7 +1558,7 @@ CHAN_LEVELS_LIST_HEADER
|
||||
CHAN_LEVELS_LIST_DISABLED
|
||||
%-*s (deaktiviert)
|
||||
CHAN_LEVELS_LIST_FOUNDER
|
||||
%-*s (nur Gründer)
|
||||
%-*s (nur Founder)
|
||||
CHAN_LEVELS_LIST_NORMAL
|
||||
%-*s %d
|
||||
CHAN_LEVELS_RESET
|
||||
@@ -1583,9 +1582,9 @@ CHAN_INFO_SYNTAX
|
||||
CHAN_INFO_HEADER
|
||||
Informationen über den Channel %s:
|
||||
CHAN_INFO_FOUNDER
|
||||
Gründer: %s (%s)
|
||||
Founder: %s (%s)
|
||||
CHAN_INFO_NO_FOUNDER
|
||||
Gründer: %s
|
||||
Founder: %s
|
||||
CHAN_INFO_SUCCESSOR
|
||||
Vertreter: %s (%s)
|
||||
CHAN_INFO_NO_SUCCESSOR
|
||||
@@ -1699,7 +1698,7 @@ CHAN_GETPASS_PASSWORD_IS
|
||||
CHAN_GETKEY_SYNTAX
|
||||
GETKEY Channel
|
||||
CHAN_GETKEY_NOKEY
|
||||
Der Channel %s hat keinen Schlüßel.
|
||||
Der Channel %s hat kein Passwort.
|
||||
CHAN_GETKEY_KEY
|
||||
KEY %s %s
|
||||
|
||||
@@ -1825,6 +1824,10 @@ MEMO_SENT
|
||||
MEMO_MASS_SENT
|
||||
Ein Massen-Memo wurde an alle regsitrierte User gesendet.
|
||||
|
||||
# STAFF responses
|
||||
MEMO_STAFF_SYNTAX
|
||||
STAFF memo-text
|
||||
|
||||
# CANCEL responses
|
||||
MEMO_CANCEL_SYNTAX
|
||||
CANCEL {Nickname | Channel}
|
||||
@@ -1889,7 +1892,7 @@ MEMO_SET_UNKNOWN_OPTION
|
||||
|
||||
# SET NOTIFY responses
|
||||
MEMO_SET_NOTIFY_SYNTAX
|
||||
SET NOTIFY {ON | LOGON | NEW | OFF}
|
||||
SET NOTIFY {ON | LOGON | NEW | MAIL | NOMAIL | OFF}
|
||||
MEMO_SET_NOTIFY_ON
|
||||
%s wird dich beim Einloggen über eingegangene Memos informieren.
|
||||
MEMO_SET_NOTIFY_LOGON
|
||||
@@ -2616,7 +2619,7 @@ OPER_SVSNICK_NEWNICK
|
||||
OPER_ADMIN_SYNTAX
|
||||
ADMIN {ADD|DEL|LIST|CLEAR} [Nickname | entry-liste]
|
||||
OPER_ADMIN_SKELETON
|
||||
Services sind im Basis-Modus. Das ADMIN-Befehl ist nicht verfügbar.
|
||||
Services sind im Basis-Modus. Der ADMIN-Befehl ist nicht verfügbar.
|
||||
OPER_ADMIN_EXISTS
|
||||
%s existiert bereits auf der Services Administratoren-Liste.
|
||||
OPER_ADMIN_REACHED_LIMIT
|
||||
@@ -2763,7 +2766,7 @@ OPER_SGLINE_VIEW_FORMAT
|
||||
OPER_SGLINE_CLEAR
|
||||
Die SGLINE-Liste wurde geleert.
|
||||
|
||||
# SZLINE responses
|
||||
# SQLINE responses
|
||||
OPER_SQLINE_SYNTAX
|
||||
SQLINE {ADD | DEL | LIST | VIEW | CLEAR} [[+Zeit] {Hostmaske | entry-liste} [Grund]]
|
||||
OPER_SQLINE_CHANNELS_UNSUPPORTED
|
||||
@@ -2914,7 +2917,9 @@ OPER_JUPE_SYNTAX
|
||||
|
||||
# RAW responses
|
||||
OPER_JUPE_HOST_ERROR
|
||||
Benutze bitte einen gültigen hostnamen, wenn du jupiterst
|
||||
Benutze bitte einen gültigen Hostnamen, wenn du den JUPE Befehl benutzt.
|
||||
OPER_JUPE_INVALID_SERVER
|
||||
Du kannst den JUPE Befehl nicht gegen Deinen Services Server oder Hub Server richten.
|
||||
|
||||
# RAW responses
|
||||
OPER_RAW_SYNTAX
|
||||
@@ -2934,7 +2939,7 @@ OPER_CANNOT_RESTART
|
||||
|
||||
# IGNORE respondes
|
||||
OPER_IGNORE_SYNTAX
|
||||
Syntax: IGNORE {ADD|DEL|LIST|CLEAR} [Zeit] [Nickname | Hostmaske]
|
||||
IGNORE {ADD|DEL|LIST|CLEAR} [Zeit] [Nickname | Hostmaske]
|
||||
OPER_IGNORE_VALID_TIME
|
||||
Du musst eine zulässige Zahl als Zeit eingeben.
|
||||
OPER_IGNORE_TIME_DONE
|
||||
@@ -3012,7 +3017,7 @@ OPER_STAFF_FORMAT
|
||||
OPER_STAFF_AFORMAT
|
||||
%c %s %s [%s]
|
||||
OPER_DEFCON_SYNTAX
|
||||
Syntax: DEFCON [1|2|3|4|5]
|
||||
DEFCON [1|2|3|4|5]
|
||||
OPER_DEFCON_DENIED
|
||||
Dieser Service ist derzeit deaktiviert, bitte versuche es später nochmal
|
||||
OPER_DEFCON_NO_CONF
|
||||
@@ -3238,7 +3243,7 @@ OPER_HELP_STAFF
|
||||
OPER_HELP_DEFCON
|
||||
Syntax: DEFCON [1|2|3|4|5]
|
||||
|
||||
Das Defcon-System kann benutzt werden, um vordefinierte Einstellung
|
||||
Das Defcon-System kann benutzt werden, um vordefinierte Einstellung
|
||||
von einschränkungen der Services einzubinden - nützlich während
|
||||
versuchter Angriffe auf das Netzwerk.
|
||||
|
||||
@@ -3284,7 +3289,7 @@ NEWS_RANDOM_TEXT
|
||||
[Random News - %s] %s
|
||||
|
||||
NEWS_LOGON_SYNTAX
|
||||
Syntax: LOGONNEWS {ADD|DEL|LIST} [Text|Nummer]
|
||||
LOGONNEWS {ADD|DEL|LIST} [Text|Nummer]
|
||||
NEWS_LOGON_LIST_HEADER
|
||||
Logon News Einträge:
|
||||
NEWS_LOGON_LIST_ENTRY
|
||||
@@ -3293,13 +3298,13 @@ NEWS_LOGON_LIST_ENTRY
|
||||
NEWS_LOGON_LIST_NONE
|
||||
Es gibt keine Logon News.
|
||||
NEWS_LOGON_ADD_SYNTAX
|
||||
Syntax: LOGONNEWS ADD Text
|
||||
LOGONNEWS ADD Text
|
||||
NEWS_LOGON_ADD_FULL
|
||||
Die News-Liste ist voll!
|
||||
NEWS_LOGON_ADDED
|
||||
Neuer Logon News-Eintrag hinzugefügt (#%d).
|
||||
NEWS_LOGON_DEL_SYNTAX
|
||||
Syntax: LOGONNEWS DEL {Nummer | ALL}
|
||||
LOGONNEWS DEL {Nummer | ALL}
|
||||
NEWS_LOGON_DEL_NOT_FOUND
|
||||
Logon News-Eintrag #%d konnte nicht gefunden werden!
|
||||
NEWS_LOGON_DELETED
|
||||
@@ -3336,30 +3341,30 @@ NEWS_OPER_DELETED_ALL
|
||||
Alle Oper-News-Einträge wurden entfernt.
|
||||
|
||||
NEWS_RANDOM_SYNTAX
|
||||
Syntax: RANDOMNEWS {ADD|DEL|LIST} [Text|Nummer]
|
||||
RANDOMNEWS {ADD|DEL|LIST} [Text|Nummer]
|
||||
NEWS_RANDOM_LIST_HEADER
|
||||
Random news Einträge:
|
||||
NEWS_RANDOM_LIST_ENTRY
|
||||
%5d (%s von %s)
|
||||
%s
|
||||
NEWS_RANDOM_LIST_NONE
|
||||
Keine randomnews vorhanden.
|
||||
Keine Randomnews vorhanden.
|
||||
NEWS_RANDOM_ADD_SYNTAX
|
||||
Syntax: RANDOMNEWS ADD Text
|
||||
RANDOMNEWS ADD Text
|
||||
NEWS_RANDOM_ADD_FULL
|
||||
Die News Liste ist voll!
|
||||
NEWS_RANDOM_ADDED
|
||||
Neuer randomnews Eintrag hinzugefügt (#%d).
|
||||
Neuer Randomnews Eintrag hinzugefügt (#%d).
|
||||
NEWS_RANDOM_DEL_SYNTAX
|
||||
Syntax: RANDOMNEWS DEL {Nummer | ALL}
|
||||
RANDOMNEWS DEL {Nummer | ALL}
|
||||
NEWS_RANDOM_DEL_NOT_FOUND
|
||||
Randomnews Eintrag #%d nicht gefunden!
|
||||
NEWS_RANDOM_DELETED
|
||||
Randomnews Eintrag #%d gelöscht.
|
||||
NEWS_RANDOM_DEL_NONE
|
||||
Keine randomnews Einträge zu löschen!
|
||||
Keine Randomnews Einträge zu löschen!
|
||||
NEWS_RANDOM_DELETED_ALL
|
||||
Ale randomnews Einträge wurden gelöscht.
|
||||
Ale Randomnews Einträge wurden gelöscht.
|
||||
|
||||
NEWS_HELP_LOGON
|
||||
Syntax: LOGONNEWS ADD Text
|
||||
@@ -3368,15 +3373,12 @@ NEWS_HELP_LOGON
|
||||
|
||||
Zeigt oder bearbeitet die Liste der LogonNews.
|
||||
Nach der Verbindung des Users werden diese Nachrichten
|
||||
angezeigt. (Es werden jedoch nur max. %s angezeigt, um ein
|
||||
angezeigt. (Es werden jedoch nur max. %d angezeigt, um ein
|
||||
Flooding des Users zu verhindern. Wenn mehr News
|
||||
existieren, werden nur die neuesten angezeigt.)
|
||||
NewsCount can be configured in services.conf.
|
||||
Die Anzahl der News können in der services.conf festgelegt werden.
|
||||
|
||||
LOGONNEWS LIST kann von jedem IRC Operator benutzt werden
|
||||
um die aktuelle Liste der Logon News anzeigen zu lassen.
|
||||
ADD oder DEL können allerdings nur von Services Admins
|
||||
ausgeführt werden.
|
||||
Diese Funktion ist beschränkt auf die Services Administartoren.
|
||||
|
||||
NEWS_HELP_OPER
|
||||
Syntax: OPERNEWS ADD Text
|
||||
@@ -3386,15 +3388,12 @@ NEWS_HELP_OPER
|
||||
Zeigt oder bearbeitet die Liste der Oper-News.Nachdem
|
||||
sich ein User die Oper-Flags gesetzt hat (mit dem
|
||||
/OPER Befehl) werden ihm diese Nachrichten angezeigt.
|
||||
(Es werden jedoch nur max. %s Nachrichten angezeigt, um ein
|
||||
(Es werden jedoch nur max. %d Nachrichten angezeigt, um ein
|
||||
Flooding des Users zu verhindern. Wenn mehr News
|
||||
existieren, werden nur die neüsten angezeigt.)
|
||||
NewsCount can be configured in services.conf.
|
||||
Die Anzahl der News können in der services.conf festgelegt werden.
|
||||
|
||||
OPERNEWS LIST kann von jedem IRC Operator benutzt werden
|
||||
um die aktuelle Liste der Oper-News anzeigen zu lassen.
|
||||
ADD oder DEL können allerdings nur von Services Admins
|
||||
ausgeführt werden.
|
||||
Diese Funktion ist beschränkt auf die Services Administartoren.
|
||||
|
||||
NEWS_HELP_RANDOM
|
||||
Syntax: RANDOMNEWS ADD Text
|
||||
@@ -3405,9 +3404,7 @@ NEWS_HELP_RANDOM
|
||||
Wenn ein User zum Network verbindet, wird eine (und nur eine!) dieser
|
||||
RandomNews Nachrichten zufällig gewählt und an den User gesendet.
|
||||
|
||||
RANDOMNEWS LIST kann von jedem IRC Operator genutzt werden um die
|
||||
aktuellen News Nachrichten aufzulisten. ADD und DEL können nur von
|
||||
Services Administratoren genutzt werden.
|
||||
Diese Funktion ist beschränkt auf die Services Administartoren.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
@@ -3616,7 +3613,7 @@ NICK_HELP_UPDATE
|
||||
|
||||
Updatet deinen derzeiten Status, z.B. prüft es auf neue Nachrichten,
|
||||
setzt benötigte Channel-Modes (ModeonID), aktualisiert deinen vHost und
|
||||
deine userflags (lastseentime, etc).
|
||||
deine Userflags (lastseentime, etc).
|
||||
|
||||
NICK_HELP_LOGOUT
|
||||
Syntax: LOGOUT
|
||||
@@ -3759,7 +3756,7 @@ NICK_HELP_SET_GREET
|
||||
gesendet, wenn du in einen Channel eintrittst, der
|
||||
die GREET Option eingeschaltet hat. Vorausgesetzt
|
||||
du hast den nötigen Zugriffslevel in der Access-Liste
|
||||
des Channels.
|
||||
des Channels.
|
||||
|
||||
NICK_HELP_SET_KILL
|
||||
Syntax: SET KILL {ON | QUICK | IMMED | OFF}
|
||||
@@ -4045,7 +4042,7 @@ NICK_HELP_GHOST
|
||||
wenn dein Computer abstürtzt oder deine Internet-
|
||||
Verbindung zusammenbricht, wenn du im IRC bist.
|
||||
|
||||
Wenn du das GHOST Befehk benutzen willst,muss
|
||||
Wenn du das GHOST Befehl benutzen willst,muss
|
||||
deine aktuelle Hostmaske (siehe /WHOIS) in der
|
||||
Zugriffsliste des entsprechenden Nicknamens oder
|
||||
in der Gruppe des Nicknamens sein.Weiterhin musst
|
||||
@@ -4109,7 +4106,7 @@ NICK_HELP_ALIST
|
||||
NICK_HELP_GLIST
|
||||
Syntax: GLIST
|
||||
|
||||
Zeigt alle Nicknamen die in deiner Gruppe enthalten sind.
|
||||
Zeigt alle Nicknamen die in deiner Gruppe enthalten sind.
|
||||
|
||||
NICK_HELP_STATUS
|
||||
Syntax: STATUS Nickname
|
||||
@@ -4272,7 +4269,7 @@ NICK_SERVADMIN_HELP_GETPASS
|
||||
NICK_SERVADMIN_HELP_GETEMAIL
|
||||
Syntax: GETEMAIL user@emailhost
|
||||
|
||||
Gibt die passenden Nicknamen auf, welche die gegebene eMail benutzen.
|
||||
Gibt die passenden Nicknamen an, welche die angegebene eMail benutzen.
|
||||
Beachte, dass du keine wildcards für den User oder emailhost
|
||||
verwenden kannst. Immer, wenn dieser Befehl benutzt wird, wird
|
||||
eine Nachricht mit dem Nickname der Person mitgeloggt.
|
||||
@@ -4347,54 +4344,53 @@ CHAN_HELP_CMD_CLEAR
|
||||
CLEAR Entfernt bestimmte Einstellungen des angegebenen Channel
|
||||
CHAN_HELP_CMD_DEVOICE
|
||||
DEVOICE Enfernt den Voice-Status des angegebenen Nicknamens
|
||||
in einen Channel
|
||||
in einem Channel
|
||||
CHAN_HELP_CMD_GETKEY
|
||||
GETKEY Gibt den Channel-Schlüßel wieder
|
||||
GETKEY Gibt das Channel-Passwort wieder
|
||||
CHAN_HELP_CMD_INFO
|
||||
INFO Zeigt Informationen über den angegebenen Channel
|
||||
CHAN_HELP_CMD_INVITE
|
||||
INVITE Veranlaßt den ChanServ den angegebenen Nickname in
|
||||
einen Channel eizuladen
|
||||
INVITE Befiehlt Chanserv Dich in einen Channel einzuladen
|
||||
CHAN_HELP_CMD_KICK
|
||||
KICK Kickt den angegebenen Nicknamen aus einen Channel
|
||||
CHAN_HELP_CMD_LIST
|
||||
LIST Listet alle registrieten Channels des angegebene Muster
|
||||
LIST Listet alle registrierten Channels des angegebene Muster
|
||||
CHAN_HELP_CMD_LOGOUT
|
||||
LOGOUT Das Befehl wir den angegegenen Nickname abmelden
|
||||
LOGOUT Meldet den angegebenen Nicknamen ab
|
||||
CHAN_HELP_CMD_OP
|
||||
OP Gibt den angegebenen Nicknamen Op-Status in einen Channel
|
||||
OP Gibt dem angegebenen Nicknamen Op-Status in einem Channel
|
||||
CHAN_HELP_CMD_TOPIC
|
||||
TOPIC Ändert den Topic des angegebenen Channels
|
||||
CHAN_HELP_CMD_UNBAN
|
||||
UNBAN Enfernt ein ban(s) die dich betreffen aus einen Channel
|
||||
UNBAN Enfernt den oder die Bann(s) die Dich betreffen aus einem Channel
|
||||
CHAN_HELP_CMD_VOICE
|
||||
VOICE Gibt den angegebenen User Voice-Status in einen Channel
|
||||
VOICE Gibt dem angegebenen User Voice-Status in einem Channel
|
||||
CHAN_HELP_CMD_VOP
|
||||
VOP Verwaltet die VOP-Liste von einen Channel
|
||||
VOP Verwaltet die VOP-Liste eines Channels
|
||||
CHAN_HELP_CMD_DEHALFOP
|
||||
DEHALFOP Enfernt den HalfOP-Status des angegebenen Nicknamens
|
||||
in einen Channel
|
||||
in einem Channel
|
||||
CHAN_HELP_CMD_DEOWNER
|
||||
DEOWNER Entfernt dein Gründer Status in einen Channel
|
||||
DEOWNER Entfernt Deinen Founder (Gründer) Status in einem Channel
|
||||
CHAN_HELP_CMD_DEPROTECT
|
||||
DEPROTECT Entfernt den schutz des angegebenen Nicknamens
|
||||
in einen Channel
|
||||
DEPROTECT Entfernt den Schutz des angegebenen Nicknamens
|
||||
in einem Channel
|
||||
CHAN_HELP_CMD_HALFOP
|
||||
HALFOP Gibt den angegebenen User HalfOP-Status in einen Channel
|
||||
HALFOP Gibt dem angegebenen User HalfOP-Status in einem Channel
|
||||
CHAN_HELP_CMD_HOP
|
||||
HOP Verwaltet die HOP-Liste von einen Channel
|
||||
CHAN_HELP_CMD_OWNER
|
||||
OWNER Gibt dir Gründer Staus in einen Channel
|
||||
OWNER Gibt Dir Founder (Gründer) Status in einem Channel
|
||||
CHAN_HELP_CMD_PROTECT
|
||||
PROTECT Schützt den angegebenen Nicknamen in einen Channel
|
||||
PROTECT Schützt den angegebenen Nicknamen in einem Channel
|
||||
CHAN_HELP_CMD_ADMIN
|
||||
ADMIN Schützt den angegebenen Nicknamen in einen Channel
|
||||
ADMIN Schützt den angegebenen Nicknamen in einem Channel
|
||||
CHAN_HELP_CMD_DEADMIN
|
||||
DEADMIN Entfernt den Schutz des angegebenen Nicknamens
|
||||
in einen Channel
|
||||
in einem Channel
|
||||
CHAN_HELP_CMD_DEOP
|
||||
DEOP Enfernt den OP-Status des angegebenen Nicknamens
|
||||
in einen Channel
|
||||
in einem Channel
|
||||
|
||||
CHAN_HELP
|
||||
Mit Hilfe von %S kann man Channel registrieren und
|
||||
@@ -4422,7 +4418,7 @@ CHAN_HELP_REGISTER
|
||||
einstellst, erlaubt es später anderen Änderungen
|
||||
am Channel durchzuführen.Der letzte Parameter, der
|
||||
angegeben werden MUSS,sollte eine allgemeine
|
||||
Beschreibung des Channels bzw dessen Zweck beinhalten.
|
||||
Beschreibung des Channels bzw dessen Zweck beinhalten.
|
||||
|
||||
Wenn du einen Channel registrierst, wird dein Nickname
|
||||
als Founder (Gründer) eingetragen. Der Channel-Founder
|
||||
@@ -4435,14 +4431,14 @@ CHAN_HELP_REGISTER
|
||||
|
||||
Hinweis: Für das Registrieren eines Channels musst du
|
||||
einen registrierten und identifizierten Nickname benutzen.
|
||||
Hast du dies noch nicht getan, tippe %R%s HELP REGISTER
|
||||
Hast du dies noch nicht getan, tippe %R%s HELP REGISTER
|
||||
um weitere Informationen darüber zu erhalten.
|
||||
|
||||
CHAN_HELP_IDENTIFY
|
||||
Syntax: IDENTIFY Channel Passwort
|
||||
|
||||
Identifiziert ein Nickname gegenüber %S als
|
||||
Gründer (Founder) des angegebenen Channels.
|
||||
Founder (Gründer) des angegebenen Channels.
|
||||
Das Passwort muss dasselbe wie bei der
|
||||
registrierung des angegebenen Channels sein
|
||||
und ist in der Regel von den Real-Founder des
|
||||
@@ -4471,7 +4467,7 @@ CHAN_HELP_SET
|
||||
|
||||
Verfügbare Optionen:
|
||||
|
||||
FOUNDER Stellt den Gründer des Channels ein
|
||||
FOUNDER Stellt den Founder (Gründer) des Channels ein
|
||||
SUCCESSOR Stellt den Vertreter des Founders ein
|
||||
PASSWORD Ändert das Passwort des Channel-Founders
|
||||
DESC Ändert die Channel-Beschreibung
|
||||
@@ -4510,10 +4506,10 @@ CHAN_HELP_SET_FOUNDER
|
||||
CHAN_HELP_SET_SUCCESSOR
|
||||
Syntax: SET Channel SUCCESSOR Nickname
|
||||
|
||||
Ändert den Vertreter des Gründers in dem Channel. Wenn
|
||||
der Nickname des Gründers ausläuft oder gedropped wird,
|
||||
Ändert den Vertreter des Founders (Gründer) in dem Channel.
|
||||
Wenn der Nickname des Founders ausläuft oder gedropped wird,
|
||||
wenn der Channel registriert ist, wird der Vertreter
|
||||
der neue Gründer des Channels. Wenn jedoch der
|
||||
der neue Founder des Channels. Wenn jedoch der
|
||||
Vertreter bereits zu viele Channels registriert hat
|
||||
(max %d), wird der Channel gedropped.
|
||||
|
||||
@@ -4599,7 +4595,7 @@ CHAN_HELP_SET_MLOCK
|
||||
|
||||
Die Modes die gelockt werden können sind von dein IRCD abhängig.
|
||||
Jede einzelne dieser Modes kann ein/aus oder gar nicht gelockt werden.
|
||||
Der Modi Parameter ist genauso aufgebaut wie das jeweilige /MODE Befehl.
|
||||
Der Modi Parameter ist genauso aufgebaut wie das jeweilige /MODE Befehl.
|
||||
Dies bedeutet, Modi die durch ein + gekennzeichnet sind, sind aktiviert,
|
||||
durch ein - sind sie deaktiviert.
|
||||
|
||||
@@ -4705,7 +4701,7 @@ CHAN_HELP_SET_XOP
|
||||
wechselst, werden die Zugriffslevel geändert, folglich wirst du
|
||||
nicht die selben Werte finden, wenn du zu Access zurückwechselst.
|
||||
|
||||
Du solltest nach einem Wechsel zum xOP System darauf achten,
|
||||
Du solltest nach einem Wechsel zum XOP System darauf achten,
|
||||
dass die User das richtige Level besitzen, da das Umwechseln
|
||||
auf Vermutung basiert und nicht immer perfekt funktioniert.
|
||||
Es ist nicht empfohlen nach einer Änderung der Levels das xOP
|
||||
@@ -5061,9 +5057,9 @@ CHAN_HELP_OP
|
||||
|
||||
Setzt den Operator-Status des angegebenen Nicknamen
|
||||
in dem Channel. Wird kein Nickname angegeben, wird
|
||||
ChanServ dich oppen, vorausgesetzt, du hast die
|
||||
entsprechenden Rechte in der Zugriffsliste um
|
||||
diesen Befehl auszuführen.
|
||||
ChanServ Dir Op Status geben, vorausgesetzt,
|
||||
du hast dieentsprechenden Rechte in der Zugriffsliste
|
||||
um diesen Befehl auszuführen.
|
||||
|
||||
Standardmässig ist dafür ein Level von 5 oder
|
||||
grösser erforderlich.
|
||||
@@ -5072,10 +5068,11 @@ CHAN_HELP_DEOP
|
||||
Syntax: DEOP [Channel [Nickname]]
|
||||
|
||||
Entfernt den Operator-Status eines bestimmten Nickname
|
||||
in dem Channel. Wird kein Nickname angegeben, wird ChanServ
|
||||
dich deoppen. Wird weder Channel noch Nick als Parameter
|
||||
übergeben, wird ChanServ dich in allen Channels deoppen
|
||||
in denen du die entsprechenden Rechte hast.
|
||||
in dem Channel. Wird kein Nickname angegeben, wird
|
||||
ChanServ Dir den Op Status nehmen. Wird weder Channel
|
||||
noch Nick als Parameter übergeben, wird ChanServ Dir
|
||||
in allen Channels den Op Status nehmen, in denen Du die
|
||||
entsprechenden Rechte hast.
|
||||
|
||||
Standardmässig ist dafür ein Level von 5 oder
|
||||
grösser erforderlich.
|
||||
@@ -5084,53 +5081,53 @@ CHAN_HELP_VOICE
|
||||
Syntax: VOICE [Channel [Nickname]]
|
||||
|
||||
Erteilt dem angegebenen Nickname Voice-Status in dem
|
||||
Channel. Wird kein Nick angegeben, wird ChanServ dich
|
||||
voicen. Wird weder Channel noch Nickane angegeben, wird
|
||||
ChanServ dich in allen Channels voicen, in denen du
|
||||
die entsprechenden Rechte hast.
|
||||
Channel. Wird kein Nick angegeben, wird ChanServ Dir
|
||||
Voice geben. Wird weder Channel noch Nickane angegeben,
|
||||
wird ChanServ Dir in allen Channels Voice geben,
|
||||
in denen Du die entsprechenden Rechte hast.
|
||||
|
||||
Standardmässig brauchst du dafür ein Level von 5
|
||||
um anderen Voice zu erteilen, oder Level 3 um dich
|
||||
selbst zu voicen.
|
||||
um anderen Voice zu erteilen, oder Level 3 um Dir
|
||||
selbst Voice zu geben.
|
||||
|
||||
CHAN_HELP_DEVOICE
|
||||
Syntax: DEVOICE [Channel [Nickname]]
|
||||
|
||||
Entfernt den Voice-Status des Nicknamen in dem Channel.
|
||||
Wird kein Nickname angegeben, wird ChanServ dich devoicen.
|
||||
Wird weder Channel noch Nick angegeben, wird ChanServ
|
||||
dich in allen Channels voicen, in denen du die
|
||||
entsprechenden Rechte hast.
|
||||
Wird kein Nickname angegeben, wird ChanServ Dir den
|
||||
Voice Status nehmen.Wird weder Channel noch Nick angegeben,
|
||||
wird ChanServ Dir in allen Channels den Voice Status nehmen,
|
||||
in denen Du die entsprechenden Rechte hast.
|
||||
|
||||
Standardmässig brauchst du dafür ein Level von 5
|
||||
um andere zu devoicen, oder Level 3 um dich selbst
|
||||
vom Voice-Flag zu befreien.
|
||||
um anderen den Voice Status zu nehmen, oder Level 3 um
|
||||
dich selbst vom Voice-Flag zu befreien.
|
||||
|
||||
CHAN_HELP_HALFOP
|
||||
Syntax: HALFOP [Channel [Nickname]]
|
||||
|
||||
Setzt den Half-Op-Status des angegebenen Nicknamen in dem
|
||||
Channel. Wird kein Nickname angegeben, wird ChanServ dich
|
||||
halfoppen. Wird weder Channel noch Nickname angegeben,
|
||||
wird ChanServ dich in allen Channels halfoppen, in denen
|
||||
du die entsprechenden Rechte hast.
|
||||
Channel. Wird kein Nickname angegeben, wird ChanServ Dir
|
||||
den Halfop geben. Wird weder Channel noch Nickname angegeben,
|
||||
wird ChanServ Dir in allen Channels den Halfop geben,
|
||||
in denen du die entsprechenden Rechte hast.
|
||||
|
||||
Standardmässig brauchst du dafür ein Level von 5
|
||||
um andere zu halfoppen, oder Level 4 um dich selbst zu
|
||||
halfoppen.
|
||||
um andere den Halfop Status zu geben, oder Level 4
|
||||
um Dir selbst den Halfop Status zu geben.
|
||||
|
||||
CHAN_HELP_DEHALFOP
|
||||
Syntax: DEHALFOP [Channel [Nickname]]
|
||||
|
||||
Entfernt den Half-Op-Status des angegebenen Nicknamen in dem
|
||||
Channel. Wird kein Nickname angegeben, wird ChanServ dich
|
||||
dehalfoppen. Wird weder Channel noch Nickname angegeben,
|
||||
wird ChanServ dich in allen Channels dehalfoppen, in denen
|
||||
Channel. Wird kein Nickname angegeben, wird ChanServ Dir
|
||||
den Halfop nehmen. Wird weder Channel noch Nickname angegeben,
|
||||
wird ChanServ Dir in allen Channels den Halfop nehmen, in denen
|
||||
du die entsprechenden Rechte hast.
|
||||
|
||||
Standardmässig brauchst du dafür ein Level von 5
|
||||
um andere zu dehalfoppen, oder Level 4 um dich selbst zu
|
||||
dehalfoppen.
|
||||
um andere den Halfop Status zu nehmen, oder Level 4
|
||||
um Dir selbst den Halfop Status zu nehmen.
|
||||
|
||||
CHAN_HELP_PROTECT
|
||||
Syntax: PROTECT [Channel [Nickname]]
|
||||
@@ -5240,6 +5237,7 @@ CHAN_HELP_CLEAR
|
||||
(z.B. Modi i,k,l,m,n,p,s und t)
|
||||
BANS Entfernt alle Bans in dem Channel
|
||||
EXCEPTS Entfernt alle Excepts in dem Channel
|
||||
INVITES Löscht alle Einladungen im Channel.
|
||||
OPS Entfernt jeden Operator-Status (mode +o)
|
||||
in dem Channel.
|
||||
HOPS Entfernt jeden Halfoperator-Status (mode +h)
|
||||
@@ -5303,7 +5301,7 @@ CHAN_SERVADMIN_HELP_DROP
|
||||
|
||||
Entfernt die Registrierung des angegebenen Channels aus
|
||||
der Datenbank. Zusätzlich werden Zugriffslisten,
|
||||
Einstellungen usw mit aus der Datenbank entfernt.
|
||||
Einstellungen usw mit aus der Datenbank entfernt.
|
||||
|
||||
Nur Services Administratoren können Channel DROPEN,
|
||||
(löschen) ohne sich vorher gegenüber dem Channel als
|
||||
@@ -5535,7 +5533,7 @@ MEMO_HELP_SET
|
||||
über eine bestimmte Option.
|
||||
|
||||
MEMO_HELP_SET_NOTIFY
|
||||
Syntax: SET NOTIFY {ON | LOGON | NEW | OFF}
|
||||
Syntax: SET NOTIFY {ON | LOGON | NEW | MAIL | NOMAIL | OFF}
|
||||
|
||||
Ändert den Zeitpunkt, wann MemoServ dich über neue
|
||||
eingegangene Memos informiert:
|
||||
@@ -5548,10 +5546,16 @@ MEMO_HELP_SET_NOTIFY
|
||||
machst.
|
||||
NEW Du wirst nur informiert, wenn sie an dich
|
||||
gesendet werden.
|
||||
MAIL Du wirst über neue memos per email informiert.
|
||||
NOMAIL Du wirst nicht über neue memos informiert per email.
|
||||
OFF Es wird keine Benachrichtigung über neue
|
||||
Memos stattfinden.
|
||||
|
||||
ON ist eine Kombination aus LOGON und NEW.
|
||||
MAIL und NOMAIL sind optionale Einstellungen und
|
||||
beeinflussen ON | LOGON | NEW nicht. Nach der Einstellung
|
||||
OFF muß die Option Mail erneut gesetzt werden, damit
|
||||
memos per email zugestellt werden sollen.
|
||||
|
||||
MEMO_HELP_SET_LIMIT
|
||||
Syntax: SET LIMIT [Channel] Limit
|
||||
@@ -5712,7 +5716,7 @@ OPER_HELP_CMD_SHUTDOWN
|
||||
OPER_HELP_CMD_DEFCON
|
||||
DEFCON Ändert das DefCon System
|
||||
OPER_HELP_CMD_CHANKILL
|
||||
CHANKILL Killt alle User des angegebenen Channels
|
||||
CHANKILL Setzt einen AKILL auf alle User des angegebenen Channels.
|
||||
OPER_HELP_CMD_OLINE
|
||||
OLINE Einem User "Operflags" setzen
|
||||
OPER_HELP_CMD_UMODE
|
||||
@@ -6117,14 +6121,12 @@ OPER_HELP_SET
|
||||
Ändert globale Einstellungen der Services Optionen.
|
||||
Diese Optionen lassen sich ändern:
|
||||
|
||||
READONLY Nur-Lese Modus der Datenbank an
|
||||
oder aus
|
||||
READONLY Nur-Lese Modus der Datenbank an oder aus
|
||||
LOGCHAN Zeigt Logmessages in einem Chan
|
||||
DEBUG Debug-Modus der Services an oder aus
|
||||
NOEXPIRE Auslauf-Modus der Services
|
||||
an oder aus
|
||||
NOEXPIRE Auslauf-Modus der Services an oder aus
|
||||
SUPERADMIN Den Super-Admin Modus an oder aus
|
||||
SQL SQL-Modus an oder aus
|
||||
SQL SQL-Modus an oder aus
|
||||
IGNORE Ignore-Modus an oder aus
|
||||
LIST Optionen-Liste
|
||||
|
||||
@@ -6281,7 +6283,7 @@ OPER_HELP_RESTART
|
||||
|
||||
Die Services werden sich bei diesem Befehl beenden,
|
||||
die Datenbanken speichern, und danach neustarten
|
||||
(die ausführbare Datei erneut aufrufen).
|
||||
(die ausführbare Datei erneut aufrufen).
|
||||
|
||||
OPER_HELP_CHANLIST
|
||||
Syntax: CHANLIST [{Muster | Nickname} [SECRET]]
|
||||
@@ -6352,20 +6354,20 @@ BOT_HELP_CMD_BADWORDS
|
||||
BOT_HELP_CMD_ACT
|
||||
ACT Veranlaßt den Bot ein "/me" Befehl ausführen
|
||||
BOT_HELP_CMD_INFO
|
||||
INFO Erlaubt dir Informationen über ein BotServ ServicesBot zu sehen
|
||||
INFO Erlaubt Dir, Informationen über einen ServicesBot anzuzeigen
|
||||
BOT_HELP_CMD_SAY
|
||||
SAY Veranlaßt ein Bot ein Text in einen Channel zu sagen
|
||||
SAY Veranlaßt den Bot etwas in einem Channel zu sagen
|
||||
BOT_HELP_CMD_UNASSIGN
|
||||
UNASSIGN Entfernt ein ServicesBot von einen Channel
|
||||
UNASSIGN Entfernt ein ServicesBot von einem Channel
|
||||
BOT_HELP_CMD_BOT
|
||||
BOT Verwaltung von Bots
|
||||
|
||||
BOT_HELP
|
||||
%S ist dafür geschaffen, Bots in Channels
|
||||
%S ist dafür geschaffen, Bots in Channels
|
||||
einzubringen. Geschaffen wurde er für User, die
|
||||
selbst keinen Bot ausfetzen können, oder auch Netzwerke,
|
||||
die Bots verbieten. Mögliche Befehle siehe unten,
|
||||
die Syntax ist %R%S Befehl.
|
||||
die Bots verbieten. Mögliche Befehle siehe unten,
|
||||
die Syntax ist %R%S Befehl.
|
||||
|
||||
Für weitere Hilfe zu einem bestimmten Befehl
|
||||
tippe %R%S HELP Befehl
|
||||
@@ -6711,7 +6713,7 @@ HOST_SETALL
|
||||
HOST_DELALL
|
||||
vHost für die Gruppe %s wurden gelöscht.
|
||||
HOST_DELALL_SYNTAX
|
||||
Syntax: DELALL Nickname.
|
||||
DELALL Nickname.
|
||||
HOST_IDENT_SETALL
|
||||
vHost für die Gruppe %s wurde gesetzt: %s@%s.
|
||||
HOST_SET_ERROR
|
||||
@@ -6727,9 +6729,9 @@ HOST_SET_IDENTTOOLONG
|
||||
HOST_NOREG
|
||||
User %s wurde nicht in der NickServ Datenbank gefunden.
|
||||
HOST_SET_SYNTAX
|
||||
Syntax %R%s SET Nickname Hostmaske.
|
||||
SET <Nickname> <Hostmaske>.
|
||||
HOST_SETALL_SYNTAX
|
||||
Syntax %R%s SETALL Nickname Hostmaske.
|
||||
SETALL <Nickname> <Hostmaske>.
|
||||
HOST_DENIED
|
||||
Zugriff verweigert.
|
||||
HOST_NOT_ASSIGNED
|
||||
@@ -6745,11 +6747,11 @@ HOST_NOT_REGED
|
||||
HOST_DEL
|
||||
vHost für %s wurde gelöscht.
|
||||
HOST_DEL_SYNTAX
|
||||
Syntax: %R%s DEL Nickname.
|
||||
DEL Nickname.
|
||||
HOST_OFF
|
||||
Your vhost was removed and the normal cloaking restored.
|
||||
Dein vHost wurde deaktiviert und die normale Host-Verschlüsselung wiederhergestellt.
|
||||
HOST_OFF_UNREAL
|
||||
Dein vHost wurde gelöscht. Um die normale Host-Verschlüsselung zu reaktivieren, tippe /mode %s +%s
|
||||
Dein vHost wurde deaktiviert. Um die normale Host-Verschlüsselung zu reaktivieren, tippe /mode %s +%s
|
||||
HOST_NO_VIDENT
|
||||
Dein IRCd unterstützt keine vIdents. Falls das inkorrekt sein sollte, melde das bitte als einen Bug.
|
||||
HOST_GROUP
|
||||
|
||||
+76
-71
@@ -1,6 +1,6 @@
|
||||
# United States English language file.
|
||||
#
|
||||
# (C) 2003-2008 Anope Team
|
||||
# (C) 2003-2014 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Please read COPYING and README for further details.
|
||||
@@ -664,7 +664,7 @@ NICK_SASET_HIDE_STATUS_OFF
|
||||
|
||||
# SASET MSG responses
|
||||
NICK_SASET_MSG_SYNTAX
|
||||
SASAET nickname PRIVATE {ON | OFF}
|
||||
SASET nickname MSG {ON | OFF}
|
||||
NICK_SASET_MSG_ON
|
||||
Services will now reply to %s with messages.
|
||||
NICK_SASET_MSG_OFF
|
||||
@@ -692,7 +692,7 @@ NICK_SASET_LANGUAGE_SYNTAX
|
||||
NICK_SASET_LANGUAGE_UNKNOWN
|
||||
Unknown language number %d. Type %R%s HELP SET LANGUAGE for a list of languages.
|
||||
NICK_SASET_LANGUAGE_CHANGED
|
||||
Language changed to English.
|
||||
Language for %s changed to %s.
|
||||
|
||||
|
||||
# ACCESS responses
|
||||
@@ -879,13 +879,13 @@ NICK_SENDPASS_HEAD
|
||||
NICK_SENDPASS_LINE_1
|
||||
You have requested to receive the password of nickname %s by e-mail.
|
||||
NICK_SENDPASS_LINE_2
|
||||
The password is %s for security purposes, you should change it as soon as you receive this mail.
|
||||
The password is %s. For security reasons, you should change it as soon as possible.
|
||||
NICK_SENDPASS_LINE_3
|
||||
If you don't know why this mail is sent to you, please ignore it silently.
|
||||
If you don't know why this email has been sent to you, please ignore it.
|
||||
NICK_SENDPASS_LINE_4
|
||||
PLEASE DON'T ANSWER TO THIS MAIL!
|
||||
This mailbox is not monitored. Replies to this e-mail will NOT be responded to.
|
||||
NICK_SENDPASS_LINE_5
|
||||
%s administrators.
|
||||
Thanks for using %s
|
||||
NICK_SENDPASS_OK
|
||||
Password of %s has been sent.
|
||||
|
||||
@@ -935,15 +935,15 @@ NICK_REG_MAIL_SUBJECT
|
||||
NICK_REG_MAIL_HEAD
|
||||
Hi,
|
||||
NICK_REG_MAIL_LINE_1
|
||||
You have requested to register the following nickname %s.
|
||||
You have requested to register the nickname "%s".
|
||||
NICK_REG_MAIL_LINE_2
|
||||
Please type " %R%s confirm %s " to complete registration.
|
||||
Please type " %R%s confirm %s " into your IRC client to complete the registration.
|
||||
NICK_REG_MAIL_LINE_3
|
||||
If you don't know why this mail is sent to you, please ignore it silently.
|
||||
If you don't know why this mail has been sent to you, please ignore it.
|
||||
NICK_REG_MAIL_LINE_4
|
||||
PLEASE DON'T ANSWER TO THIS MAIL!
|
||||
This mailbox is not monitored. Replies to this e-mail will NOT get responded to.
|
||||
NICK_REG_MAIL_LINE_5
|
||||
%s administrators.
|
||||
Thanks for using %s
|
||||
NICK_GETPASS_PASSCODE_IS
|
||||
Passcode for %s is %s.
|
||||
NICK_FORCE_REG
|
||||
@@ -1680,13 +1680,13 @@ CHAN_SENDPASS_HEAD
|
||||
CHAN_SENDPASS_LINE_1
|
||||
You have requested to receive the password of channel %s by e-mail.
|
||||
CHAN_SENDPASS_LINE_2
|
||||
The password is %s. For security reasons, you should change it as soon as you receive this mail.
|
||||
The password is %s. For security reasons, you should change it as soon as possible.
|
||||
CHAN_SENDPASS_LINE_3
|
||||
If you don't know why this mail is sent to you, please ignore it silently.
|
||||
If you don't know why this mail has been sent to you, please ignore it.
|
||||
CHAN_SENDPASS_LINE_4
|
||||
PLEASE DON'T ANSWER TO THIS MAIL!
|
||||
This mailbox is not monitored. Replies to this e-mail will NOT be responded to.
|
||||
CHAN_SENDPASS_LINE_5
|
||||
%s administrators.
|
||||
Thanks for using %s
|
||||
CHAN_SENDPASS_OK
|
||||
Password of %s has been sent.
|
||||
|
||||
@@ -1786,6 +1786,10 @@ MEMO_SENT
|
||||
MEMO_MASS_SENT
|
||||
A massmemo has been sent to all registered users.
|
||||
|
||||
# STAFF responses
|
||||
MEMO_STAFF_SYNTAX
|
||||
STAFF memo-text
|
||||
|
||||
# CANCEL responses
|
||||
MEMO_CANCEL_SYNTAX
|
||||
CANCEL {nick | channel}
|
||||
@@ -1850,7 +1854,7 @@ MEMO_SET_UNKNOWN_OPTION
|
||||
|
||||
# SET NOTIFY responses
|
||||
MEMO_SET_NOTIFY_SYNTAX
|
||||
SET NOTIFY {ON | LOGON | NEW | MAIL | OFF }
|
||||
SET NOTIFY {ON | LOGON | NEW | MAIL | NOMAIL | OFF}
|
||||
MEMO_SET_NOTIFY_ON
|
||||
%s will now notify you of memos when you log on and when they are sent to you.
|
||||
MEMO_SET_NOTIFY_LOGON
|
||||
@@ -1966,9 +1970,9 @@ MEMO_MAIL_SUBJECT
|
||||
MEMO_MAIL_TEXT1
|
||||
Hi %s
|
||||
MEMO_MAIL_TEXT2
|
||||
You've just received a new memo from %s. This is memo number %d.
|
||||
You have just received a new memo from %s. This is memo number %d.
|
||||
MEMO_MAIL_TEXT3
|
||||
Memo Text:
|
||||
The text of the memo is:
|
||||
|
||||
# RSEND responses
|
||||
MEMO_RSEND_PLEASE_WAIT
|
||||
@@ -2014,7 +2018,7 @@ BOT_NOT_ON_CHANNEL
|
||||
|
||||
# Kick reasons (must be a single line)
|
||||
BOT_REASON_BADWORD
|
||||
Don't use the word \"%s\" on this channel!
|
||||
Don't use the word "%s" on this channel!
|
||||
BOT_REASON_BADWORD_GENTLE
|
||||
Watch your language!
|
||||
BOT_REASON_BOLD
|
||||
@@ -2861,6 +2865,8 @@ OPER_JUPE_SYNTAX
|
||||
JUPE servername [reason]
|
||||
OPER_JUPE_HOST_ERROR
|
||||
Please use a valid server name when juping
|
||||
OPER_JUPE_INVALID_SERVER
|
||||
You can not jupe your services server or your uplink server.
|
||||
|
||||
# RAW responses
|
||||
OPER_RAW_SYNTAX
|
||||
@@ -2880,7 +2886,7 @@ OPER_CANNOT_RESTART
|
||||
|
||||
# IGNORE respondes
|
||||
OPER_IGNORE_SYNTAX
|
||||
Syntax: IGNORE {ADD|DEL|LIST|CLEAR} [time] [nick | mask]
|
||||
IGNORE {ADD|DEL|LIST|CLEAR} [time] [nick | mask]
|
||||
OPER_IGNORE_VALID_TIME
|
||||
You have to enter a valid number as time.
|
||||
OPER_IGNORE_TIME_DONE
|
||||
@@ -2950,7 +2956,7 @@ OPER_STAFF_AFORMAT
|
||||
# DefCon Messages
|
||||
|
||||
OPER_DEFCON_SYNTAX
|
||||
Syntax: DEFCON [1|2|3|4|5]
|
||||
DEFCON [1|2|3|4|5]
|
||||
OPER_DEFCON_DENIED
|
||||
Services are in Defcon mode, Please try again later.
|
||||
OPER_DEFCON_NO_CONF
|
||||
@@ -3193,7 +3199,7 @@ NEWS_RANDOM_TEXT
|
||||
[Random News - %s] %s
|
||||
|
||||
NEWS_LOGON_SYNTAX
|
||||
Syntax: LOGONNEWS {ADD|DEL|LIST} [text|num]
|
||||
LOGONNEWS {ADD|DEL|LIST} [text|num]
|
||||
NEWS_LOGON_LIST_HEADER
|
||||
Logon news items:
|
||||
NEWS_LOGON_LIST_ENTRY
|
||||
@@ -3202,13 +3208,13 @@ NEWS_LOGON_LIST_ENTRY
|
||||
NEWS_LOGON_LIST_NONE
|
||||
There is no logon news.
|
||||
NEWS_LOGON_ADD_SYNTAX
|
||||
Syntax: LOGONNEWS ADD text
|
||||
LOGONNEWS ADD text
|
||||
NEWS_LOGON_ADD_FULL
|
||||
News list is full!
|
||||
NEWS_LOGON_ADDED
|
||||
Added new logon news item (#%d).
|
||||
NEWS_LOGON_DEL_SYNTAX
|
||||
Syntax: LOGONNEWS DEL {num | ALL}
|
||||
LOGONNEWS DEL {num | ALL}
|
||||
NEWS_LOGON_DEL_NOT_FOUND
|
||||
Logon news item #%d not found!
|
||||
NEWS_LOGON_DELETED
|
||||
@@ -3219,7 +3225,7 @@ NEWS_LOGON_DELETED_ALL
|
||||
All logon news items deleted.
|
||||
|
||||
NEWS_OPER_SYNTAX
|
||||
Syntax: OPERNEWS {ADD|DEL|LIST} [text|num]
|
||||
OPERNEWS {ADD|DEL|LIST} [text|num]
|
||||
NEWS_OPER_LIST_HEADER
|
||||
Oper news items:
|
||||
NEWS_OPER_LIST_ENTRY
|
||||
@@ -3228,13 +3234,13 @@ NEWS_OPER_LIST_ENTRY
|
||||
NEWS_OPER_LIST_NONE
|
||||
There is no oper news.
|
||||
NEWS_OPER_ADD_SYNTAX
|
||||
Syntax: OPERNEWS ADD text
|
||||
OPERNEWS ADD text
|
||||
NEWS_OPER_ADD_FULL
|
||||
News list is full!
|
||||
NEWS_OPER_ADDED
|
||||
Added new oper news item (#%d).
|
||||
NEWS_OPER_DEL_SYNTAX
|
||||
Syntax: OPERNEWS DEL {num | ALL}
|
||||
OPERNEWS DEL {num | ALL}
|
||||
NEWS_OPER_DEL_NOT_FOUND
|
||||
Oper news item #%d not found!
|
||||
NEWS_OPER_DELETED
|
||||
@@ -3245,7 +3251,7 @@ NEWS_OPER_DELETED_ALL
|
||||
All oper news items deleted.
|
||||
|
||||
NEWS_RANDOM_SYNTAX
|
||||
Syntax: RANDOMNEWS {ADD|DEL|LIST} [text|num]
|
||||
RANDOMNEWS {ADD|DEL|LIST} [text|num]
|
||||
NEWS_RANDOM_LIST_HEADER
|
||||
Random news items:
|
||||
NEWS_RANDOM_LIST_ENTRY
|
||||
@@ -3254,13 +3260,13 @@ NEWS_RANDOM_LIST_ENTRY
|
||||
NEWS_RANDOM_LIST_NONE
|
||||
There is no random news.
|
||||
NEWS_RANDOM_ADD_SYNTAX
|
||||
Syntax: RANDOMNEWS ADD text
|
||||
RANDOMNEWS ADD text
|
||||
NEWS_RANDOM_ADD_FULL
|
||||
News list is full!
|
||||
NEWS_RANDOM_ADDED
|
||||
Added new random news item (#%d).
|
||||
NEWS_RANDOM_DEL_SYNTAX
|
||||
Syntax: RANDOMNEWS DEL {num | ALL}
|
||||
RANDOMNEWS DEL {num | ALL}
|
||||
NEWS_RANDOM_DEL_NOT_FOUND
|
||||
Random news item #%d not found!
|
||||
NEWS_RANDOM_DELETED
|
||||
@@ -3277,14 +3283,12 @@ NEWS_HELP_LOGON
|
||||
|
||||
Edits or displays the list of logon news messages. When a
|
||||
user connects to the network, these messages will be sent
|
||||
to them. (However, no more than %s messages will be
|
||||
to them. (However, no more than %d messages will be
|
||||
sent in order to avoid flooding the user. If there are
|
||||
more news messages, only the most recent will be sent.)
|
||||
NewsCount can be configured in services.conf.
|
||||
|
||||
LOGONNEWS LIST may be used by any IRC operator to list the
|
||||
current news messages. ADD and DEL may only be used by
|
||||
Services admins.
|
||||
LOGONNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_OPER
|
||||
Syntax: OPERNEWS ADD text
|
||||
@@ -3293,14 +3297,12 @@ NEWS_HELP_OPER
|
||||
|
||||
Edits or displays the list of oper news messages. When a
|
||||
user opers up (with the /OPER command), these messages will
|
||||
be sent to them. (However, no more than %s messages will
|
||||
be sent to them. (However, no more than %d messages will
|
||||
be sent in order to avoid flooding the user. If there are
|
||||
more news messages, only the most recent will be sent.)
|
||||
NewsCount can be configured in services.conf.
|
||||
|
||||
OPERNEWS LIST may be used by any IRC operator to list the
|
||||
current oper news messages. ADD and DEL may only be used by
|
||||
Services admins.
|
||||
OPERNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_RANDOM
|
||||
Syntax: RANDOMNEWS ADD text
|
||||
@@ -3311,9 +3313,7 @@ NEWS_HELP_RANDOM
|
||||
user connects to the network, one (and only one) of the
|
||||
random news will be randomly chosen and sent to them.
|
||||
|
||||
RANDOMNEWS LIST may be used by any IRC operator to list the
|
||||
current news messages. ADD and DEL may only be used by
|
||||
Services admins.
|
||||
RANDOMNEWS may only be used by Services admins.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
@@ -3900,6 +3900,7 @@ NICK_HELP_LIST
|
||||
Lists all registered nicknames which match the given
|
||||
pattern, in nick!user@host format. Nicks with the
|
||||
PRIVATE option set will not be displayed.
|
||||
Note that a pattern preceding with a '#' specifies a range.
|
||||
|
||||
Examples:
|
||||
|
||||
@@ -3913,6 +3914,9 @@ NICK_HELP_LIST
|
||||
LIST *!*@*.bar.org
|
||||
Lists all nicks owned by users in the bar.org
|
||||
domain.
|
||||
|
||||
LIST #50-100
|
||||
Lists nicks numbers 50-100
|
||||
|
||||
NICK_HELP_ALIST
|
||||
Syntax: ALIST [level]
|
||||
@@ -4156,7 +4160,7 @@ CHAN_HELP_CMD_GETKEY
|
||||
CHAN_HELP_CMD_INFO
|
||||
INFO Lists information about the named registered channel
|
||||
CHAN_HELP_CMD_INVITE
|
||||
INVITE Tells ChanServ to invite you or a given nick into a channel
|
||||
INVITE Tells ChanServ to invite you into a channel
|
||||
CHAN_HELP_CMD_KICK
|
||||
KICK Kicks a selected nick from a channel
|
||||
CHAN_HELP_CMD_LIST
|
||||
@@ -4411,8 +4415,8 @@ CHAN_HELP_SET_PEACE
|
||||
Syntax: SET channel PEACE {ON | OFF}
|
||||
|
||||
Enables or disables the peace option for a channel.
|
||||
When peace is set, an user won't be able to kick,
|
||||
ban or remove a channel status of an user that has
|
||||
When peace is set, a user won't be able to kick,
|
||||
ban or remove a channel status of a user that has
|
||||
a level superior or equal to his via %S commands.
|
||||
|
||||
CHAN_HELP_SET_PRIVATE
|
||||
@@ -4426,11 +4430,8 @@ CHAN_HELP_SET_RESTRICTED
|
||||
Syntax: SET channel RESTRICTED {ON | OFF}
|
||||
|
||||
Enables or disables the restricted access option for a
|
||||
channel. When restricted access is set, users who would
|
||||
normally be disallowed from having channel operator
|
||||
privileges (users with negative access levels and, if
|
||||
secure ops is set, users not on the access list) will
|
||||
instead be kicked and banned from the channel.
|
||||
channel. When restricted access is set, users not on
|
||||
the access list will instead be kicked and banned from the channel.
|
||||
|
||||
CHAN_HELP_SET_SECURE
|
||||
Syntax: SET channel SECURE {ON | OFF}
|
||||
@@ -4993,6 +4994,7 @@ CHAN_HELP_CLEAR
|
||||
modes i,k,l,m,n,p,s,t).
|
||||
BANS Clears all bans on the channel.
|
||||
EXCEPTS Clears all excepts on the channel.
|
||||
INVITES Clears all invites on the channel.
|
||||
OPS Removes channel-operator status (mode +o) from
|
||||
all channel operators.
|
||||
HOPS Removes channel-halfoperator status (mode +h) from
|
||||
@@ -5248,7 +5250,7 @@ MEMO_HELP_SET
|
||||
on a specific option.
|
||||
|
||||
MEMO_HELP_SET_NOTIFY
|
||||
Syntax: SET NOTIFY {ON | LOGON | NEW | OFF}
|
||||
Syntax: SET NOTIFY {ON | LOGON | NEW | MAIL | NOMAIL | OFF}
|
||||
|
||||
Changes when you will be notified about new memos:
|
||||
|
||||
@@ -5259,6 +5261,9 @@ MEMO_HELP_SET_NOTIFY
|
||||
on or when you unset /AWAY.
|
||||
NEW You will only be notified of memos when they
|
||||
are sent to you.
|
||||
MAIL You will be notified of memos by email aswell as
|
||||
any other settings you have.
|
||||
NOMAIL You will not be notified of memos by email.
|
||||
OFF You will not receive any notification of memos.
|
||||
|
||||
ON is essentially LOGON and NEW combined.
|
||||
@@ -5415,7 +5420,7 @@ OPER_HELP_CMD_SHUTDOWN
|
||||
OPER_HELP_CMD_DEFCON
|
||||
DEFCON Manipulate the DefCon system
|
||||
OPER_HELP_CMD_CHANKILL
|
||||
CHANKILL Kill all users on a specific channel
|
||||
CHANKILL AKILL all users on a specific channel
|
||||
OPER_HELP_CMD_OLINE
|
||||
OLINE Give Operflags to a certain user
|
||||
OPER_HELP_CMD_UMODE
|
||||
@@ -6145,7 +6150,7 @@ BOT_HELP_KICK_BOLDS
|
||||
Sets the bolds kicker on or off. When enabled, this
|
||||
option tells the bot to kick users who use bolds.
|
||||
|
||||
ttb is the number of times an user can be kicked
|
||||
ttb is the number of times a user can be kicked
|
||||
before it get banned. Don't give ttb to disable
|
||||
the ban system once activated.
|
||||
|
||||
@@ -6155,7 +6160,7 @@ BOT_HELP_KICK_COLORS
|
||||
Sets the colors kicker on or off. When enabled, this
|
||||
option tells the bot to kick users who use colors.
|
||||
|
||||
ttb is the number of times an user can be kicked
|
||||
ttb is the number of times a user can be kicked
|
||||
before it get banned. Don't give ttb to disable
|
||||
the ban system once activated.
|
||||
|
||||
@@ -6165,7 +6170,7 @@ BOT_HELP_KICK_REVERSES
|
||||
Sets the reverses kicker on or off. When enabled, this
|
||||
option tells the bot to kick users who use reverses.
|
||||
|
||||
ttb is the number of times an user can be kicked
|
||||
ttb is the number of times a user can be kicked
|
||||
before it get banned. Don't give ttb to disable
|
||||
the ban system once activated.
|
||||
|
||||
@@ -6175,7 +6180,7 @@ BOT_HELP_KICK_UNDERLINES
|
||||
Sets the underlines kicker on or off. When enabled, this
|
||||
option tells the bot to kick users who use underlines.
|
||||
|
||||
ttb is the number of times an user can be kicked
|
||||
ttb is the number of times a user can be kicked
|
||||
before it get banned. Don't give ttb to disable
|
||||
the ban system once activated.
|
||||
|
||||
@@ -6191,7 +6196,7 @@ BOT_HELP_KICK_CAPS
|
||||
text line (if not given, it defaults to 10 characters
|
||||
and 25%%).
|
||||
|
||||
ttb is the number of times an user can be kicked
|
||||
ttb is the number of times a user can be kicked
|
||||
before it get banned. Don't give ttb to disable
|
||||
the ban system once activated.
|
||||
|
||||
@@ -6203,7 +6208,7 @@ BOT_HELP_KICK_FLOOD
|
||||
the channel using at least ln lines in secs seconds
|
||||
(if not given, it defaults to 6 lines in 10 seconds).
|
||||
|
||||
ttb is the number of times an user can be kicked
|
||||
ttb is the number of times a user can be kicked
|
||||
before it get banned. Don't give ttb to disable
|
||||
the ban system once activated.
|
||||
|
||||
@@ -6215,7 +6220,7 @@ BOT_HELP_KICK_REPEAT
|
||||
themselves num times (if num is not given, it
|
||||
defaults to 3).
|
||||
|
||||
ttb is the number of times an user can be kicked
|
||||
ttb is the number of times a user can be kicked
|
||||
before it get banned. Don't give ttb to disable
|
||||
the ban system once activated.
|
||||
|
||||
@@ -6230,7 +6235,7 @@ BOT_HELP_KICK_BADWORDS
|
||||
BADWORDS command. Type %R%S HELP BADWORDS for
|
||||
more information.
|
||||
|
||||
ttb is the number of times an user can be kicked
|
||||
ttb is the number of times a user can be kicked
|
||||
before it get banned. Don't give ttb to disable
|
||||
the ban system once activated.
|
||||
|
||||
@@ -6247,12 +6252,12 @@ BOT_HELP_BADWORDS
|
||||
|
||||
The BADWORDS ADD command adds the given word to the
|
||||
badword list. If SINGLE is specified, a kick will be
|
||||
done only if an user says the entire word. If START is
|
||||
specified, a kick will be done if an user says a word
|
||||
done only if a user says the entire word. If START is
|
||||
specified, a kick will be done if a user says a word
|
||||
that starts with word. If END is specified, a kick
|
||||
will be done if an user says a word that ends with
|
||||
will be done if a user says a word that ends with
|
||||
word. If you don't specify anything, a kick will
|
||||
be issued every time word is said by an user.
|
||||
be issued every time word is said by a user.
|
||||
|
||||
The BADWORDS DEL command removes the given word from the
|
||||
bad words list. If a list of entry numbers is given, those
|
||||
@@ -6345,7 +6350,7 @@ HOST_SETALL
|
||||
HOST_DELALL
|
||||
vhosts for group %s have been removed.
|
||||
HOST_DELALL_SYNTAX
|
||||
Syntax: DELALL <nick>.
|
||||
DELALL <nick>.
|
||||
HOST_IDENT_SETALL
|
||||
vhost for group %s set to %s@%s.
|
||||
HOST_SET_ERROR
|
||||
@@ -6359,9 +6364,9 @@ HOST_SET_IDENTTOOLONG
|
||||
HOST_NOREG
|
||||
User %s not found in the nickserv db.
|
||||
HOST_SET_SYNTAX
|
||||
Syntax %R%s set <nick> <hostmask>.
|
||||
SET <nick> <hostmask>.
|
||||
HOST_SETALL_SYNTAX
|
||||
Syntax %R%s setall <nick> <hostmask>.
|
||||
SETALL <nick> <hostmask>.
|
||||
HOST_DENIED
|
||||
Access Denied.
|
||||
HOST_NOT_ASSIGNED
|
||||
@@ -6377,17 +6382,17 @@ HOST_NOT_REGED
|
||||
HOST_DEL
|
||||
vhost for %s removed.
|
||||
HOST_DEL_SYNTAX
|
||||
Syntax: %R%s del <nick>.
|
||||
DEL <nick>.
|
||||
HOST_OFF
|
||||
Your vhost was removed and the normal cloaking restored.
|
||||
Your vhost was removed and the normal cloaking restored.
|
||||
HOST_OFF_UNREAL
|
||||
Your vhost was removed. To re-enable the standard host cloaking, type /mode %s +%s
|
||||
HOST_NO_VIDENT
|
||||
Your IRCD does not support vIdent's, if this is incorrect, please report this as a possible bug
|
||||
HOST_GROUP
|
||||
All vhost's in the group %s have been set to %s
|
||||
All vhosts in the group %s have been set to %s
|
||||
HOST_IDENT_GROUP
|
||||
All vhost's in the group %s have been set to %s@%s
|
||||
All vhosts in the group %s have been set to %s@%s
|
||||
HOST_LIST_FOOTER
|
||||
Displayed all records (Count: %d)
|
||||
HOST_LIST_RANGE_FOOTER
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# Spanish Language File.
|
||||
#
|
||||
# (C) 2003-2008 Anope Team
|
||||
# (C) 2003-2014 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Please read COPYING and README for furhter details.
|
||||
# Please read COPYING and README for further details.
|
||||
#
|
||||
# Based on the original code of Epona by Lara.
|
||||
# Based on the original code of Services by Andy Church.
|
||||
@@ -473,9 +473,9 @@ NICK_SET_PASSWORD_CHANGED_TO
|
||||
NICK_SET_LANGUAGE_SYNTAX
|
||||
SET LANGUAGE numero
|
||||
NICK_SET_LANGUAGE_UNKNOWN
|
||||
Numero de lenguage %d desconocido. Tipea %R%s HELP SET LANGUAGE para una lista de lenguages.
|
||||
Numero de lenguaje %d desconocido. Tipea %R%s HELP SET LANGUAGE para una lista de lenguajes.
|
||||
NICK_SET_LANGUAGE_CHANGED
|
||||
Lenguage cambiado a Español.
|
||||
Lenguaje cambiado a Español.
|
||||
|
||||
# SET URL responses
|
||||
NICK_SET_URL_CHANGED
|
||||
@@ -683,7 +683,7 @@ NICK_SASET_HIDE_STATUS_OFF
|
||||
|
||||
# SASET MSG responses
|
||||
NICK_SASET_MSG_SYNTAX
|
||||
SSAET nickname PRIVATE {ON | OFF}
|
||||
SSAET nickname MSG {ON | OFF}
|
||||
NICK_SASET_MSG_ON
|
||||
Services will now reply to %s with messages.
|
||||
NICK_SASET_MSG_OFF
|
||||
@@ -711,7 +711,7 @@ NICK_SASET_LANGUAGE_SYNTAX
|
||||
NICK_SASET_LANGUAGE_UNKNOWN
|
||||
Unknown language number %d. Type %R%s HELP SET LANGUAGE for a list of languages.
|
||||
NICK_SASET_LANGUAGE_CHANGED
|
||||
Language changed to Spanish.
|
||||
Language for %s changed to %s.
|
||||
|
||||
|
||||
# ACCESS responses
|
||||
@@ -1821,6 +1821,10 @@ MEMO_SENT
|
||||
MEMO_MASS_SENT
|
||||
Un massmemo ha sido enviado a todos los usuarios registrados.
|
||||
|
||||
# STAFF responses
|
||||
MEMO_STAFF_SYNTAX
|
||||
STAFF memo-text
|
||||
|
||||
# CANCEL responses
|
||||
MEMO_CANCEL_SYNTAX
|
||||
CANCEL {nick | canal}
|
||||
@@ -1887,7 +1891,7 @@ MEMO_SET_UNKNOWN_OPTION
|
||||
|
||||
# SET NOTIFY responses
|
||||
MEMO_SET_NOTIFY_SYNTAX
|
||||
SET NOTIFY {ON | LOGON | NEW | OFF}
|
||||
SET NOTIFY {ON | LOGON | NEW | MAIL | NOMAIL | OFF}
|
||||
MEMO_SET_NOTIFY_ON
|
||||
%s ahora te notificara de tus memos cuando te conectes y cuando te sean enviados.
|
||||
MEMO_SET_NOTIFY_LOGON
|
||||
@@ -2922,6 +2926,8 @@ OPER_JUPE_SYNTAX
|
||||
# RAW responses
|
||||
OPER_JUPE_HOST_ERROR
|
||||
Por favor usa un nombre de servidor valido cuando use JUPE
|
||||
OPER_JUPE_INVALID_SERVER
|
||||
You can not jupe your services server or your uplink server.
|
||||
|
||||
# RAW responses
|
||||
OPER_RAW_SYNTAX
|
||||
@@ -2942,7 +2948,7 @@ OPER_CANNOT_RESTART
|
||||
|
||||
# IGNORE responses
|
||||
OPER_IGNORE_SYNTAX
|
||||
Sintaxis: IGNORE {ADD|DEL|LIST|CLEAR} [tiempo] [nick | mask]
|
||||
IGNORE {ADD|DEL|LIST|CLEAR} [tiempo] [nick | mask]
|
||||
OPER_IGNORE_VALID_TIME
|
||||
Debes ingresar un numero valido como tiempo.
|
||||
OPER_IGNORE_TIME_DONE
|
||||
@@ -3034,7 +3040,7 @@ OPER_STAFF_AFORMAT
|
||||
# DefCon Messages
|
||||
|
||||
OPER_DEFCON_SYNTAX
|
||||
Sintaxis: DEFCON [1|2|3|4|5]
|
||||
DEFCON [1|2|3|4|5]
|
||||
OPER_DEFCON_DENIED
|
||||
Los servicios estan deshabilitados temporalmente, por favor intenta mas tarde
|
||||
OPER_DEFCON_NO_CONF
|
||||
@@ -3307,7 +3313,7 @@ NEWS_RANDOM_TEXT
|
||||
[Noticias al Azar - %s] %s
|
||||
|
||||
NEWS_LOGON_SYNTAX
|
||||
Sintaxis: LOGONNEWS {ADD|DEL|LIST} [texto|numero]
|
||||
LOGONNEWS {ADD|DEL|LIST} [texto|numero]
|
||||
NEWS_LOGON_LIST_HEADER
|
||||
Noticias de entrada:
|
||||
NEWS_LOGON_LIST_ENTRY
|
||||
@@ -3316,13 +3322,13 @@ NEWS_LOGON_LIST_ENTRY
|
||||
NEWS_LOGON_LIST_NONE
|
||||
No hay Noticias de entrada.
|
||||
NEWS_LOGON_ADD_SYNTAX
|
||||
Sintaxis: LOGONNEWS ADD texto
|
||||
LOGONNEWS ADD texto
|
||||
NEWS_LOGON_ADD_FULL
|
||||
La lista de noticias esta llena!
|
||||
NEWS_LOGON_ADDED
|
||||
Nueva noticia de entrada anadida (#%d).
|
||||
NEWS_LOGON_DEL_SYNTAX
|
||||
Sintaxis: LOGONNEWS DEL {numero | ALL}
|
||||
LOGONNEWS DEL {numero | ALL}
|
||||
NEWS_LOGON_DEL_NOT_FOUND
|
||||
Noticia de entrada #%d no encontrada!
|
||||
NEWS_LOGON_DELETED
|
||||
@@ -3359,7 +3365,7 @@ NEWS_OPER_DELETED_ALL
|
||||
Todas las noticias de oper borradas.
|
||||
|
||||
NEWS_RANDOM_SYNTAX
|
||||
Sintaxis: RANDOMNEWS {ADD|DEL|LIST} [texto|numero]
|
||||
RANDOMNEWS {ADD|DEL|LIST} [texto|numero]
|
||||
NEWS_RANDOM_LIST_HEADER
|
||||
Noticias al Azar:
|
||||
NEWS_RANDOM_LIST_ENTRY
|
||||
@@ -3368,13 +3374,13 @@ NEWS_RANDOM_LIST_ENTRY
|
||||
NEWS_RANDOM_LIST_NONE
|
||||
No hay Noticias al azar.
|
||||
NEWS_RANDOM_ADD_SYNTAX
|
||||
Sintaxis: RANDOMNEWS ADD texto
|
||||
RANDOMNEWS ADD texto
|
||||
NEWS_RANDOM_ADD_FULL
|
||||
La lista de noticias esta llena!
|
||||
NEWS_RANDOM_ADDED
|
||||
Nueva noticia al azar anadida (#%d).
|
||||
NEWS_RANDOM_DEL_SYNTAX
|
||||
Sintaxis: RANDOMNEWS DEL {numero | ALL}
|
||||
RANDOMNEWS DEL {numero | ALL}
|
||||
NEWS_RANDOM_DEL_NOT_FOUND
|
||||
Noticia al azar #%d no encontrada!
|
||||
NEWS_RANDOM_DELETED
|
||||
@@ -3391,14 +3397,12 @@ NEWS_HELP_LOGON
|
||||
|
||||
Edits or displays the list of logon news messages. When a
|
||||
user connects to the network, these messages will be sent
|
||||
to them. (However, no more than %s messages will be
|
||||
to them. (However, no more than %d messages will be
|
||||
sent in order to avoid flooding the user. If there are
|
||||
more news messages, only the most recent will be sent.)
|
||||
NewsCount can be configured in services.conf.
|
||||
|
||||
LOGONNEWS LIST may be used by any IRC operator to list the
|
||||
current news messages. ADD and DEL may only be used by
|
||||
Services admins.
|
||||
LOGONNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_OPER
|
||||
Syntax: OPERNEWS ADD text
|
||||
@@ -3407,14 +3411,12 @@ NEWS_HELP_OPER
|
||||
|
||||
Edits or displays the list of oper news messages. When a
|
||||
user opers up (with the /OPER command), these messages will
|
||||
be sent to them. (However, no more than %s messages will
|
||||
be sent to them. (However, no more than %d messages will
|
||||
be sent in order to avoid flooding the user. If there are
|
||||
more news messages, only the most recent will be sent.)
|
||||
NewsCount can be configured in services.conf.
|
||||
|
||||
OPERNEWS LIST may be used by any IRC operator to list the
|
||||
current oper news messages. ADD and DEL may only be used by
|
||||
Services admins.
|
||||
OPERNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_RANDOM
|
||||
Sintaxis: RANDOMNEWS ADD texto
|
||||
@@ -3425,9 +3427,7 @@ NEWS_HELP_RANDOM
|
||||
Cuando un usuario se conecta a la red, uno (y solo uno) de los
|
||||
mensajes al azar sera elejido y enviado a ellos.
|
||||
|
||||
RANDOMNEWS LIST puede ser usado por cualquier operador de
|
||||
IRC para listar la lista de noticias actual. ADD y DEL
|
||||
solo pueden ser usados por administradores de Servicios.
|
||||
RANDOMNEWS may only be used by Services admins.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
@@ -4318,7 +4318,7 @@ CHAN_HELP_CMD_GETKEY
|
||||
CHAN_HELP_CMD_INFO
|
||||
INFO Lists information about the named registered channel
|
||||
CHAN_HELP_CMD_INVITE
|
||||
INVITE Tells ChanServ to invite you or a given nick into a channel
|
||||
INVITE Tells ChanServ to invite you into a channel
|
||||
CHAN_HELP_CMD_KICK
|
||||
KICK Kicks a selected nick from a channel
|
||||
CHAN_HELP_CMD_LIST
|
||||
@@ -4604,13 +4604,9 @@ CHAN_HELP_SET_PRIVATE
|
||||
CHAN_HELP_SET_RESTRICTED
|
||||
Sintaxis: SET canal RESTRICTED {ON | OFF}
|
||||
|
||||
Habilita o deshabilita la opcion de acceso restringido
|
||||
para un canal. Cuando el acceso restringido esta
|
||||
seteado, Los usuarios seran inhabilitados de tener
|
||||
privilegios de operador de canal. (usuarios con acceso
|
||||
negativo y, si seguridad de ops esta seteada,
|
||||
usuarios no en la lista de acceso) seran en vez
|
||||
kickeados y baneados del canal.
|
||||
Enables or disables the restricted access option for a
|
||||
channel. When restricted access is set, users not on
|
||||
the access list will instead be kicked and banned from the channel.
|
||||
|
||||
CHAN_HELP_SET_SECURE
|
||||
Sintaxis: SET canal SECURE {ON | OFF}
|
||||
@@ -5195,6 +5191,7 @@ CHAN_HELP_CLEAR
|
||||
limpia los modos i,k,l,m,n,p,s,t).
|
||||
BANS Limpia todos los bans en el canal.
|
||||
EXCEPTS Limpia todos los excepts en el canal.
|
||||
INVITES Clears all invites on the channel.
|
||||
OPS Remueve estatus de operador de canal(modo +o)
|
||||
de todos los operadores de canal.
|
||||
HOPS Removes channel-halfoperator status (mode +h) from
|
||||
@@ -5469,7 +5466,7 @@ MEMO_HELP_SET
|
||||
acerca de una opcion especifica.
|
||||
|
||||
MEMO_HELP_SET_NOTIFY
|
||||
Sintaxis: SET NOTIFY {ON | LOGON | NEW | OFF}
|
||||
Sintaxis: SET NOTIFY {ON | LOGON | NEW | MAIL | NOMAIL | OFF}
|
||||
|
||||
Cambia cuando seras notificado acerca de nuevos memos:
|
||||
|
||||
@@ -5480,6 +5477,9 @@ MEMO_HELP_SET_NOTIFY
|
||||
o cuando saques tu /AWAY.
|
||||
NEW Solo seras notificado de memos cuando te sean
|
||||
enviados.
|
||||
MAIL You will be notified of memos by email aswell as
|
||||
any other settings you have.
|
||||
NOMAIL You will not be notified of memos by email.
|
||||
OFF No recibiras ninguna notificacion por memos.
|
||||
|
||||
ON es escencialmente LOGON y NEW combinados.
|
||||
@@ -5664,7 +5664,7 @@ OPER_HELP_CMD_SHUTDOWN
|
||||
OPER_HELP_CMD_DEFCON
|
||||
DEFCON Manipulate the DefCon system
|
||||
OPER_HELP_CMD_CHANKILL
|
||||
CHANKILL Kill all users on a specific channel
|
||||
CHANKILL AKILL all users on a specific channel
|
||||
OPER_HELP_CMD_OLINE
|
||||
OLINE Otorga privilegios IRCOP temporarios
|
||||
OPER_HELP_CMD_UMODE
|
||||
@@ -6682,7 +6682,7 @@ HOST_SETALL
|
||||
HOST_DELALL
|
||||
El vhost para el group %s ha sido removido.
|
||||
HOST_DELALL_SYNTAX
|
||||
Sintaxis: DELALL <nick>.
|
||||
DELALL <nick>.
|
||||
HOST_IDENT_SETALL
|
||||
vhost para el grupo %s seteado a %s@%s.
|
||||
HOST_SET_ERROR
|
||||
@@ -6696,9 +6696,9 @@ HOST_SET_IDENTTOOLONG
|
||||
HOST_NOREG
|
||||
Usuario %s no encontrado en la base de datos de nickserv.
|
||||
HOST_SET_SYNTAX
|
||||
Sintaxis %R%s set <nick> <hostmask>.
|
||||
SET <nick> <hostmask>.
|
||||
HOST_SETALL_SYNTAX
|
||||
Sintaxis %R%s setall <nick> <hostmask>.
|
||||
SETALL <nick> <hostmask>.
|
||||
HOST_DENIED
|
||||
Acceso Denegado.
|
||||
HOST_NOT_ASSIGNED
|
||||
@@ -6714,7 +6714,7 @@ HOST_NOT_REGED
|
||||
HOST_DEL
|
||||
vhost para %s removido.
|
||||
HOST_DEL_SYNTAX
|
||||
Sintaxis: %R%s del <nick>.
|
||||
DEL <nick>.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# Greek language file.
|
||||
#
|
||||
# (C) 2003-2008 Anope Team
|
||||
# (C) 2003-2014 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Please read COPYING and README for furhter details.
|
||||
# Please read COPYING and README for further details.
|
||||
#
|
||||
# Based on the original code of Epona by Lara.
|
||||
# Based on the original code of Services by Andy Church.
|
||||
@@ -677,7 +677,7 @@ NICK_SASET_HIDE_STATUS_OFF
|
||||
|
||||
# SASET MSG responses
|
||||
NICK_SASET_MSG_SYNTAX
|
||||
SSAET nickname PRIVATE {ON | OFF}
|
||||
SSAET nickname MSG {ON | OFF}
|
||||
NICK_SASET_MSG_ON
|
||||
Services will now reply to %s with messages.
|
||||
NICK_SASET_MSG_OFF
|
||||
@@ -705,7 +705,7 @@ NICK_SASET_LANGUAGE_SYNTAX
|
||||
NICK_SASET_LANGUAGE_UNKNOWN
|
||||
Unknown language number %d. Type %R%s HELP SET LANGUAGE for a list of languages.
|
||||
NICK_SASET_LANGUAGE_CHANGED
|
||||
Language changed to Greek.
|
||||
Language for %s changed to %s.
|
||||
|
||||
|
||||
# ACCESS responses
|
||||
@@ -1821,7 +1821,11 @@ MEMO_SENT
|
||||
|
||||
# CANCEL responses
|
||||
MEMO_MASS_SENT
|
||||
A massmemo has been sent to all registered users.
|
||||
A mass memo has been sent to all registered users.
|
||||
|
||||
# STAFF responses
|
||||
MEMO_STAFF_SYNTAX
|
||||
STAFF memo-text
|
||||
|
||||
# CANCEL responses
|
||||
MEMO_CANCEL_SYNTAX
|
||||
@@ -1889,7 +1893,7 @@ MEMO_SET_UNKNOWN_OPTION
|
||||
|
||||
# SET NOTIFY responses
|
||||
MEMO_SET_NOTIFY_SYNTAX
|
||||
SET NOTIFY {ON | LOGON | NEW | OFF}
|
||||
SET NOTIFY {ON | LOGON | NEW | MAIL | NOMAIL | OFF}
|
||||
MEMO_SET_NOTIFY_ON
|
||||
%s áðü ôþñá üôáí èá êÜíåéò åíôïëÞ logon èá âëÝðåéò ôá ìçíýìáôá ðïõ èá óïõ óôÝëíïõí êáèþò èáóáé óôï äßêôõï.
|
||||
MEMO_SET_NOTIFY_LOGON
|
||||
@@ -2952,6 +2956,8 @@ OPER_JUPE_SYNTAX
|
||||
# RAW responses
|
||||
OPER_JUPE_HOST_ERROR
|
||||
Please use a valid server name when juping
|
||||
OPER_JUPE_INVALID_SERVER
|
||||
You can not jupe your services server or your uplink server.
|
||||
|
||||
# RAW responses
|
||||
OPER_RAW_SYNTAX
|
||||
@@ -2971,7 +2977,7 @@ OPER_CANNOT_RESTART
|
||||
|
||||
# LISTIGNORE responses
|
||||
OPER_IGNORE_SYNTAX
|
||||
Syntax: IGNORE {ADD|DEL|LIST|CLEAR} [time] [nick | mask]
|
||||
IGNORE {ADD|DEL|LIST|CLEAR} [time] [nick | mask]
|
||||
OPER_IGNORE_VALID_TIME
|
||||
You have to enter a valid number as time.
|
||||
OPER_IGNORE_TIME_DONE
|
||||
@@ -3063,7 +3069,7 @@ OPER_STAFF_AFORMAT
|
||||
# DefCon Messages
|
||||
|
||||
OPER_DEFCON_SYNTAX
|
||||
Syntax: DEFCON [1|2|3|4|5]
|
||||
DEFCON [1|2|3|4|5]
|
||||
OPER_DEFCON_DENIED
|
||||
This service is temporarly disabled, please try again later
|
||||
OPER_DEFCON_NO_CONF
|
||||
@@ -3273,7 +3279,7 @@ OPER_HELP_DEFCON
|
||||
Syntax: DEFCON [1|2|3|4|5]
|
||||
|
||||
The defcon system can be used to implement a pre-defined
|
||||
set of restrictions to services useful during an attemtped
|
||||
set of restrictions to services useful during an attempted
|
||||
attack on the network.
|
||||
|
||||
OPER_HELP_DEFCON_NO_NEW_CHANNELS
|
||||
@@ -3325,7 +3331,7 @@ NEWS_RANDOM_TEXT
|
||||
[ÍÝá ó÷åôéêÜ ìå ôï äßêôõï - %s] %s
|
||||
|
||||
NEWS_LOGON_SYNTAX
|
||||
Óýíôáîç: LOGONNEWS {ADD|DEL|LIST} [ðåñéå÷üìåíï|íïýìåñï]
|
||||
LOGONNEWS {ADD|DEL|LIST} [ðåñéå÷üìåíï|íïýìåñï]
|
||||
NEWS_LOGON_LIST_HEADER
|
||||
Êáíïíéóìïß:
|
||||
NEWS_LOGON_LIST_ENTRY
|
||||
@@ -3334,13 +3340,13 @@ NEWS_LOGON_LIST_ENTRY
|
||||
NEWS_LOGON_LIST_NONE
|
||||
Äåí õðÜñ÷ïõí êáíïíéóìïß Þ ðëçñïöïñßåò.
|
||||
NEWS_LOGON_ADD_SYNTAX
|
||||
Óýíôáîç: LOGONNEWS ADD ðåñéå÷üìåíï
|
||||
LOGONNEWS ADD ðåñéå÷üìåíï
|
||||
NEWS_LOGON_ADD_FULL
|
||||
Ç ëßóôá ôùí íÝùí åßíáé ãåìÜôç!
|
||||
NEWS_LOGON_ADDED
|
||||
ÐñïóôÝèçêå Ýíáò êáíïíéóìüò Þ ðëçñïöïñßá óôç èÝóç (#%d).
|
||||
NEWS_LOGON_DEL_SYNTAX
|
||||
Óýíôáîç: LOGONNEWS DEL {íïýìåñï | ALL}
|
||||
LOGONNEWS DEL {íïýìåñï | ALL}
|
||||
NEWS_LOGON_DEL_NOT_FOUND
|
||||
Êáíïíéóìüò óôç èÝóç #%d äåí âñÝèçêå!
|
||||
NEWS_LOGON_DELETED
|
||||
@@ -3377,7 +3383,7 @@ NEWS_OPER_DELETED_ALL
|
||||
¼ëá ôá íÝá ãéá ôïõò opers äéáãñÜöçêáí.
|
||||
|
||||
NEWS_RANDOM_SYNTAX
|
||||
Óýíôáîç: RANDOMNEWS {ADD|DEL|LIST} [ðåñéå÷üìåíï|íïýìåñï]
|
||||
RANDOMNEWS {ADD|DEL|LIST} [ðåñéå÷üìåíï|íïýìåñï]
|
||||
NEWS_RANDOM_LIST_HEADER
|
||||
ÍÝá ãéá ôï äßêôõï:
|
||||
NEWS_RANDOM_LIST_ENTRY
|
||||
@@ -3386,13 +3392,13 @@ NEWS_RANDOM_LIST_ENTRY
|
||||
NEWS_RANDOM_LIST_NONE
|
||||
Äåí õðÜñ÷ïõí íÝá.
|
||||
NEWS_RANDOM_ADD_SYNTAX
|
||||
Óýíôáîç: RANDOMNEWS ADD ðåñéå÷üìåíï
|
||||
RANDOMNEWS ADD ðåñéå÷üìåíï
|
||||
NEWS_RANDOM_ADD_FULL
|
||||
Ç ëßóôá åßíáé ãåìÜôç!
|
||||
NEWS_RANDOM_ADDED
|
||||
ÐñïóèÝèçêå Ýíá íÝï ìÞíõìá óôçí èÝóç (#%d).
|
||||
NEWS_RANDOM_DEL_SYNTAX
|
||||
Óýíôáîç: RANDOMNEWS DEL {íïýìåñï | ALL}
|
||||
RANDOMNEWS DEL {íïýìåñï | ALL}
|
||||
NEWS_RANDOM_DEL_NOT_FOUND
|
||||
Ôï ìÞíõìá óôçí èÝóç #%d äåí âñÝèçêå!
|
||||
NEWS_RANDOM_DELETED
|
||||
@@ -3409,14 +3415,12 @@ NEWS_HELP_LOGON
|
||||
|
||||
Edits or displays the list of logon news messages. When a
|
||||
user connects to the network, these messages will be sent
|
||||
to them. (However, no more than %s messages will be
|
||||
to them. (However, no more than %d messages will be
|
||||
sent in order to avoid flooding the user. If there are
|
||||
more news messages, only the most recent will be sent.)
|
||||
NewsCount can be configured in services.conf.
|
||||
|
||||
LOGONNEWS LIST may be used by any IRC operator to list the
|
||||
current news messages. ADD and DEL may only be used by
|
||||
Services admins.
|
||||
LOGONNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_OPER
|
||||
Syntax: OPERNEWS ADD text
|
||||
@@ -3425,14 +3429,12 @@ NEWS_HELP_OPER
|
||||
|
||||
Edits or displays the list of oper news messages. When a
|
||||
user opers up (with the /OPER command), these messages will
|
||||
be sent to them. (However, no more than %s messages will
|
||||
be sent to them. (However, no more than %d messages will
|
||||
be sent in order to avoid flooding the user. If there are
|
||||
more news messages, only the most recent will be sent.)
|
||||
NewsCount can be configured in services.conf.
|
||||
|
||||
OPERNEWS LIST may be used by any IRC operator to list the
|
||||
current oper news messages. ADD and DEL may only be used by
|
||||
Services admins.
|
||||
OPERNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_RANDOM
|
||||
Óýíôáîç: RANDOMNEWS ADD ðåñéå÷üìåíá
|
||||
@@ -3443,9 +3445,7 @@ NEWS_HELP_RANDOM
|
||||
¼ôáí Ýíáò ÷ñÞóôçò óõíäåèåß óôï äßêôõï, Ýíá (êáé ìüíï Ýíá) áðü ôá
|
||||
ìçíýìáôá èá åðéëå÷èåß ôõ÷áßá êáé èá óôáëåß.
|
||||
|
||||
RANDOMNEWS LIST ìðïñåß íá ÷ñçóéìïðïéçèåß áðü ôïõò IRC operators ãéá íá
|
||||
äïýí ôá ìçíýìáôá. ADD êáé DEL ìðïñåß íá ÷ñçóéìïðïéÞóïõí ïé
|
||||
åðéêåöáëåßò ôùí õðçñåóéþí (Services admins).
|
||||
RANDOMNEWS may only be used by Services admins.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
@@ -4337,7 +4337,7 @@ CHAN_HELP_CMD_GETKEY
|
||||
CHAN_HELP_CMD_INFO
|
||||
INFO Lists information about the named registered channel
|
||||
CHAN_HELP_CMD_INVITE
|
||||
INVITE Tells ChanServ to invite you or a given nick into a channel
|
||||
INVITE Tells ChanServ to invite you into a channel
|
||||
CHAN_HELP_CMD_KICK
|
||||
KICK Kicks a selected nick from a channel
|
||||
CHAN_HELP_CMD_LIST
|
||||
@@ -4608,10 +4608,9 @@ CHAN_HELP_SET_PRIVATE
|
||||
CHAN_HELP_SET_RESTRICTED
|
||||
Óýíôáîç: SET êáíÜëé RESTRICTED {ON | OFF}
|
||||
|
||||
Åíåñãïðïéåß Þ áðåñíåñãïðïéåß ôçí restricted access åðéëïãÞ ôïõ
|
||||
êáíáëéïý. ¼ôáí åíåñãïðéçèåß ç restricted access , ÷ñÞóôåò ïé
|
||||
ïðïßïé äåí Ý÷ïõí access óôï êáíÜëé, ïé õðçñåóßåò èá ôïõò êÜíïõí
|
||||
kick êáé ban áðü ôï êáíÜëé.
|
||||
Enables or disables the restricted access option for a
|
||||
channel. When restricted access is set, users not on
|
||||
the access list will instead be kicked and banned from the channel.
|
||||
|
||||
CHAN_HELP_SET_SECURE
|
||||
Óýíôáîç: SET êáíÜëé SECURE {ON | OFF}
|
||||
@@ -5167,6 +5166,7 @@ CHAN_HELP_CLEAR
|
||||
modes i,k,l,m,n,p,s,t).
|
||||
BANS Êáèáñßæåé üëá ôá bans áðü ôï êáíÜëé.
|
||||
EXCEPTS Êáèáñßæåé üëá ôá excepts áðü ôï êáíÜëé.
|
||||
INVITES Clears all invites on the channel.
|
||||
OPS Áöáéñåß ôï channel-operator status (mode +o) áðü
|
||||
üëïõò ôïõò channel operators.
|
||||
HOPS Removes channel-halfoperator status (mode +h) from
|
||||
@@ -5441,7 +5441,7 @@ MEMO_HELP_SET
|
||||
óå ìéá óõãêåêñéìÝíç åðéëïãÞ.
|
||||
|
||||
MEMO_HELP_SET_NOTIFY
|
||||
Óýíôáîç: SET NOTIFY {ON | LOGON | NEW | OFF}
|
||||
Óýíôáîç: SET NOTIFY {ON | LOGON | NEW | MAIL | NOMAIL | OFF}
|
||||
|
||||
ÁëëáãÝò ãéá ôï ðùò èÝëåôå íá åíçìåñþíåóôå ãéá íÝá ìçíýìáôá:
|
||||
|
||||
@@ -5452,6 +5452,9 @@ MEMO_HELP_SET_NOTIFY
|
||||
on Þ üôáí èá åðáíÝñ÷åóôå áðü /AWAY.
|
||||
NEW Èá åíçìåñþíåóôå ãéá ôá ìçíýìáôá óáò ìüíï üôáí èá óáò
|
||||
ôá óôÝëíïõí.
|
||||
MAIL You will be notified of memos by email aswell as
|
||||
any other settings you have.
|
||||
NOMAIL You will not be notified of memos by email.
|
||||
OFF Äåí èá åíçìåñþíåóôå ðïôÝ ãéá íÝá ìçíýìáôá Þ ðáëéÜ.
|
||||
|
||||
Ç åðéëïãÞ ON ðéï ïõóéþäçò,ç LOGON êáé ç NEW óõíäéáóôéêÞ.
|
||||
@@ -5633,7 +5636,7 @@ OPER_HELP_CMD_SHUTDOWN
|
||||
OPER_HELP_CMD_DEFCON
|
||||
DEFCON Manipulate the DefCon system
|
||||
OPER_HELP_CMD_CHANKILL
|
||||
CHANKILL Kill all users on a specific channel
|
||||
CHANKILL AKILL all users on a specific channel
|
||||
OPER_HELP_CMD_OLINE
|
||||
OLINE Give Operflags to a certain user
|
||||
OPER_HELP_CMD_UMODE
|
||||
@@ -6596,7 +6599,7 @@ HOST_SETALL
|
||||
HOST_DELALL
|
||||
vhosts for group %s have been removed.
|
||||
HOST_DELALL_SYNTAX
|
||||
Syntax: DELALL <nick>.
|
||||
DELALL <nick>.
|
||||
HOST_IDENT_SETALL
|
||||
vhost for group %s set to %s@%s.
|
||||
HOST_SET_ERROR
|
||||
@@ -6610,9 +6613,9 @@ HOST_SET_IDENTTOOLONG
|
||||
HOST_NOREG
|
||||
User %s not found in the nickserv db.
|
||||
HOST_SET_SYNTAX
|
||||
Syntax %R%s set <nick> <hostmask>.
|
||||
SET <nick> <hostmask>.
|
||||
HOST_SETALL_SYNTAX
|
||||
Syntax %R%s setall <nick> <hostmask>.
|
||||
SETALL <nick> <hostmask>.
|
||||
HOST_DENIED
|
||||
Access Denied.
|
||||
HOST_NOT_ASSIGNED
|
||||
@@ -6628,7 +6631,7 @@ HOST_NOT_REGED
|
||||
HOST_DEL
|
||||
vhost for %s removed.
|
||||
HOST_DEL_SYNTAX
|
||||
Syntax: %R%s del <nick>.
|
||||
DEL <nick>.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
@@ -6648,9 +6651,9 @@ HOST_NO_VIDENT
|
||||
#
|
||||
###########################################################################
|
||||
HOST_GROUP
|
||||
All vhost's in the group %s have been set to %s
|
||||
All vhosts in the group %s have been set to %s
|
||||
HOST_IDENT_GROUP
|
||||
All vhost's in the group %s have been set to %s@%s
|
||||
All vhosts in the group %s have been set to %s@%s
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
|
||||
+38
-38
@@ -1,6 +1,6 @@
|
||||
# Hungarian (magyar) language file.
|
||||
#
|
||||
# (C) 2003-2008 Anope Team
|
||||
# (C) 2003-2014 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Translated by:
|
||||
@@ -9,7 +9,7 @@
|
||||
# CJB CHAT Magyarország, http://cjbchat.hu
|
||||
# Ez a fordítás a CJB Chat megrendelésére készült.
|
||||
#
|
||||
# Please read COPYING and README for furhter details.
|
||||
# Please read COPYING and README for further details.
|
||||
#
|
||||
# Based on the original code of Epona by Lara.
|
||||
# Based on the original code of Services by Andy Church.
|
||||
@@ -676,7 +676,7 @@ NICK_SASET_HIDE_STATUS_OFF
|
||||
|
||||
# SASET MSG responses
|
||||
NICK_SASET_MSG_SYNTAX
|
||||
SSAET nickname PRIVATE {ON | OFF}
|
||||
SSAET nickname MSG {ON | OFF}
|
||||
NICK_SASET_MSG_ON
|
||||
Services will now reply to %s with messages.
|
||||
NICK_SASET_MSG_OFF
|
||||
@@ -704,7 +704,7 @@ NICK_SASET_LANGUAGE_SYNTAX
|
||||
NICK_SASET_LANGUAGE_UNKNOWN
|
||||
Unknown language number %d. Type %R%s HELP SET LANGUAGE for a list of languages.
|
||||
NICK_SASET_LANGUAGE_CHANGED
|
||||
Language changed to Hungarian.
|
||||
Language for %s changed to %s.
|
||||
|
||||
|
||||
# ACCESS responses
|
||||
@@ -1826,6 +1826,10 @@ MEMO_CANCEL_NONE
|
||||
Nincs visszavont memo üzenet.
|
||||
MEMO_CANCELLED
|
||||
%s részére küldött utolsó memo üzenet visszavonva.
|
||||
|
||||
# STAFF responses
|
||||
MEMO_STAFF_SYNTAX
|
||||
STAFF memo-text
|
||||
|
||||
# LIST válaszok
|
||||
MEMO_LIST_SYNTAX
|
||||
@@ -1881,7 +1885,7 @@ MEMO_SET_UNKNOWN_OPTION
|
||||
|
||||
# SET NOTIFY válaszok
|
||||
MEMO_SET_NOTIFY_SYNTAX
|
||||
SET NOTIFY {ON | LOGON | NEW | OFF}
|
||||
SET NOTIFY {ON | LOGON | NEW | MAIL | NOMAIL | OFF}
|
||||
MEMO_SET_NOTIFY_ON
|
||||
%s értesíteni fog az üzenetekrõl csatlakozáskor.
|
||||
MEMO_SET_NOTIFY_LOGON
|
||||
@@ -2911,6 +2915,8 @@ OPER_JUPE_SYNTAX
|
||||
JUPE szervernév [leírás]
|
||||
OPER_JUPE_HOST_ERROR
|
||||
Kérlek használj érvényes szerver nevet amikor jupolsz!
|
||||
OPER_JUPE_INVALID_SERVER
|
||||
You can not jupe your services server or your uplink server.
|
||||
|
||||
# RAW válaszok
|
||||
OPER_RAW_SYNTAX
|
||||
@@ -2932,7 +2938,7 @@ OPER_CANNOT_RESTART
|
||||
|
||||
# IGNORE válaszok
|
||||
OPER_IGNORE_SYNTAX
|
||||
Syntax: IGNORE {ADD|DEL|LIST|CLEAR} [idõ] [nick | mask]
|
||||
IGNORE {ADD|DEL|LIST|CLEAR} [idõ] [nick | mask]
|
||||
OPER_IGNORE_VALID_TIME
|
||||
Használj érvényes számot idõnek.
|
||||
(Adj meg érvényes számot az idõhöz.)
|
||||
@@ -3005,7 +3011,7 @@ OPER_STAFF_AFORMAT
|
||||
# DefCon Üzenet
|
||||
|
||||
OPER_DEFCON_SYNTAX
|
||||
Syntax: DEFCON [1|2|3|4|5]
|
||||
DEFCON [1|2|3|4|5]
|
||||
OPER_DEFCON_DENIED
|
||||
Szervíz Defcon módban fut, próbáld késõbb.
|
||||
OPER_DEFCON_NO_CONF
|
||||
@@ -3259,7 +3265,7 @@ NEWS_RANDOM_TEXT
|
||||
[Véletlenszerû Hír] - %s %s
|
||||
|
||||
NEWS_LOGON_SYNTAX
|
||||
Syntax: LOGONNEWS { ADD | DEL | LIST } [szöveg|szám]
|
||||
LOGONNEWS { ADD | DEL | LIST } [szöveg|szám]
|
||||
NEWS_LOGON_LIST_HEADER
|
||||
Fellépési hírek:
|
||||
NEWS_LOGON_LIST_ENTRY
|
||||
@@ -3268,13 +3274,13 @@ NEWS_LOGON_LIST_ENTRY
|
||||
NEWS_LOGON_LIST_NONE
|
||||
Nincs fellépõ üzenet.
|
||||
NEWS_LOGON_ADD_SYNTAX
|
||||
Syntax: LOGONNEWS ADD szöveg
|
||||
LOGONNEWS ADD szöveg
|
||||
NEWS_LOGON_ADD_FULL
|
||||
A Hírlista tele!
|
||||
NEWS_LOGON_ADDED
|
||||
Hozzáadva az új fellépési hír: (#%d).
|
||||
NEWS_LOGON_DEL_SYNTAX
|
||||
Syntax: LOGONNEWS DEL {szám | ALL}
|
||||
LOGONNEWS DEL {szám | ALL}
|
||||
NEWS_LOGON_DEL_NOT_FOUND
|
||||
Logon news tétel #%d nem található!
|
||||
NEWS_LOGON_DELETED
|
||||
@@ -3311,7 +3317,7 @@ NEWS_OPER_DELETED_ALL
|
||||
Összes oper hír törölve.
|
||||
|
||||
NEWS_RANDOM_SYNTAX
|
||||
Syntax: RANDOMNEWS { ADD | DEL | LIST } [ szöveg | szám ]
|
||||
RANDOMNEWS { ADD | DEL | LIST } [ szöveg | szám ]
|
||||
NEWS_RANDOM_LIST_HEADER
|
||||
Véletlenszerû hírek listája:
|
||||
NEWS_RANDOM_LIST_ENTRY
|
||||
@@ -3320,13 +3326,13 @@ NEWS_RANDOM_LIST_ENTRY
|
||||
NEWS_RANDOM_LIST_NONE
|
||||
Nincs véletlenszerû hír.
|
||||
NEWS_RANDOM_ADD_SYNTAX
|
||||
Syntax: RANDOMNEWS ADD szöveg
|
||||
RANDOMNEWS ADD szöveg
|
||||
NEWS_RANDOM_ADD_FULL
|
||||
News lista tele!
|
||||
NEWS_RANDOM_ADDED
|
||||
Hozzáadva az új random news tétel (#%d).
|
||||
NEWS_RANDOM_DEL_SYNTAX
|
||||
Syntax: RANDOMNEWS DEL {szám | ALL}
|
||||
RANDOMNEWS DEL {szám | ALL}
|
||||
NEWS_RANDOM_DEL_NOT_FOUND
|
||||
Random news tétel #%d nem található!
|
||||
NEWS_RANDOM_DELETED
|
||||
@@ -3343,14 +3349,12 @@ NEWS_HELP_LOGON
|
||||
|
||||
Edits or displays the list of logon news messages. When a
|
||||
user connects to the network, these messages will be sent
|
||||
to them. (However, no more than %s messages will be
|
||||
to them. (However, no more than %d messages will be
|
||||
sent in order to avoid flooding the user. If there are
|
||||
more news messages, only the most recent will be sent.)
|
||||
NewsCount can be configured in services.conf.
|
||||
|
||||
LOGONNEWS LIST may be used by any IRC operator to list the
|
||||
current news messages. ADD and DEL may only be used by
|
||||
Services admins.
|
||||
LOGONNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_OPER
|
||||
Syntax: OPERNEWS ADD text
|
||||
@@ -3359,14 +3363,12 @@ NEWS_HELP_OPER
|
||||
|
||||
Edits or displays the list of oper news messages. When a
|
||||
user opers up (with the /OPER command), these messages will
|
||||
be sent to them. (However, no more than %s messages will
|
||||
be sent to them. (However, no more than %d messages will
|
||||
be sent in order to avoid flooding the user. If there are
|
||||
more news messages, only the most recent will be sent.)
|
||||
NewsCount can be configured in services.conf.
|
||||
|
||||
OPERNEWS LIST may be used by any IRC operator to list the
|
||||
current oper news messages. ADD and DEL may only be used by
|
||||
Services admins.
|
||||
OPERNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_RANDOM
|
||||
Syntax: RANDOMNEWS ADD szöveg
|
||||
@@ -3377,9 +3379,7 @@ NEWS_HELP_RANDOM
|
||||
egy felhasználó csatlakozik a hálózathoz, egy (csak egy)
|
||||
random newst fog véletlenszerûen elküldeni részére.
|
||||
|
||||
RANDOMNEWS LIST IRC operátorok,használhatják a parancsot
|
||||
részükre listázza az aktuális oper news üzeneteket. Add és
|
||||
Del -t csak szervíz adminok használhatják
|
||||
RANDOMNEWS may only be used by Services admins.
|
||||
|
||||
###########################################################
|
||||
#
|
||||
@@ -4256,7 +4256,7 @@ CHAN_HELP_CMD_GETKEY
|
||||
CHAN_HELP_CMD_INFO
|
||||
INFO Lists information about the named registered channel
|
||||
CHAN_HELP_CMD_INVITE
|
||||
INVITE Tells ChanServ to invite you or a given nick into a channel
|
||||
INVITE Tells ChanServ to invite you into a channel
|
||||
CHAN_HELP_CMD_KICK
|
||||
KICK Kicks a selected nick from a channel
|
||||
CHAN_HELP_CMD_LIST
|
||||
@@ -4526,13 +4526,9 @@ CHAN_HELP_SET_PRIVATE
|
||||
CHAN_HELP_SET_RESTRICTED
|
||||
Syntax: SET #szoba RESTRICTED {ON | OFF}
|
||||
|
||||
Engedélyezi vagy letiltja a korlátozott hozzáférés
|
||||
opciót a csatornán. Amikor a korlátozott hozzáférés
|
||||
be van kapcsolva, a userek nem kaphatnak szoba
|
||||
operátori jogokat (userek negatív access szinttel,
|
||||
ha a secure opsopció be van kapcsolva, akkor azok a
|
||||
userek, akik nem szerepelnek az access listán) azonnal
|
||||
ki lesznek rúgva és tiltva a szobából belépéskor.
|
||||
Enables or disables the restricted access option for a
|
||||
channel. When restricted access is set, users not on
|
||||
the access list will instead be kicked and banned from the channel.
|
||||
|
||||
CHAN_HELP_SET_SECURE
|
||||
Syntax: SET #szoba SECURE {ON | OFF}
|
||||
@@ -5112,6 +5108,7 @@ CHAN_HELP_CLEAR
|
||||
mode lockjában.
|
||||
BANS Törli az összes tiltást a csatornán.
|
||||
EXCEPTS Törli az összes kivételt a csatornán.
|
||||
INVITES Clears all invites on the channel.
|
||||
OPS Elvesz minden opot a csatornán
|
||||
HOPS Eltávolít minden félop csatorna státuszt (+h mód)
|
||||
az összes csatornán lévõ féloperátortól, ha támogatott.
|
||||
@@ -5377,7 +5374,7 @@ MEMO_HELP_SET
|
||||
További információért írd be: %R%S HELP SET opció
|
||||
|
||||
MEMO_HELP_SET_NOTIFY
|
||||
Syntax: SET NOTIFY {ON | LOGON | NEW | OFF}
|
||||
Syntax: SET NOTIFY {ON | LOGON | NEW | MAIL | NOMAIL | OFF}
|
||||
|
||||
Itt tudod beállítani, ha értesítést szeretnél kapni
|
||||
az új üzenetekrõl:
|
||||
@@ -5387,6 +5384,9 @@ MEMO_HELP_SET_NOTIFY
|
||||
LOGON Értesítést kapsz az új üzenetekrõl csatlakozáskor
|
||||
vagy ha visszajössz /AWAY-ból.
|
||||
NEW Csak akkor kapsz értesítést, ha új üzenet érkezett.
|
||||
MAIL You will be notified of memos by email aswell as
|
||||
any other settings you have.
|
||||
NOMAIL You will not be notified of memos by email.
|
||||
OFF Nem kapsz értesítést az üzeneteidrõl.
|
||||
|
||||
Az ON ekvivalens a LOGON és a NEW kombinálásával.
|
||||
@@ -5545,7 +5545,7 @@ OPER_HELP_CMD_SHUTDOWN
|
||||
OPER_HELP_CMD_DEFCON
|
||||
DEFCON Manipulálja a DefCon rendszert
|
||||
OPER_HELP_CMD_CHANKILL
|
||||
CHANKILL Kirúgja az összes usert a csatornáról
|
||||
CHANKILL AKILL az összes usert a csatornáról
|
||||
OPER_HELP_CMD_OLINE
|
||||
OLINE Operflaget ad a biztos felhasználónak
|
||||
OPER_HELP_CMD_UMODE
|
||||
@@ -6505,7 +6505,7 @@ HOST_SETALL
|
||||
HOST_DELALL
|
||||
A %s csoport vhostja törölve.
|
||||
HOST_DELALL_SYNTAX
|
||||
Syntax: DELALL <nick>.
|
||||
DELALL <nick>.
|
||||
HOST_IDENT_SETALL
|
||||
A %s csoport vhostja erre változott: %s@%s.
|
||||
HOST_SET_ERROR
|
||||
@@ -6519,9 +6519,9 @@ HOST_SET_IDENTTOOLONG
|
||||
HOST_NOREG
|
||||
%s felhasználó nincs a nickserv db fájlban.
|
||||
HOST_SET_SYNTAX
|
||||
Syntax %R%s set <nick> <hosztmaszk>.
|
||||
SET <nick> <hosztmaszk>.
|
||||
HOST_SETALL_SYNTAX
|
||||
Syntax %R%s setall <nick> <hosztmaszk>.
|
||||
SETALL <nick> <hosztmaszk>.
|
||||
HOST_DENIED
|
||||
Hozzáférés megtagadva.
|
||||
HOST_NOT_ASSIGNED
|
||||
@@ -6537,7 +6537,7 @@ HOST_NOT_REGED
|
||||
HOST_DEL
|
||||
%s vhosztja törölve lett.
|
||||
HOST_DEL_SYNTAX
|
||||
Szintaktika: %R%s del <nick>.
|
||||
DEL <nick>.
|
||||
HOST_OFF
|
||||
Your vhost was removed and the normal cloaking restored.
|
||||
HOST_OFF_UNREAL
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Italian language file.
|
||||
#
|
||||
# (C) 2003-2008 Anope Team
|
||||
# (C) 2003-2014 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Please read COPYING and README for further details.
|
||||
@@ -672,7 +672,7 @@ NICK_SASET_HIDE_STATUS_OFF
|
||||
|
||||
# SASET MSG responses
|
||||
NICK_SASET_MSG_SYNTAX
|
||||
SSAET nickname PRIVATE {ON | OFF}
|
||||
SSAET nickname MSG {ON | OFF}
|
||||
NICK_SASET_MSG_ON
|
||||
I servizi risponderanno a %s con "messages".
|
||||
NICK_SASET_MSG_OFF
|
||||
@@ -700,7 +700,7 @@ NICK_SASET_LANGUAGE_SYNTAX
|
||||
NICK_SASET_LANGUAGE_UNKNOWN
|
||||
Unknown language number %d. Type %R%s HELP SET LANGUAGE for a list of languages.
|
||||
NICK_SASET_LANGUAGE_CHANGED
|
||||
Language changed to Italian.
|
||||
Language for %s changed to %s.
|
||||
|
||||
|
||||
# ACCESS responses
|
||||
@@ -1798,6 +1798,10 @@ MEMO_SENT
|
||||
MEMO_MASS_SENT
|
||||
Un memo di massa è stato inviato a tutti gli utenti registrati.
|
||||
|
||||
# STAFF responses
|
||||
MEMO_STAFF_SYNTAX
|
||||
STAFF memo-text
|
||||
|
||||
# CANCEL responses
|
||||
MEMO_CANCEL_SYNTAX
|
||||
CANCEL {nick | canale}
|
||||
@@ -1862,7 +1866,7 @@ MEMO_SET_UNKNOWN_OPTION
|
||||
|
||||
# SET NOTIFY responses
|
||||
MEMO_SET_NOTIFY_SYNTAX
|
||||
SET NOTIFY {ON | LOGON | NEW | OFF}
|
||||
SET NOTIFY {ON | LOGON | NEW | MAIL | NOMAIL | OFF}
|
||||
MEMO_SET_NOTIFY_ON
|
||||
%s ti informerà dei nuovi memo quando ti connetti e quando li ricevi.
|
||||
MEMO_SET_NOTIFY_LOGON
|
||||
@@ -2875,6 +2879,8 @@ OPER_JUPE_SYNTAX
|
||||
JUPE nomeserver [motivo]
|
||||
OPER_JUPE_HOST_ERROR
|
||||
Prego utilizzare un nome server valido per jupe
|
||||
OPER_JUPE_INVALID_SERVER
|
||||
You can not jupe your services server or your uplink server.
|
||||
|
||||
# RAW responses
|
||||
OPER_RAW_SYNTAX
|
||||
@@ -2894,7 +2900,7 @@ OPER_CANNOT_RESTART
|
||||
|
||||
# IGNORE responses
|
||||
OPER_IGNORE_SYNTAX
|
||||
Sintassi: IGNORE {ADD|DEL|LIST|CLEAR} [tempo] [nick | mask]
|
||||
IGNORE {ADD|DEL|LIST|CLEAR} [tempo] [nick | mask]
|
||||
OPER_IGNORE_VALID_TIME
|
||||
Devi inserire un numero valido per indicare il tempo.
|
||||
OPER_IGNORE_TIME_DONE
|
||||
@@ -2965,7 +2971,7 @@ OPER_STAFF_AFORMAT
|
||||
# DefCon Messages
|
||||
|
||||
OPER_DEFCON_SYNTAX
|
||||
Sintassi: DEFCON [1|2|3|4|5]
|
||||
DEFCON [1|2|3|4|5]
|
||||
OPER_DEFCON_DENIED
|
||||
I servizi sono in modalità Defcon, prego riprovare più tardi.
|
||||
OPER_DEFCON_NO_CONF
|
||||
@@ -3218,7 +3224,7 @@ NEWS_RANDOM_TEXT
|
||||
[Messaggio del giorno - %s] %s
|
||||
|
||||
NEWS_LOGON_SYNTAX
|
||||
Sintassi: LOGONNEWS {ADD|DEL|LIST} [testo|numero]
|
||||
LOGONNEWS {ADD|DEL|LIST} [testo|numero]
|
||||
NEWS_LOGON_LIST_HEADER
|
||||
Lista delle Logon News:
|
||||
NEWS_LOGON_LIST_ENTRY
|
||||
@@ -3227,13 +3233,13 @@ NEWS_LOGON_LIST_ENTRY
|
||||
NEWS_LOGON_LIST_NONE
|
||||
Non c'è nessuna Logon News.
|
||||
NEWS_LOGON_ADD_SYNTAX
|
||||
Sintassi: LOGONNEWS ADD testo
|
||||
LOGONNEWS ADD testo
|
||||
NEWS_LOGON_ADD_FULL
|
||||
La lista delle news è piena!
|
||||
NEWS_LOGON_ADDED
|
||||
Aggiunta una nuova Logon News (numero %d).
|
||||
NEWS_LOGON_DEL_SYNTAX
|
||||
Sintassi: LOGONNEWS DEL {numero | ALL}
|
||||
LOGONNEWS DEL {numero | ALL}
|
||||
NEWS_LOGON_DEL_NOT_FOUND
|
||||
Impossibile trovare la Logon News numero %d!
|
||||
NEWS_LOGON_DELETED
|
||||
@@ -3270,7 +3276,7 @@ NEWS_OPER_DELETED_ALL
|
||||
Tutte le Oper News sono state eliminate.
|
||||
|
||||
NEWS_RANDOM_SYNTAX
|
||||
Sintassi: RANDOMNEWS {ADD|DEL|LIST} [testo|numero]
|
||||
RANDOMNEWS {ADD|DEL|LIST} [testo|numero]
|
||||
NEWS_RANDOM_LIST_HEADER
|
||||
Lista delle Random News:
|
||||
NEWS_RANDOM_LIST_ENTRY
|
||||
@@ -3279,13 +3285,13 @@ NEWS_RANDOM_LIST_ENTRY
|
||||
NEWS_RANDOM_LIST_NONE
|
||||
Non c'è nessuna Random News.
|
||||
NEWS_RANDOM_ADD_SYNTAX
|
||||
Sintassi: RANDOMNEWS ADD testo
|
||||
RANDOMNEWS ADD testo
|
||||
NEWS_RANDOM_ADD_FULL
|
||||
La lista delle news è piena!
|
||||
NEWS_RANDOM_ADDED
|
||||
Aggiunta una nuova Random News (numero %d).
|
||||
NEWS_RANDOM_DEL_SYNTAX
|
||||
Sintassi: RANDOMNEWS DEL {numero | ALL}
|
||||
RANDOMNEWS DEL {numero | ALL}
|
||||
NEWS_RANDOM_DEL_NOT_FOUND
|
||||
Impossibile trovare la Random News numero %d!
|
||||
NEWS_RANDOM_DELETED
|
||||
@@ -3302,14 +3308,12 @@ NEWS_HELP_LOGON
|
||||
|
||||
Edits or displays the list of logon news messages. When a
|
||||
user connects to the network, these messages will be sent
|
||||
to them. (However, no more than %s messages will be
|
||||
to them. (However, no more than %d messages will be
|
||||
sent in order to avoid flooding the user. If there are
|
||||
more news messages, only the most recent will be sent.)
|
||||
NewsCount can be configured in services.conf.
|
||||
|
||||
LOGONNEWS LIST may be used by any IRC operator to list the
|
||||
current news messages. ADD and DEL may only be used by
|
||||
Services admins.
|
||||
LOGONNEWS may be used by any IRC operator to list the
|
||||
|
||||
NEWS_HELP_OPER
|
||||
Syntax: OPERNEWS ADD text
|
||||
@@ -3318,14 +3322,12 @@ NEWS_HELP_OPER
|
||||
|
||||
Edits or displays the list of oper news messages. When a
|
||||
user opers up (with the /OPER command), these messages will
|
||||
be sent to them. (However, no more than %s messages will
|
||||
be sent to them. (However, no more than %d messages will
|
||||
be sent in order to avoid flooding the user. If there are
|
||||
more news messages, only the most recent will be sent.)
|
||||
NewsCount can be configured in services.conf.
|
||||
|
||||
OPERNEWS LIST may be used by any IRC operator to list the
|
||||
current oper news messages. ADD and DEL may only be used by
|
||||
Services admins.
|
||||
OPERNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_RANDOM
|
||||
Sintassi: RANDOMNEWS ADD testo
|
||||
@@ -3337,9 +3339,7 @@ NEWS_HELP_RANDOM
|
||||
delle informazioni del giorno sarà scelta casualmente e gli
|
||||
sarà inviata.
|
||||
|
||||
RANDOMNEWS LIST può essere usato da qualsiasi IrcOp per
|
||||
visualizzare i messaggi correnti. ADD e DEL possono essere
|
||||
utilizzati soltanto dai Services admin.
|
||||
RANDOMNEWS may only be used by Services admins.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
@@ -4513,13 +4513,9 @@ CHAN_HELP_SET_PRIVATE
|
||||
CHAN_HELP_SET_RESTRICTED
|
||||
Sintassi: SET canale RESTRICTED {ON | OFF}
|
||||
|
||||
Attiva o disattiva l'accesso limitato (restricted)
|
||||
per il canale. Quando questa opzione è attiva, gli
|
||||
utenti che non potrebbero avere i privilegi di operatore
|
||||
di canale (gli utenti con livelli di accesso negativi e,
|
||||
se l'opzione secure ops è attiva, tutti gli utenti che
|
||||
non si trovano in alcuna lista di accesso) verrano invece
|
||||
kickati e bannati dal canale.
|
||||
Enables or disables the restricted access option for a
|
||||
channel. When restricted access is set, users not on
|
||||
the access list will instead be kicked and banned from the channel.
|
||||
|
||||
CHAN_HELP_SET_SECURE
|
||||
Sintassi: SET canale SECURE {ON | OFF}
|
||||
@@ -5126,6 +5122,8 @@ CHAN_HELP_CLEAR
|
||||
MODES Annulla tutti i modi di canale (cioè elimina
|
||||
i modi i,k,l,m,n,p,s,t).
|
||||
BANS Annulla tutti i ban del canale.
|
||||
EXCEPTS Clears all excepts on the channel.
|
||||
INVITES Clears all invites on the channel.
|
||||
OPS Rimuove lo stato di operatore (modo +o) da
|
||||
tutti gli operatori del canale.
|
||||
HOPS Rimuove lo stato di halfoperator (modo +h) da
|
||||
@@ -5408,7 +5406,7 @@ MEMO_HELP_SET
|
||||
maggiori informazioni su un'opzione specifica.
|
||||
|
||||
MEMO_HELP_SET_NOTIFY
|
||||
Sintassi: SET NOTIFY {ON | LOGON | NEW | OFF}
|
||||
Sintassi: SET NOTIFY {ON | LOGON | NEW | MAIL | NOMAIL | OFF}
|
||||
|
||||
Cambia il modo in cui si verrà informati della ricezione
|
||||
di nuovi memo:
|
||||
@@ -5420,6 +5418,9 @@ MEMO_HELP_SET_NOTIFY
|
||||
connette o quando si torna dall'/AWAY.
|
||||
NEW Si verrà informati dei nuovi memo solo quando
|
||||
vengono inviati (se si è online).
|
||||
MAIL You will be notified of memos by email aswell as
|
||||
any other settings you have.
|
||||
NOMAIL You will not be notified of memos by email.
|
||||
OFF Non si verrà informati in nessun caso della
|
||||
ricezione dei nuovi memo.
|
||||
|
||||
@@ -5576,7 +5577,7 @@ OPER_HELP_CMD_SHUTDOWN
|
||||
OPER_HELP_CMD_DEFCON
|
||||
DEFCON Manipola il sistema DefCon
|
||||
OPER_HELP_CMD_CHANKILL
|
||||
CHANKILL Killa tutti gli utenti su di un canale specifico
|
||||
CHANKILL AKILL tutti gli utenti su di un canale specifico
|
||||
OPER_HELP_CMD_OLINE
|
||||
OLINE Imposta le operflag di un utente
|
||||
OPER_HELP_CMD_UMODE
|
||||
@@ -6569,7 +6570,7 @@ HOST_SETALL
|
||||
HOST_DELALL
|
||||
i vhost per il gruppo %s sono stati rimossi.
|
||||
HOST_DELALL_SYNTAX
|
||||
Sintassi: DELALL <nick>.
|
||||
DELALL <nick>.
|
||||
HOST_IDENT_SETALL
|
||||
Il vhost per il gruppo di %s è stato impostato a %s@%s.
|
||||
HOST_SET_ERROR
|
||||
@@ -6583,9 +6584,9 @@ HOST_SET_IDENTTOOLONG
|
||||
HOST_NOREG
|
||||
L'utente %s non è presente nel database di NickServ.
|
||||
HOST_SET_SYNTAX
|
||||
Sintassi: %R%s set <nick> <hostmask>.
|
||||
SET <nick> <hostmask>.
|
||||
HOST_SETALL_SYNTAX
|
||||
Sintassi: %R%s setall <nick> <hostmask>.
|
||||
SETALL <nick> <hostmask>.
|
||||
HOST_DENIED
|
||||
Accesso negato.
|
||||
HOST_NOT_ASSIGNED
|
||||
@@ -6601,7 +6602,7 @@ HOST_NOT_REGED
|
||||
HOST_DEL
|
||||
Il vhost di %s è stato rimosso.
|
||||
HOST_DEL_SYNTAX
|
||||
Sintassi: %R%s del <nick>.
|
||||
DEL <nick>.
|
||||
HOST_OFF
|
||||
Your vhost was removed and the normal cloaking restored.
|
||||
HOST_OFF_UNREAL
|
||||
|
||||
+6494
File diff suppressed because it is too large
Load Diff
+170
-156
@@ -1,14 +1,13 @@
|
||||
/* Compiler for language definition files.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -66,36 +65,39 @@ char *anopeStrDup(const char *src);
|
||||
|
||||
int read_index_file()
|
||||
{
|
||||
FILE *f;
|
||||
char buf[256];
|
||||
int i;
|
||||
FILE *f;
|
||||
char buf[256];
|
||||
int i;
|
||||
|
||||
if (!(f = fopen("index", "rb"))) {
|
||||
perror("fopen(index)");
|
||||
return -1;
|
||||
}
|
||||
while (fgets(buf, sizeof(buf), f))
|
||||
numstrings++;
|
||||
if (!(stringnames = static_cast<char **>(calloc(sizeof(char *), numstrings)))) {
|
||||
perror("calloc(stringnames)");
|
||||
return -1;
|
||||
}
|
||||
if (!(strings = static_cast<char **>(calloc(sizeof(char *), numstrings)))) {
|
||||
perror("calloc(strings)");
|
||||
return -1;
|
||||
}
|
||||
fseek(f, 0, SEEK_SET);
|
||||
i = 0;
|
||||
while (fgets(buf, sizeof(buf), f)) {
|
||||
if (buf[strlen(buf) - 1] == '\n')
|
||||
buf[strlen(buf) -1] = '\0';
|
||||
if (!(stringnames[i++] = anopeStrDup(buf))) {
|
||||
perror("strdup()");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
if (!(f = fopen("index", "rb"))) {
|
||||
perror("fopen(index)");
|
||||
return -1;
|
||||
}
|
||||
while (fgets(buf, sizeof(buf), f))
|
||||
numstrings++;
|
||||
if (!(stringnames = calloc(sizeof(char *), numstrings))) {
|
||||
perror("calloc(stringnames)");
|
||||
fclose(f);
|
||||
return 0;
|
||||
return -1;
|
||||
}
|
||||
if (!(strings = calloc(sizeof(char *), numstrings))) {
|
||||
perror("calloc(strings)");
|
||||
fclose(f);
|
||||
return -1;
|
||||
}
|
||||
fseek(f, 0, SEEK_SET);
|
||||
i = 0;
|
||||
while (fgets(buf, sizeof(buf), f)) {
|
||||
if (buf[strlen(buf)-1] == '\n')
|
||||
buf[strlen(buf)-1] = '\0';
|
||||
if (!(stringnames[i++] = anopeStrDup(buf))) {
|
||||
perror("strdup()");
|
||||
fclose(f);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
fclose(f);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
@@ -104,13 +106,13 @@ int read_index_file()
|
||||
|
||||
int stringnum(const char *name)
|
||||
{
|
||||
int i;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < numstrings; i++) {
|
||||
if (strcmp(stringnames[i], name) == 0)
|
||||
return i;
|
||||
}
|
||||
return -1;
|
||||
for (i = 0; i < numstrings; i++) {
|
||||
if (strcmp(stringnames[i], name) == 0)
|
||||
return i;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
@@ -120,18 +122,18 @@ int stringnum(const char *name)
|
||||
|
||||
char *ano_getline(FILE *f)
|
||||
{
|
||||
static char buf[1024];
|
||||
char *s;
|
||||
static char buf[1024];
|
||||
char *s;
|
||||
|
||||
do {
|
||||
if (!(fgets(buf, sizeof(buf), f)))
|
||||
return NULL;
|
||||
linenum++;
|
||||
} while (*buf == '#' || *buf == '\n');
|
||||
s = buf + strlen(buf) - 1;
|
||||
if (*s == '\n')
|
||||
*s = '\0';
|
||||
return buf;
|
||||
do {
|
||||
if (!(fgets(buf, sizeof(buf), f)))
|
||||
return NULL;
|
||||
linenum++;
|
||||
} while (*buf == '#' || *buf == '\n');
|
||||
s = buf + strlen(buf)-1;
|
||||
if (*s == '\n')
|
||||
*s = '\0';
|
||||
return buf;
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
@@ -140,125 +142,137 @@ char *ano_getline(FILE *f)
|
||||
|
||||
int fput32(int val, FILE *f)
|
||||
{
|
||||
if (fputc(val >> 24, f) < 0 ||
|
||||
fputc(val >> 16, f) < 0 ||
|
||||
fputc(val >> 8, f) < 0 ||
|
||||
fputc(val, f) < 0
|
||||
) {
|
||||
return -1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
if (fputc(val>>24, f) < 0 ||
|
||||
fputc(val>>16, f) < 0 ||
|
||||
fputc(val>> 8, f) < 0 ||
|
||||
fputc(val , f) < 0
|
||||
) {
|
||||
return -1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
char *anopeStrDup(const char *src)
|
||||
{
|
||||
char *ret=NULL;
|
||||
if (src) {
|
||||
if ((ret = static_cast<char *>(malloc(strlen(src) + 1)))) {
|
||||
strcpy(ret,src);
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
char *anopeStrDup(const char *src) {
|
||||
char *ret=NULL;
|
||||
if(src) {
|
||||
if( (ret = (char *)malloc(strlen(src)+1)) ) {;
|
||||
strcpy(ret,src);
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
int main(int ac, char **av)
|
||||
{
|
||||
char *filename = NULL, *outfile;
|
||||
FILE *in, *out;
|
||||
int warn = 0;
|
||||
int retval = 0;
|
||||
int curstring = -2, i;
|
||||
char *line;
|
||||
int pos;
|
||||
int maxerr = 50; /* Max errors before we bail out */
|
||||
char *filename = NULL, *s;
|
||||
char langname[254], outfile[256];
|
||||
FILE *in, *out;
|
||||
int warn = 0;
|
||||
int retval = 0;
|
||||
int curstring = -2, i;
|
||||
char *line;
|
||||
int pos;
|
||||
int maxerr = 50; /* Max errors before we bail out */
|
||||
|
||||
if (ac >= 3 && strcmp(av[1], "-w") == 0) {
|
||||
warn = 1;
|
||||
av[1] = av[2];
|
||||
av[2] = av[3];
|
||||
ac--;
|
||||
}
|
||||
if (ac != 3) {
|
||||
fprintf(stderr, "Usage: %s [-w] <lang-file> <out-file>\n", av[0]);
|
||||
return 1;
|
||||
}
|
||||
filename = av[1];
|
||||
outfile = av[2];
|
||||
|
||||
if (read_index_file() < 0)
|
||||
return 1;
|
||||
if (!(in = fopen(filename, "rb"))) {
|
||||
perror(filename);
|
||||
return 1;
|
||||
}
|
||||
if (!(out = fopen(outfile, "wb"))) {
|
||||
perror(outfile);
|
||||
return 1;
|
||||
}
|
||||
|
||||
while (maxerr > 0 && (line = ano_getline(in)) != NULL) {
|
||||
if (*line == '\t') {
|
||||
if (curstring == -2) {
|
||||
fprintf(stderr, "%s:%d: Junk at beginning of file\n", filename, linenum);
|
||||
retval = 1;
|
||||
} else if (curstring >= 0) {
|
||||
line++;
|
||||
i = strings[curstring] ? strlen(strings[curstring]) : 0;
|
||||
if (!(strings[curstring] = static_cast<char *>(realloc(strings[curstring], i + strlen(line) + 2)))) {
|
||||
fprintf(stderr, "%s:%d: Out of memory!\n", filename, linenum);
|
||||
return 2;
|
||||
}
|
||||
sprintf(strings[curstring] + i, "%s\n", line);
|
||||
}
|
||||
} else {
|
||||
if ((curstring = stringnum(line)) < 0) {
|
||||
fprintf(stderr, "%s:%d: Unknown string name `%s'\n", filename, linenum, line);
|
||||
retval = 1;
|
||||
maxerr--;
|
||||
} else if (strings[curstring]) {
|
||||
fprintf(stderr, "%s:%d: Duplicate occurrence of string `%s'\n", filename, linenum, line);
|
||||
retval = 1;
|
||||
maxerr--;
|
||||
} else {
|
||||
if (!(strings[curstring] = static_cast<char *>(malloc(1)))) {
|
||||
fprintf(stderr, "%s:%d: Out of memory!\n", filename, linenum);
|
||||
return 2;
|
||||
}
|
||||
*strings[curstring] = '\0';
|
||||
}
|
||||
|
||||
if (maxerr == 0)
|
||||
fprintf(stderr, "%s:%d: Too many errors!\n", filename, linenum);
|
||||
}
|
||||
}
|
||||
|
||||
fput32(numstrings, out);
|
||||
pos = numstrings * 8 + 4;
|
||||
for (i = 0; i < numstrings; i++) {
|
||||
int len = strings[i] && *strings[i] ? strlen(strings[i]) - 1 : 0;
|
||||
fput32(pos, out);
|
||||
fput32(len, out);
|
||||
pos += len;
|
||||
}
|
||||
for (i = 0; i < numstrings; i++) {
|
||||
if (strings[i]) {
|
||||
if (*strings[i])
|
||||
strings[i][strlen(strings[i])-1] = '\0'; /* kill last \n */
|
||||
if (*strings[i])
|
||||
fputs(strings[i], out);
|
||||
} else if (warn) {
|
||||
fprintf(stderr, "%s: String `%s' missing\n", filename, stringnames[i]);
|
||||
}
|
||||
}
|
||||
if (ac >= 2 && strcmp(av[1], "-w") == 0) {
|
||||
warn = 1;
|
||||
av[1] = av[2];
|
||||
ac--;
|
||||
}
|
||||
if (ac != 2) {
|
||||
fprintf(stderr, "Usage: %s [-w] <lang-file>\n", av[0]);
|
||||
return 1;
|
||||
}
|
||||
filename = av[1];
|
||||
s = strrchr(filename, '.');
|
||||
if (!s)
|
||||
s = filename + strlen(filename);
|
||||
if (s-filename > sizeof(langname)-3)
|
||||
s = filename + sizeof(langname)-1;
|
||||
strncpy(langname, filename, s-filename);
|
||||
langname[s-filename] = '\0';
|
||||
snprintf(outfile, sizeof(outfile), "%s", langname);
|
||||
|
||||
if (read_index_file() < 0)
|
||||
return 1;
|
||||
if (!(in = fopen(filename, "rb"))) {
|
||||
perror(filename);
|
||||
return 1;
|
||||
}
|
||||
if (!(out = fopen(outfile, "wb"))) {
|
||||
perror(outfile);
|
||||
fclose(in);
|
||||
fclose(out);
|
||||
return retval;
|
||||
return 1;
|
||||
}
|
||||
|
||||
while (maxerr > 0 && (line = ano_getline(in)) != NULL) {
|
||||
if (*line == '\t') {
|
||||
if (curstring == -2) {
|
||||
fprintf(stderr, "%s:%d: Junk at beginning of file\n",
|
||||
filename, linenum);
|
||||
retval = 1;
|
||||
} else if (curstring >= 0) {
|
||||
line++;
|
||||
i = strings[curstring] ? strlen(strings[curstring]) : 0;
|
||||
if (!(strings[curstring] =
|
||||
realloc(strings[curstring], i+strlen(line)+2))) {
|
||||
fprintf(stderr, "%s:%d: Out of memory!\n",filename,linenum);
|
||||
return 2;
|
||||
}
|
||||
sprintf(strings[curstring]+i, "%s\n", line);
|
||||
}
|
||||
} else {
|
||||
|
||||
if ((curstring = stringnum(line)) < 0) {
|
||||
fprintf(stderr, "%s:%d: Unknown string name `%s'\n",
|
||||
filename, linenum, line);
|
||||
retval = 1;
|
||||
maxerr--;
|
||||
} else if (strings[curstring]) {
|
||||
fprintf(stderr, "%s:%d: Duplicate occurrence of string `%s'\n",
|
||||
filename, linenum, line);
|
||||
retval = 1;
|
||||
maxerr--;
|
||||
} else {
|
||||
if (!(strings[curstring] = malloc(1))) {
|
||||
fprintf(stderr, "%s:%d: Out of memory!\n",filename,linenum);
|
||||
return 2;
|
||||
}
|
||||
*strings[curstring] = '\0';
|
||||
}
|
||||
|
||||
if (maxerr == 0)
|
||||
fprintf(stderr, "%s:%d: Too many errors!\n", filename, linenum);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
fput32(numstrings, out);
|
||||
pos = numstrings * 8 + 4;
|
||||
for (i = 0; i < numstrings; i++) {
|
||||
int len = strings[i] && *strings[i] ? strlen(strings[i])-1 : 0;
|
||||
fput32(pos, out);
|
||||
fput32(len, out);
|
||||
pos += len;
|
||||
}
|
||||
for (i = 0; i < numstrings; i++) {
|
||||
if (strings[i]) {
|
||||
if (*strings[i])
|
||||
strings[i][strlen(strings[i])-1] = '\0'; /* kill last \n */
|
||||
if (*strings[i])
|
||||
fputs(strings[i], out);
|
||||
} else if (warn) {
|
||||
fprintf(stderr, "%s: String `%s' missing\n", filename,
|
||||
stringnames[i]);
|
||||
}
|
||||
}
|
||||
|
||||
fclose(in);
|
||||
fclose(out);
|
||||
return retval;
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
+74
-76
@@ -1,76 +1,74 @@
|
||||
/* Language stuff generator for win32.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* Written by Dominick Meglio <codemastr@unrealircd.com>
|
||||
*
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <cstdlib>
|
||||
#include <cctype>
|
||||
|
||||
char *strip(char *str)
|
||||
{
|
||||
char *c;
|
||||
if ((c = strchr(str,'\n')))
|
||||
*c = 0;
|
||||
if ((c = strchr(str,'\r')))
|
||||
*c = 0;
|
||||
return str;
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
if (argc < 4)
|
||||
exit(1);
|
||||
|
||||
/* Build the index file */
|
||||
if (!strcmp(argv[1], "index"))
|
||||
{
|
||||
FILE *fd = fopen(argv[2], "rb");
|
||||
FILE *fdout = fopen(argv[3], "wb");
|
||||
char buf[1024];
|
||||
if (!fd || !fdout)
|
||||
exit(2);
|
||||
|
||||
while (fgets(buf, 1023, fd))
|
||||
{
|
||||
if (isupper(*buf))
|
||||
fprintf(fdout, "%s", buf);
|
||||
}
|
||||
fclose(fd);
|
||||
fclose(fdout);
|
||||
}
|
||||
/* Build the language.h file */
|
||||
else if (!strcmp(argv[1], "language.h"))
|
||||
{
|
||||
FILE *fd = fopen(argv[2], "r");
|
||||
FILE *fdout = fopen(argv[3], "w");
|
||||
char buf[1024];
|
||||
int i = 0;
|
||||
|
||||
if (!fd || !fdout)
|
||||
exit(2);
|
||||
|
||||
fprintf(stderr, "Generating language.h... ");
|
||||
|
||||
while (fgets(buf, 1023, fd)) {
|
||||
fprintf(fdout, "#define %-32s %d\n", strip(buf), i++);
|
||||
}
|
||||
|
||||
fprintf(fdout, "#define NUM_STRINGS %d\n", i);
|
||||
fprintf(stderr, "%d strings\n", i);
|
||||
fclose(fd);
|
||||
fclose(fdout);
|
||||
}
|
||||
return 0;
|
||||
|
||||
}
|
||||
/* Language stuff generator for win32.
|
||||
*
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* Written by Dominick Meglio <codemastr@unrealircd.com>
|
||||
*
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
char *strip(char *str)
|
||||
{
|
||||
char *c;
|
||||
if ((c = strchr(str,'\n')))
|
||||
*c = 0;
|
||||
if ((c = strchr(str,'\r')))
|
||||
*c = 0;
|
||||
return str;
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
if (argc < 2)
|
||||
exit(1);
|
||||
|
||||
/* Build the index file */
|
||||
if (!strcmp(argv[1], "index"))
|
||||
{
|
||||
FILE *fd = fopen("en_us.l", "rb");
|
||||
FILE *fdout = fopen("index", "wb");
|
||||
char buf[1024];
|
||||
if (!fd || !fdout)
|
||||
exit(2);
|
||||
|
||||
while (fgets(buf, 1023, fd))
|
||||
{
|
||||
if (isupper(*buf))
|
||||
fprintf(fdout, "%s", buf);
|
||||
}
|
||||
fclose(fd);
|
||||
fclose(fdout);
|
||||
}
|
||||
/* Build the language.h file */
|
||||
else if (!strcmp(argv[1], "language.h"))
|
||||
{
|
||||
FILE *fd = fopen("index", "r");
|
||||
FILE *fdout = fopen("language.h", "w");
|
||||
char buf[1024];
|
||||
int i = 0;
|
||||
|
||||
if (!fd || !fdout)
|
||||
exit(2);
|
||||
|
||||
fprintf(stderr, "Generating language.h... ");
|
||||
|
||||
while (fgets(buf, 1023, fd)) {
|
||||
fprintf(fdout, "#define %-32s %d\n", strip(buf), i++);
|
||||
}
|
||||
|
||||
fprintf(fdout, "#define NUM_STRINGS %d\n", i);
|
||||
fprintf(stderr, "%d strings\n", i);
|
||||
fclose(fd);
|
||||
fclose(fdout);
|
||||
}
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# Dutch Language File
|
||||
#
|
||||
# (C) 2003-2008 Anope Team
|
||||
# (C) 2003-2014 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Please read COPYING and README for furhter details.
|
||||
# Please read COPYING and README for further details.
|
||||
#
|
||||
# Based on the original code of Epona by Lara.
|
||||
# Based on the original code of Services by Andy Church.
|
||||
@@ -688,7 +688,7 @@ NICK_SASET_HIDE_STATUS_OFF
|
||||
|
||||
# SASET MSG responses
|
||||
NICK_SASET_MSG_SYNTAX
|
||||
SSAET nickname PRIVATE {ON | OFF}
|
||||
SSAET nickname MSG {ON | OFF}
|
||||
NICK_SASET_MSG_ON
|
||||
Services will now reply to %s with messages.
|
||||
NICK_SASET_MSG_OFF
|
||||
@@ -716,7 +716,7 @@ NICK_SASET_LANGUAGE_SYNTAX
|
||||
NICK_SASET_LANGUAGE_UNKNOWN
|
||||
Unknown language number %d. Type %R%s HELP SET LANGUAGE for a list of languages.
|
||||
NICK_SASET_LANGUAGE_CHANGED
|
||||
Language changed to Dutch.
|
||||
Language for %s changed to %s.
|
||||
|
||||
|
||||
# ACCESS responses
|
||||
@@ -1653,7 +1653,7 @@ CHAN_INVITE_SYNTAX
|
||||
CHAN_UNBAN_SYNTAX
|
||||
UNBAN kanaal
|
||||
CHAN_UNBANNED
|
||||
Bans met betrekking to jou op %s zijn opgeheven.
|
||||
Bans met betrekking tot jou op %s zijn opgeheven.
|
||||
|
||||
# TOPIC responses
|
||||
CHAN_TOPIC_SYNTAX
|
||||
@@ -1810,11 +1810,13 @@ MEMO_X_HAS_TOO_MANY_MEMOS
|
||||
%s heeft momenteel te veel memo's en kan er geen meer ontvangen.
|
||||
MEMO_SENT
|
||||
Memo verstuurd naar %s.
|
||||
|
||||
# CANCEL responses
|
||||
MEMO_MASS_SENT
|
||||
Een memo werd gestuurd naar alle geregistreerde gebruikers.
|
||||
|
||||
# STAFF responses
|
||||
MEMO_STAFF_SYNTAX
|
||||
STAFF memo-text
|
||||
|
||||
# CANCEL responses
|
||||
MEMO_CANCEL_SYNTAX
|
||||
CANCEL {nick | kanaal}
|
||||
@@ -1879,7 +1881,7 @@ MEMO_SET_UNKNOWN_OPTION
|
||||
|
||||
# SET NOTIFY responses
|
||||
MEMO_SET_NOTIFY_SYNTAX
|
||||
SET NOTIFY {ON | LOGON | NEW | OFF}
|
||||
SET NOTIFY {ON | LOGON | NEW | MAIL | NOMAIL | OFF}
|
||||
MEMO_SET_NOTIFY_ON
|
||||
%s zal je nu informeren over memo's zodra je inlogt en wanneer deze naar je toe gezonden worden.
|
||||
MEMO_SET_NOTIFY_LOGON
|
||||
@@ -2923,6 +2925,8 @@ OPER_JUPE_SYNTAX
|
||||
JUPE servername [reden]
|
||||
OPER_JUPE_HOST_ERROR
|
||||
Gebruik een geldige servernaam bij het jupen
|
||||
OPER_JUPE_INVALID_SERVER
|
||||
You can not jupe your services server or your uplink server.
|
||||
|
||||
# RAW responses
|
||||
OPER_RAW_SYNTAX
|
||||
@@ -2942,7 +2946,7 @@ OPER_CANNOT_RESTART
|
||||
|
||||
# IGNORE respondes
|
||||
OPER_IGNORE_SYNTAX
|
||||
Gebruik: IGNORE {ADD|DEL|LIST|CLEAR} [tijd] [nick | mask]
|
||||
IGNORE {ADD|DEL|LIST|CLEAR} [tijd] [nick | mask]
|
||||
OPER_IGNORE_VALID_TIME
|
||||
Je moet een geldig nummer als tijd invoeren.
|
||||
OPER_IGNORE_TIME_DONE
|
||||
@@ -3024,7 +3028,7 @@ OPER_STAFF_AFORMAT
|
||||
# DefCon Messages
|
||||
|
||||
OPER_DEFCON_SYNTAX
|
||||
Syntax: DEFCON [1|2|3|4|5]
|
||||
DEFCON [1|2|3|4|5]
|
||||
OPER_DEFCON_DENIED
|
||||
Services zijn in Defcon modus. Probeer later opnieuw.
|
||||
OPER_DEFCON_NO_CONF
|
||||
@@ -3287,7 +3291,7 @@ NEWS_RANDOM_TEXT
|
||||
[Willekeurig Nieuws - %s] %s
|
||||
|
||||
NEWS_LOGON_SYNTAX
|
||||
Genbruik: LOGONNEWS {ADD|DEL|LIST} [text|nr]
|
||||
LOGONNEWS {ADD|DEL|LIST} [text|nr]
|
||||
NEWS_LOGON_LIST_HEADER
|
||||
Login nieuwsberichten:
|
||||
NEWS_LOGON_LIST_ENTRY
|
||||
@@ -3296,13 +3300,13 @@ NEWS_LOGON_LIST_ENTRY
|
||||
NEWS_LOGON_LIST_NONE
|
||||
Er is geen login nieuws.
|
||||
NEWS_LOGON_ADD_SYNTAX
|
||||
Gebruik: LOGONNEWS ADD text
|
||||
LOGONNEWS ADD text
|
||||
NEWS_LOGON_ADD_FULL
|
||||
Nieuws lijst is vol!
|
||||
NEWS_LOGON_ADDED
|
||||
Nieuw login nieuws toegevoegd (#%d).
|
||||
NEWS_LOGON_DEL_SYNTAX
|
||||
Gebruik: LOGONNEWS DEL {nr | ALL}
|
||||
LOGONNEWS DEL {nr | ALL}
|
||||
NEWS_LOGON_DEL_NOT_FOUND
|
||||
Login nieuwsbericht #%d niet gevonden!
|
||||
NEWS_LOGON_DELETED
|
||||
@@ -3339,7 +3343,7 @@ NEWS_OPER_DELETED_ALL
|
||||
Alle oper nieuwsberichten zijn verwijderd.
|
||||
|
||||
NEWS_RANDOM_SYNTAX
|
||||
Gebruik: RANDOMNEWS {ADD|DEL|LIST} [text|nr]
|
||||
RANDOMNEWS {ADD|DEL|LIST} [text|nr]
|
||||
NEWS_RANDOM_LIST_HEADER
|
||||
Willekeurige nieuwsberichten:
|
||||
NEWS_RANDOM_LIST_ENTRY
|
||||
@@ -3348,13 +3352,13 @@ NEWS_RANDOM_LIST_ENTRY
|
||||
NEWS_RANDOM_LIST_NONE
|
||||
Er is geen willekeurig nieuws.
|
||||
NEWS_RANDOM_ADD_SYNTAX
|
||||
Gebruik: RANDOMNEWS ADD text
|
||||
RANDOMNEWS ADD text
|
||||
NEWS_RANDOM_ADD_FULL
|
||||
Nieuwslijst is vol!
|
||||
NEWS_RANDOM_ADDED
|
||||
Nieuw willekeurig nieuwsbericht toegevoegd (#%d).
|
||||
NEWS_RANDOM_DEL_SYNTAX
|
||||
Gebruik: RANDOMNEWS DEL {nr | ALL}
|
||||
RANDOMNEWS DEL {nr | ALL}
|
||||
NEWS_RANDOM_DEL_NOT_FOUND
|
||||
Willekeurig nieuwsbericht #%d niet gevonden!
|
||||
NEWS_RANDOM_DELETED
|
||||
@@ -3372,15 +3376,12 @@ NEWS_HELP_LOGON
|
||||
Wijzigt de lijst met login nieuwsberichten of geeft deze weer.
|
||||
Wanneer een gebruiker met het netwerk verbindt, worden deze
|
||||
berichten naar hem/haar verzonden. (Echter, er zullen nooit
|
||||
meer dan %s berichten worden verstuurd om het flooden van de
|
||||
meer dan %d berichten worden verstuurd om het flooden van de
|
||||
gebruiker te voorkomen. Als er meer nieuwsberichten
|
||||
zijn worden alleen de meest recente vestuurd.)
|
||||
NewsCount kan geconfigureerd worden in services.conf.
|
||||
|
||||
LOGONNEWS LIST mag door elke IRC operator worden gebruikt om
|
||||
de huidige nieuwsberichten weer te geven. ADD en DEL mogen
|
||||
alleen door Services admins gebruikt worden.
|
||||
|
||||
LOGONNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_OPER
|
||||
Gebruik: OPERNEWS ADD text
|
||||
@@ -3390,14 +3391,12 @@ NEWS_HELP_OPER
|
||||
Wijzigt de lijst met oper nieuwsberichten of geeft deze weer.
|
||||
Wanneer een gebruiker opert (dmv het /OPER commando), worden
|
||||
deze berichtennaar hem/haar verzonden. (Echter, er zullen
|
||||
nooit meer dan %s berichten worden verstuurd om het flooden
|
||||
nooit meer dan %d berichten worden verstuurd om het flooden
|
||||
van de gebruiker te voorkomen. Als er meer nieuwsberichten
|
||||
zijn worden alleen de meest recente vestuurd.)
|
||||
NewsCount kan geconfigureerd worden in services.conf.
|
||||
|
||||
OPERNEWS LIST mag door elke IRC operator worden gebruikt om
|
||||
de huidige nieuwsberichten weer te geven. ADD en DEL mogen
|
||||
alleen door Services admins gebruikt worden.
|
||||
OPERNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_RANDOM
|
||||
Syntax: RANDOMNEWS ADD text
|
||||
@@ -3410,9 +3409,7 @@ NEWS_HELP_RANDOM
|
||||
nieuwsberichten willekeurig uitgekozen en naar hem/haar
|
||||
verstuurd.
|
||||
|
||||
RANDOMNEWS LIST mag door elke IRC operator worden gebruikt om
|
||||
de huidige nieuwsberichten weer te geven. ADD en DEL mogen
|
||||
alleen door Services admins gebruikt worden.
|
||||
RANDOMNEWS may only be used by Services admins.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
@@ -4267,7 +4264,7 @@ CHAN_HELP_CMD_GETKEY
|
||||
CHAN_HELP_CMD_INFO
|
||||
INFO Lists information about the named registered channel
|
||||
CHAN_HELP_CMD_INVITE
|
||||
INVITE Tells ChanServ to invite you or a given nick into a channel
|
||||
INVITE Tells ChanServ to invite you into a channel
|
||||
CHAN_HELP_CMD_KICK
|
||||
KICK Kicks a selected nick from a channel
|
||||
CHAN_HELP_CMD_LIST
|
||||
@@ -4546,12 +4543,9 @@ CHAN_HELP_SET_PRIVATE
|
||||
CHAN_HELP_SET_RESTRICTED
|
||||
Gebruik: SET kanaal RESTRICTED {ON | OFF}
|
||||
|
||||
Zet de beperkte toegang optie aan of uit voor een kanaal.
|
||||
Wanneer beperkte toegang aan staat zullen gebruikers die
|
||||
normaliter geen kanaaloperator status mogen hebben (dwz
|
||||
gebruikers met negatieve toegangsniveaus en, als de veilige
|
||||
ops optie aan staat, ook gebruikers die niet op de toegangs-
|
||||
lijst staan) worden gekicked en gebanned van het kanaal.
|
||||
Enables or disables the restricted access option for a
|
||||
channel. When restricted access is set, users not on
|
||||
the access list will instead be kicked and banned from the channel.
|
||||
|
||||
CHAN_HELP_SET_SECURE
|
||||
Gebruik: SET kanaal SECURE {ON | OFF}
|
||||
@@ -5131,6 +5125,8 @@ CHAN_HELP_CLEAR
|
||||
MODES Verwijder alle modes op het kanaal (verwijdert
|
||||
modes i,k,l,m,n,p,s,t).
|
||||
BANS Verwijder alle bans op het kanaal.
|
||||
EXCEPTS Clears all excepts on the channel.
|
||||
INVITES Clears all invites on the channel.
|
||||
OPS Verwijder kanaal-operator status (mode +o) van
|
||||
alle kanaal-operators.
|
||||
HOPS Verwijder kanaal-halfoperator status (mode +h)
|
||||
@@ -5396,7 +5392,7 @@ MEMO_HELP_SET
|
||||
een specifieke optie.
|
||||
|
||||
MEMO_HELP_SET_NOTIFY
|
||||
Gebruik: SET NOTIFY {ON | LOGON | NEW | OFF}
|
||||
Gebruik: SET NOTIFY {ON | LOGON | NEW | MAIL | NOMAIL | OFF}
|
||||
|
||||
Verandert wanneer je geinformeerd zal worden over nieuwe memo's:
|
||||
|
||||
@@ -5407,6 +5403,9 @@ MEMO_HELP_SET_NOTIFY
|
||||
of wanneer je terugkomt van /AWAY.
|
||||
NEW Je wordt alleen geinformeerd over memo's wanner ze
|
||||
naar je worden verstuurd.
|
||||
MAIL You will be notified of memos by email aswell as
|
||||
any other settings you have.
|
||||
NOMAIL You will not be notified of memos by email.
|
||||
OFF Je zal geen informaties over memo's ontvangen.
|
||||
|
||||
ON is wezenlijk LOGON en NEW gecombineerd.
|
||||
@@ -5586,7 +5585,7 @@ OPER_HELP_CMD_SHUTDOWN
|
||||
OPER_HELP_CMD_DEFCON
|
||||
DEFCON Manipulate the DefCon system
|
||||
OPER_HELP_CMD_CHANKILL
|
||||
CHANKILL Kill all users on a specific channel
|
||||
CHANKILL AKILL all users on a specific channel
|
||||
OPER_HELP_CMD_OLINE
|
||||
OLINE Geef Operflags aan een bepaalde gebruiker
|
||||
OPER_HELP_CMD_UMODE
|
||||
@@ -6530,7 +6529,7 @@ HOST_SETALL
|
||||
HOST_DELALL
|
||||
vhosts voor group %s zijn verwijderd.
|
||||
HOST_DELALL_SYNTAX
|
||||
Gebruik: DELALL <nick>.
|
||||
DELALL <nick>.
|
||||
HOST_IDENT_SETALL
|
||||
vhost voor groep %s gezet op %s@%s.
|
||||
HOST_SET_ERROR
|
||||
@@ -6544,9 +6543,9 @@ HOST_SET_IDENTTOOLONG
|
||||
HOST_NOREG
|
||||
Gebruiker %s niet gevonden in de nickserv database.
|
||||
HOST_SET_SYNTAX
|
||||
Gebruik %R%s set <nick> <hostmask>.
|
||||
SET <nick> <hostmask>.
|
||||
HOST_SETALL_SYNTAX
|
||||
Gebruik %R%s setall <nick> <hostmask>.
|
||||
SETALL <nick> <hostmask>.
|
||||
HOST_DENIED
|
||||
Toegang geweigerd.
|
||||
HOST_NOT_ASSIGNED
|
||||
@@ -6562,7 +6561,7 @@ HOST_NOT_REGED
|
||||
HOST_DEL
|
||||
vhost voor %s verwijderd.
|
||||
HOST_DEL_SYNTAX
|
||||
Gebruik: %R%s del <nick>.
|
||||
DEL <nick>.
|
||||
HOST_OFF
|
||||
Your vhost was removed and the normal cloaking restored.
|
||||
HOST_OFF_UNREAL
|
||||
@@ -6570,9 +6569,9 @@ HOST_OFF_UNREAL
|
||||
HOST_NO_VIDENT
|
||||
Je IRCD ondersteunt geen vIdent's. Als dit niet klopt, rapporteer dit dan als een mogelijke bug
|
||||
HOST_GROUP
|
||||
Alle vhost's in de groep %s zijn ingesteld op %s
|
||||
Alle vhosts in de groep %s zijn ingesteld op %s
|
||||
HOST_IDENT_GROUP
|
||||
Alle vhost's in de groep %s zijn ingesteld op %s@%s
|
||||
Alle vhosts in de groep %s zijn ingesteld op %s@%s
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
#
|
||||
###########################################################################
|
||||
#
|
||||
# (C) 2003-2008 Anope Team
|
||||
# (C) 2003-2014 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Please read COPYING and README for further details.
|
||||
@@ -845,7 +845,7 @@ NICK_SASET_HIDE_STATUS_OFF
|
||||
|
||||
# SASET MSG responses
|
||||
NICK_SASET_MSG_SYNTAX
|
||||
SASAET nick PRIVATE {ON | OFF}
|
||||
SASET nick MSG {ON | OFF}
|
||||
|
||||
NICK_SASET_MSG_ON
|
||||
Serwisy bêd± teraz wysy³aæ do %s wiadomo¶ci.
|
||||
@@ -882,7 +882,7 @@ NICK_SASET_LANGUAGE_UNKNOWN
|
||||
Napisz %R%s HELP SET LANGUAGE, aby uzyskaæ listê dostêpnych jêzyków.
|
||||
|
||||
NICK_SASET_LANGUAGE_CHANGED
|
||||
Jêzyk zosta³ zmieniony na Polski.
|
||||
Language for %s changed to %s.
|
||||
|
||||
# ACCESS responses
|
||||
NICK_ACCESS_SYNTAX
|
||||
@@ -2025,7 +2025,7 @@ CHAN_LEVELS_LIST_NORMAL
|
||||
CHAN_LEVELS_RESET
|
||||
Poziomy dostêpu kana³u %s zosta³y zresetowane do domy¶lnych.
|
||||
|
||||
# Status Messages
|
||||
# Status messages
|
||||
CHAN_STATUS_SYNTAX
|
||||
STATUS ERROR B³±d sk³adni
|
||||
|
||||
@@ -2376,6 +2376,9 @@ MEMO_SENT
|
||||
MEMO_MASS_SENT
|
||||
Wiadomo¶æ zosta³a wys³ana do wszystkich zarejestrowanych u¿ytkowników.
|
||||
|
||||
# STAFF responses
|
||||
MEMO_STAFF_SYNTAX
|
||||
STAFF tre¶æ wiadomo¶ci
|
||||
|
||||
# CANCEL responses
|
||||
MEMO_CANCEL_SYNTAX
|
||||
@@ -2464,7 +2467,7 @@ MEMO_SET_UNKNOWN_OPTION
|
||||
|
||||
# SET NOTIFY responses
|
||||
MEMO_SET_NOTIFY_SYNTAX
|
||||
SET NOTIFY {ON | LOGON | NEW | MAIL | OFF }
|
||||
SET NOTIFY {ON | LOGON | NEW | MAIL | MAIL | NOMAIL | OFF }
|
||||
|
||||
MEMO_SET_NOTIFY_ON
|
||||
%s powiadomi Ciê o wiadomo¶ciach podczas logowania i w momencie ich nadej¶cia.
|
||||
@@ -3866,6 +3869,9 @@ OPER_JUPE_SYNTAX
|
||||
OPER_JUPE_HOST_ERROR
|
||||
Proszê u¿yæ prawid³owej nazwy serwera.
|
||||
|
||||
OPER_JUPE_INVALID_SERVER
|
||||
Nie mo¿na wykluczyæ samych serwisów lub uplinka serwisów.
|
||||
|
||||
# RAW responses
|
||||
OPER_RAW_SYNTAX
|
||||
RAW tekst
|
||||
@@ -3885,7 +3891,7 @@ OPER_CANNOT_RESTART
|
||||
|
||||
# IGNORE respondes
|
||||
OPER_IGNORE_SYNTAX
|
||||
Sk³adnia: IGNORE {ADD|DEL|LIST|CLEAR} [czas] [nick | maska]
|
||||
IGNORE {ADD|DEL|LIST|CLEAR} [czas] [nick | maska]
|
||||
|
||||
OPER_IGNORE_VALID_TIME
|
||||
Musisz podaæ prawid³ow± liczbê dla czasu.
|
||||
@@ -3977,7 +3983,7 @@ OPER_STAFF_AFORMAT
|
||||
|
||||
# DefCon Messages
|
||||
OPER_DEFCON_SYNTAX
|
||||
Sk³adnia: DEFCON [1|2|3|4|5]
|
||||
DEFCON [1|2|3|4|5]
|
||||
|
||||
OPER_DEFCON_DENIED
|
||||
Serwisy s± w trybie defcon, spróbuj ponownie pó¼niej.
|
||||
@@ -4269,7 +4275,7 @@ NEWS_RANDOM_TEXT
|
||||
[Losowa wiadomo¶æ - %s] %s
|
||||
|
||||
NEWS_LOGON_SYNTAX
|
||||
Sk³adnia: LOGONNEWS {ADD|DEL|LIST} [tekst|numer]
|
||||
LOGONNEWS {ADD|DEL|LIST} [tekst|numer]
|
||||
|
||||
NEWS_LOGON_LIST_HEADER
|
||||
Wiadomo¶ci powitalne:
|
||||
@@ -4282,7 +4288,7 @@ NEWS_LOGON_LIST_NONE
|
||||
Nie ma wiadomo¶ci powitalnych.
|
||||
|
||||
NEWS_LOGON_ADD_SYNTAX
|
||||
Sk³adnia: LOGONNEWS ADD tekst
|
||||
LOGONNEWS ADD tekst
|
||||
|
||||
NEWS_LOGON_ADD_FULL
|
||||
Lista wiadomo¶ci powitalnych jest pe³na!
|
||||
@@ -4291,7 +4297,7 @@ NEWS_LOGON_ADDED
|
||||
Dodano now± wiadomo¶æ powitaln± (#%d).
|
||||
|
||||
NEWS_LOGON_DEL_SYNTAX
|
||||
Sk³adnia: LOGONNEWS DEL {numer | ALL}
|
||||
LOGONNEWS DEL {numer | ALL}
|
||||
|
||||
NEWS_LOGON_DEL_NOT_FOUND
|
||||
Wiadomo¶æ powitalna #%d nie zosta³a znaleziona!
|
||||
@@ -4306,7 +4312,7 @@ NEWS_LOGON_DELETED_ALL
|
||||
Wszystkie wiadomo¶ci powitalne zosta³ skasowane.
|
||||
|
||||
NEWS_OPER_SYNTAX
|
||||
Sk³adnia: OPERNEWS {ADD|DEL|LIST} [tekst|numer]
|
||||
OPERNEWS {ADD|DEL|LIST} [tekst|numer]
|
||||
|
||||
NEWS_OPER_LIST_HEADER
|
||||
Wiadomo¶ci dla operatorów:
|
||||
@@ -4319,7 +4325,7 @@ NEWS_OPER_LIST_NONE
|
||||
Nie ma wiadomo¶ci dla operatorów.
|
||||
|
||||
NEWS_OPER_ADD_SYNTAX
|
||||
Sk³adnia: OPERNEWS ADD tekst
|
||||
OPERNEWS ADD tekst
|
||||
|
||||
NEWS_OPER_ADD_FULL
|
||||
Lista wiadomo¶ci jest pe³na!
|
||||
@@ -4328,7 +4334,7 @@ NEWS_OPER_ADDED
|
||||
Dodano now± wiadomo¶æ dla operatorów (#%d).
|
||||
|
||||
NEWS_OPER_DEL_SYNTAX
|
||||
Sk³adnia: OPERNEWS DEL {numer | ALL}
|
||||
OPERNEWS DEL {numer | ALL}
|
||||
|
||||
NEWS_OPER_DEL_NOT_FOUND
|
||||
Wiadomo¶æ dla operatorów #%d nie zosta³a znaleziona!
|
||||
@@ -4343,7 +4349,7 @@ NEWS_OPER_DELETED_ALL
|
||||
Wszystkie wiadomo¶ci dla operatorów zosta³y skasowane.
|
||||
|
||||
NEWS_RANDOM_SYNTAX
|
||||
Sk³adnia: RANDOMNEWS {ADD|DEL|LIST} [tekst|numer]
|
||||
RANDOMNEWS {ADD|DEL|LIST} [tekst|numer]
|
||||
|
||||
NEWS_RANDOM_LIST_HEADER
|
||||
Losowe wiadomo¶ci:
|
||||
@@ -4356,7 +4362,7 @@ NEWS_RANDOM_LIST_NONE
|
||||
Nie ma losowych wiadomo¶ci.
|
||||
|
||||
NEWS_RANDOM_ADD_SYNTAX
|
||||
Sk³adnia: RANDOMNEWS ADD tekst
|
||||
RANDOMNEWS ADD tekst
|
||||
|
||||
NEWS_RANDOM_ADD_FULL
|
||||
Lista wiadomo¶ci jest pe³na!
|
||||
@@ -4365,7 +4371,7 @@ NEWS_RANDOM_ADDED
|
||||
Dodano now± losow± wiadomo¶æ (#%d).
|
||||
|
||||
NEWS_RANDOM_DEL_SYNTAX
|
||||
Sk³adnia: RANDOMNEWS DEL {numer | ALL}
|
||||
RANDOMNEWS DEL {numer | ALL}
|
||||
|
||||
NEWS_RANDOM_DEL_NOT_FOUND
|
||||
Losowa wiadomo¶æ #%d nie zosta³a znaleziona!
|
||||
@@ -4386,13 +4392,11 @@ NEWS_HELP_LOGON
|
||||
|
||||
Edytuje lub wy¶wietla listê wiadomo¶ci wysy³anych po
|
||||
przy³±czeniu u¿ytkownika do sieci. Je¶li zdefniowanych
|
||||
wiadomo¶ci jest wiêcej tylko najnowsze %s zostanie
|
||||
wiadomo¶ci jest wiêcej tylko najnowsze %d zostanie
|
||||
wys³anych (aby zapobiec floodowaniu). Warto¶æ NewsCount
|
||||
mo¿e zostaæ zmieniona w pliku konfiguracyjym serwisów.
|
||||
|
||||
Polecenie LOGONNEWS LIST mo¿e byæ u¿yte przez ka¿dego
|
||||
IRC operatora w celu wylistowania wiadomo¶ci. Polecenia
|
||||
ADD i DEL s± zarezerwowane dla administratorów serwisów.
|
||||
LOGONNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_OPER
|
||||
Sk³adnia: OPERNEWS ADD tekst
|
||||
@@ -4401,13 +4405,11 @@ NEWS_HELP_OPER
|
||||
|
||||
Edytuje lub wy¶wietla listê wiadomo¶ci wysy³anych po
|
||||
wykonaniu polecenia /OPER. Je¶li zdefiniowanych
|
||||
wiadomo¶ci jest wiêcej tylko najnowsze %s zostanie
|
||||
wiadomo¶ci jest wiêcej tylko najnowsze %d zostanie
|
||||
wys³anych (aby zapobiec floodowaniu). Warto¶æ NewsCount
|
||||
mo¿e zostaæ zmieniona w pliku konfiguracyjym serwisów.
|
||||
|
||||
Polecenie OPERNEWS LIST mo¿e byæ u¿yte przez ka¿dego
|
||||
IRC operatora w celu wylistowania wiadomo¶ci. Polecenia
|
||||
ADD i DEL s± zarezerwowane dla administratorów serwisów.
|
||||
OPERNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_RANDOM
|
||||
Sk³adnia: RANDOMNEWS ADD tekst
|
||||
@@ -4418,9 +4420,7 @@ NEWS_HELP_RANDOM
|
||||
Po po³±czeniu z sieci± u¿ytkownik otrzyma dok³adnie
|
||||
jedn± wylosowan± z tej listy wiadomo¶æ.
|
||||
|
||||
Polecenie RANDOMNEWS LIST mo¿e byæ u¿yte przez ka¿dego
|
||||
IRC operatora w celu wylistowania wiadomo¶ci. Polecenia
|
||||
ADD i DEL s± zarezerwowane dla administratorów serwisów.
|
||||
RANDOMNEWS may only be used by Services admins.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
@@ -4800,7 +4800,7 @@ NICK_HELP_SET_HIDE
|
||||
Sk³adnia: SET HIDE {EMAIL | STATUS | USERMASK | QUIT} {ON | OFF}
|
||||
|
||||
To polecenie pozwala na ukrycie czê¶ci informacji, które
|
||||
s± wy¶wietlane przez polecenie INFO serwisu %s.
|
||||
s± wy¶wietlane przez polecenie %S INFO serwisu.
|
||||
Pierwszy argument okre¶la ukrywan± informacjê:
|
||||
EMAIL - adres e-mail, USERMASK - ostatnio u¿ywany host,
|
||||
QUIT - ostatnia wiadomo¶æ po¿egnalna, STATUS - status
|
||||
@@ -4926,7 +4926,7 @@ NICK_HELP_SASET_HIDE
|
||||
Sk³adnia: SASET nick HIDE {EMAIL | STATUS | USERMASK | QUIT} {ON | OFF}
|
||||
|
||||
To polecenie pozwala na ukrycie czê¶ci informacji, które
|
||||
s± wy¶wietlane przez polecenie INFO serwisu %s.
|
||||
s± wy¶wietlane przez polecenie %S INFO serwisu.
|
||||
Pierwszy argument okre¶la ukrywan± informacjê:
|
||||
EMAIL - adres e-mail, USERMASK - ostatnio u¿ywany host,
|
||||
QUIT - ostatnia wiadomo¶æ po¿egnalna, STATUS - status
|
||||
@@ -5307,7 +5307,7 @@ CHAN_HELP_CMD_INFO
|
||||
INFO Pokazuje informacje o zarejestrowanym kanale
|
||||
|
||||
CHAN_HELP_CMD_INVITE
|
||||
INVITE Zaprasza Ciebie lub wskazany nick na kana³
|
||||
INVITE Zaprasza osobê wydaj±c± polecenie na kana³
|
||||
|
||||
CHAN_HELP_CMD_KICK
|
||||
KICK Wyrzuca wskazany nick z kana³u
|
||||
@@ -5593,12 +5593,10 @@ CHAN_HELP_SET_PRIVATE
|
||||
CHAN_HELP_SET_RESTRICTED
|
||||
Sk³adnia: SET kana³ RESTRICTED {ON | OFF}
|
||||
|
||||
W³±cza lub wy³±cza ograniczenie dostêpu do kana³u.
|
||||
W³±czenie tej opcji powoduje usuwanie z kana³u
|
||||
u¿ytkowników, którzy nie maj± uprawnieñ operatora.
|
||||
Przy w³±czonej opcji secure ops u¿ytkownicy bez
|
||||
zdefiniowanego poziomu dostêpu oraz z ujemnym poziomem
|
||||
tak¿e bêd± usuwani.
|
||||
W³±cza lub wy³±cza opcjê ograniczonego dostêpu do kana³u.
|
||||
Po w³±czeniu tej opcji tylko osoby znajduj±ce siê na
|
||||
li¶cie dostêpu bêd± mog³y przebywaæ na kanale. Pozostali
|
||||
u¿ytkownicy bêd± banowani, a nastêpnie usuwani z kana³u.
|
||||
|
||||
CHAN_HELP_SET_SECURE
|
||||
Sk³adnia: SET kana³ SECURE {ON | OFF}
|
||||
@@ -6222,13 +6220,14 @@ CHAN_HELP_CLEAR
|
||||
Umo¿liwia kompleksowe usuniêcie niektórych ustawieñ na
|
||||
kanale poprzez %S. Dostêpne opcje:
|
||||
|
||||
MODES Zdejmuje wszystkie tryby z kana³u
|
||||
BANS Zdejmuje wszystkie bany na kanale
|
||||
EXCEPTS Zdejmuje wyj±tki od banów na kanale
|
||||
MODES Usuwa tryby z kana³u
|
||||
BANS Usuwa bany z kana³u
|
||||
EXCEPTS Usuwa wyj±tki od banów z kana³u
|
||||
INVITES Usuwa zaproszenia z kana³u
|
||||
OPS Odbiera wszystkim status operatora
|
||||
HOPS Odbiera wszystkim status pó³-operatora
|
||||
VOICES Odbiera wszystkim prawo g³osu
|
||||
USERS Wykopuje wszystkich z kana³u
|
||||
USERS Usuwa u¿ytkowników z kana³u
|
||||
|
||||
Standardowo ta komenda jest dostêpna dla w³a¶ciciela kana³u.
|
||||
|
||||
@@ -6495,7 +6494,7 @@ MEMO_HELP_SET
|
||||
%R%S HELP SET opcja
|
||||
|
||||
MEMO_HELP_SET_NOTIFY
|
||||
Sk³adnia: SET NOTIFY {ON | LOGON | NEW | OFF}
|
||||
Sk³adnia: SET NOTIFY {ON | LOGON | NEW | MAIL | NOMAIL | OFF}
|
||||
|
||||
Ustala sposób wys³ania powiadomieñ o nowych wiadomo¶ciach:
|
||||
|
||||
@@ -6508,6 +6507,9 @@ MEMO_HELP_SET_NOTIFY
|
||||
trybu /AWAY.
|
||||
NEW Powiadomienie bêdzie wysy³ane jedynie w
|
||||
momencie otrzymania wiadomo¶ci.
|
||||
MAIL Powiadomienia bêd± wysy³ane e-mailem oraz
|
||||
wedle pozosta³ych ustawieñ.
|
||||
NOMAIL Powiadomienia nie bêd± wysy³ane e-mailem.
|
||||
OFF Powiadomienia nie bêd± wysy³ane.
|
||||
|
||||
Opcja ON jest kombinacj± opcji LOGON oraz NEW.
|
||||
@@ -6689,7 +6691,7 @@ OPER_HELP_CMD_DEFCON
|
||||
DEFCON Modyfikuje poziom systemu DefCon
|
||||
|
||||
OPER_HELP_CMD_CHANKILL
|
||||
CHANKILL Od³±cza wszystkich u¿ytkowników na kanale
|
||||
CHANKILL AKILL wszystkich u¿ytkowników na kanale
|
||||
|
||||
OPER_HELP_CMD_OLINE
|
||||
OLINE Daje flagi operatora wybranemu u¿ytkownikowi
|
||||
@@ -7575,7 +7577,7 @@ HOST_DELALL
|
||||
Vhosty dla grupy %s zosta³y usuniête.
|
||||
|
||||
HOST_DELALL_SYNTAX
|
||||
Sk³adnia: DELALL <nick>.
|
||||
DELALL <nick>.
|
||||
|
||||
HOST_IDENT_SETALL
|
||||
Vhosty dla grupy %s zosta³y zmienione na %s@%s.
|
||||
@@ -7596,10 +7598,10 @@ HOST_NOREG
|
||||
Nie znaleziono %s w bazie serwisu NickServ.
|
||||
|
||||
HOST_SET_SYNTAX
|
||||
Sk³adnia %R%s SET <nick> <maska-hosta>.
|
||||
SET <nick> <maska-hosta>.
|
||||
|
||||
HOST_SETALL_SYNTAX
|
||||
Sk³adnia %R%s SETALL <nick> <maska-hosta>.
|
||||
SETALL <nick> <maska-hosta>.
|
||||
|
||||
HOST_DENIED
|
||||
Brak dostêpu.
|
||||
@@ -7623,9 +7625,9 @@ HOST_DEL
|
||||
Vhost dla %s zosta³ usuniêty.
|
||||
|
||||
HOST_DEL_SYNTAX
|
||||
Sk³adnia: %R%s DEL <nick>.
|
||||
DEL <nick>.
|
||||
HOST_OFF
|
||||
Your vhost was removed and the normal cloaking restored.
|
||||
Twój vhost zosta³ usuniêty i zosta³o w³±czone normalne ukrywanie hosta.
|
||||
HOST_OFF_UNREAL
|
||||
Twój vhost zosta³ usuniêty. Aby w³±czyæ standardowe ukrywanie hosta wpisz /mode %s +%s
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# Portuguese language file.
|
||||
#
|
||||
# (C) 2003-2008 Anope Team
|
||||
# (C) 2003-2014 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Please read COPYING and README for furhter details.
|
||||
# Please read COPYING and README for further details.
|
||||
#
|
||||
# Based on the original code of Epona by Lara.
|
||||
# Based on the original code of Services by Andy Church.
|
||||
@@ -683,7 +683,7 @@ NICK_SASET_HIDE_STATUS_OFF
|
||||
|
||||
# SASET MSG responses
|
||||
NICK_SASET_MSG_SYNTAX
|
||||
SSAET nickname PRIVATE {ON | OFF}
|
||||
SSAET nickname MSG {ON | OFF}
|
||||
NICK_SASET_MSG_ON
|
||||
Services will now reply to %s with messages.
|
||||
NICK_SASET_MSG_OFF
|
||||
@@ -711,7 +711,7 @@ NICK_SASET_LANGUAGE_SYNTAX
|
||||
NICK_SASET_LANGUAGE_UNKNOWN
|
||||
Unknown language number %d. Type %R%s HELP SET LANGUAGE for a list of languages.
|
||||
NICK_SASET_LANGUAGE_CHANGED
|
||||
Language changed to Portuguese.
|
||||
Language for %s changed to %s.
|
||||
|
||||
|
||||
# ACCESS responses
|
||||
@@ -1808,6 +1808,10 @@ MEMO_SENT
|
||||
MEMO_MASS_SENT
|
||||
Uma mensagem global foi enviada a todos os usuários registrados.
|
||||
|
||||
# STAFF responses
|
||||
MEMO_STAFF_SYNTAX
|
||||
STAFF memo-text
|
||||
|
||||
# CANCEL responses
|
||||
MEMO_CANCEL_SYNTAX
|
||||
CANCEL {nick | canal}
|
||||
@@ -1872,7 +1876,7 @@ MEMO_SET_UNKNOWN_OPTION
|
||||
|
||||
# SET NOTIFY responses
|
||||
MEMO_SET_NOTIFY_SYNTAX
|
||||
SET NOTIFY {ON | LOGON | NEW | OFF}
|
||||
SET NOTIFY {ON | LOGON | NEW | MAIL | NOMAIL | OFF}
|
||||
MEMO_SET_NOTIFY_ON
|
||||
%s irá agora notificá-lo de novos memos quando você conectar, quando eles lhe forem enviados ou quando desativar o /AWAY.
|
||||
MEMO_SET_NOTIFY_LOGON
|
||||
@@ -2887,6 +2891,8 @@ OPER_JUPE_SYNTAX
|
||||
JUPE servidor [motivo]
|
||||
OPER_JUPE_HOST_ERROR
|
||||
Por favor, use um nome de servidor válido quando estiver "jupando".
|
||||
OPER_JUPE_INVALID_SERVER
|
||||
You can not jupe your services server or your uplink server.
|
||||
|
||||
# RAW responses
|
||||
OPER_RAW_SYNTAX
|
||||
@@ -2906,7 +2912,7 @@ OPER_CANNOT_RESTART
|
||||
|
||||
# LISTIGNORE responses
|
||||
OPER_IGNORE_SYNTAX
|
||||
Sintaxe: IGNORE {ADD|DEL|LIST|CLEAR} [tempo] [nick | mask]
|
||||
IGNORE {ADD|DEL|LIST|CLEAR} [tempo] [nick | mask]
|
||||
OPER_IGNORE_VALID_TIME
|
||||
Você precisa digitar um número válido como tempo.
|
||||
OPER_IGNORE_TIME_DONE
|
||||
@@ -2978,7 +2984,7 @@ OPER_STAFF_AFORMAT
|
||||
# DefCon Messages
|
||||
|
||||
OPER_DEFCON_SYNTAX
|
||||
Sintaxe: DEFCON [1|2|3|4|5]
|
||||
DEFCON [1|2|3|4|5]
|
||||
OPER_DEFCON_DENIED
|
||||
Este serviço está temporariamente desabilitado, por favor tente novamente mais tarde
|
||||
OPER_DEFCON_NO_CONF
|
||||
@@ -3319,14 +3325,12 @@ NEWS_HELP_LOGON
|
||||
|
||||
Edits or displays the list of logon news messages. When a
|
||||
user connects to the network, these messages will be sent
|
||||
to them. (However, no more than %s messages will be
|
||||
to them. (However, no more than %d messages will be
|
||||
sent in order to avoid flooding the user. If there are
|
||||
more news messages, only the most recent will be sent.)
|
||||
NewsCount can be configured in services.conf.
|
||||
|
||||
LOGONNEWS LIST may be used by any IRC operator to list the
|
||||
current news messages. ADD and DEL may only be used by
|
||||
Services admins.
|
||||
LOGONNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_OPER
|
||||
Syntax: OPERNEWS ADD text
|
||||
@@ -3335,14 +3339,12 @@ NEWS_HELP_OPER
|
||||
|
||||
Edits or displays the list of oper news messages. When a
|
||||
user opers up (with the /OPER command), these messages will
|
||||
be sent to them. (However, no more than %s messages will
|
||||
be sent to them. (However, no more than %d messages will
|
||||
be sent in order to avoid flooding the user. If there are
|
||||
more news messages, only the most recent will be sent.)
|
||||
NewsCount can be configured in services.conf.
|
||||
|
||||
OPERNEWS LIST may be used by any IRC operator to list the
|
||||
current oper news messages. ADD and DEL may only be used by
|
||||
Services admins.
|
||||
OPERNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_RANDOM
|
||||
Sintaxe: RANDOMNEWS ADD texto
|
||||
@@ -3353,9 +3355,7 @@ NEWS_HELP_RANDOM
|
||||
se conecta à rede, uma (apenas uma) das random news será
|
||||
aleatóriamente escolhida e enviada a ele.
|
||||
|
||||
RANDOMNEWS LIST pode ser usado por qualquer Operador
|
||||
para listar as random news. ADD e DEL só podem ser usados
|
||||
pelos Administradores dos Services.
|
||||
RANDOMNEWS may only be used by Services admins.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
@@ -4219,7 +4219,7 @@ CHAN_HELP_CMD_GETKEY
|
||||
CHAN_HELP_CMD_INFO
|
||||
INFO Mostra informações sobre algum canal registrado
|
||||
CHAN_HELP_CMD_INVITE
|
||||
INVITE Pede ao ChanServ para convidar você ou um nick fornecido para um canal
|
||||
INVITE Tells ChanServ to invite you into a channel
|
||||
CHAN_HELP_CMD_KICK
|
||||
KICK Kicka (expulsa) um nick de um canal
|
||||
CHAN_HELP_CMD_LIST
|
||||
@@ -4495,12 +4495,9 @@ CHAN_HELP_SET_PRIVATE
|
||||
CHAN_HELP_SET_RESTRICTED
|
||||
Sintaxe: SET canal RESTRICTED {ON|OFF}
|
||||
|
||||
Ativa ou desativa a opção de acesso restrito para um canal.
|
||||
Quando o acesso restrito estiver ativado, usuários que
|
||||
normalmente não possuem privilegios de OP no canal
|
||||
(usuários com nível negativo de acesso e, se secure ops
|
||||
estiver ativado, usuários que não pertencem à lista de
|
||||
acesso) serão imediatamente kickados e banidos do canal.
|
||||
Enables or disables the restricted access option for a
|
||||
channel. When restricted access is set, users not on
|
||||
the access list will instead be kicked and banned from the channel.
|
||||
|
||||
CHAN_HELP_SET_SECURE
|
||||
Sintaxe: SET canal SECURE {ON|OFF}
|
||||
@@ -5075,6 +5072,7 @@ CHAN_HELP_CLEAR
|
||||
travados com MLOCK.
|
||||
BANS Remove todos os bans do canal.
|
||||
EXCEPTS Remove todos os excepts do canal.
|
||||
INVITES Clears all invites on the channel.
|
||||
OPS Remove o status de Operador de canal (modo +o)
|
||||
de todos os Operadores do canal.
|
||||
HOPS Remove o status de Half-Operador de canal (modo +h)
|
||||
@@ -5348,7 +5346,7 @@ MEMO_HELP_SET
|
||||
uma opção específica.
|
||||
|
||||
MEMO_HELP_SET_NOTIFY
|
||||
Sintaxe: SET NOTIFY {ON | LOGON | NEW | OFF}
|
||||
Sintaxe: SET NOTIFY {ON | LOGON | NEW | MAIL | NOMAIL | OFF}
|
||||
|
||||
Altera quando você será notificado sobre novas mensagens:
|
||||
|
||||
@@ -5359,6 +5357,9 @@ MEMO_HELP_SET_NOTIFY
|
||||
conectar ou quando voltar de um /AWAY.
|
||||
NEW Você só será notificado sobre mensagens quando elas
|
||||
forem enviadas a você.
|
||||
MAIL You will be notified of memos by email aswell as
|
||||
any other settings you have.
|
||||
NOMAIL You will not be notified of memos by email.
|
||||
OFF Você não receberá nenhuma notificação sobre mensagens.
|
||||
|
||||
ON é essencialmente a combinação de LOGON e NEW.
|
||||
@@ -5515,7 +5516,7 @@ OPER_HELP_CMD_SHUTDOWN
|
||||
OPER_HELP_CMD_DEFCON
|
||||
DEFCON Manipula o sistema DefCon
|
||||
OPER_HELP_CMD_CHANKILL
|
||||
CHANKILL Derruba todos os usuários de um canal específico
|
||||
CHANKILL AKILL todos os usuários de um canal específico
|
||||
OPER_HELP_CMD_OLINE
|
||||
OLINE Dá flags de Operador a um determinado usuário
|
||||
OPER_HELP_CMD_UMODE
|
||||
@@ -6494,7 +6495,7 @@ HOST_SETALL
|
||||
HOST_DELALL
|
||||
vhosts do grupo %s foi removido.
|
||||
HOST_DELALL_SYNTAX
|
||||
Sintaxe: DELALL <nick>.
|
||||
DELALL <nick>.
|
||||
HOST_IDENT_SETALL
|
||||
vhost do grupo %s ajustado para %s@%s.
|
||||
HOST_SET_ERROR
|
||||
@@ -6508,9 +6509,9 @@ HOST_SET_IDENTTOOLONG
|
||||
HOST_NOREG
|
||||
Usuário %s não encontrado na DB do NickServ.
|
||||
HOST_SET_SYNTAX
|
||||
Sintaxe: %R%s set <nick> <hostmask>.
|
||||
SET <nick> <hostmask>.
|
||||
HOST_SETALL_SYNTAX
|
||||
Sintaxe: %R%s setall <nick> <hostmask>.
|
||||
SETALL <nick> <hostmask>.
|
||||
HOST_DENIED
|
||||
Acesso Negado.
|
||||
HOST_NOT_ASSIGNED
|
||||
@@ -6526,7 +6527,7 @@ HOST_NOT_REGED
|
||||
HOST_DEL
|
||||
vhost para %s removido.
|
||||
HOST_DEL_SYNTAX
|
||||
Sintaxe: %R%s del <nick>.
|
||||
DEL <nick>.
|
||||
HOST_OFF
|
||||
Your vhost was removed and the normal cloaking restored.
|
||||
HOST_OFF_UNREAL
|
||||
@@ -6534,9 +6535,9 @@ HOST_OFF_UNREAL
|
||||
HOST_NO_VIDENT
|
||||
Seu IRCD não suporta vIdent's, se isto não está certo, por favor reporte isso como um possível bug.
|
||||
HOST_GROUP
|
||||
Todos os vhost's no grupo %s foram ajustados para %s
|
||||
Todos os vhosts no grupo %s foram ajustados para %s
|
||||
HOST_IDENT_GROUP
|
||||
Todos os vhost's no grupo %s foram ajustados para %s@%s
|
||||
Todos os vhosts no grupo %s foram ajustados para %s@%s
|
||||
HOST_LIST_FOOTER
|
||||
Exibidos todos os registros (Contador: %d)
|
||||
HOST_LIST_RANGE_FOOTER
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Russian language file for Anope
|
||||
#
|
||||
# (C) 2003-2008 Anope Team
|
||||
# (C) 2003-2014 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Please read COPYING and README for further details.
|
||||
@@ -694,7 +694,7 @@ NICK_SASET_LANGUAGE_SYNTAX
|
||||
NICK_SASET_LANGUAGE_UNKNOWN
|
||||
ßçûêà ïîä íîìåðîì %d íå ñóùåñòâóåò. Ñïèñîê äîñòóïíûõ ÿçûêîâ: %R%s HELP SET LANGUAGE.
|
||||
NICK_SASET_LANGUAGE_CHANGED
|
||||
ßçûê äëÿ óêàçàííîãî íèêà èçìåíåí íà Ðóññêèé.
|
||||
Language for %s changed to %s.
|
||||
|
||||
# ACCESS responses
|
||||
NICK_ACCESS_SYNTAX
|
||||
@@ -1785,6 +1785,10 @@ MEMO_SENT
|
||||
Ìåìî-ñîîáùåíèå äëÿ %s óñïåøíî îòïðàâëåíî.
|
||||
MEMO_MASS_SENT
|
||||
Ìàññîâîå ñîîáùåíèå óñïåøíî îòïðàâëåíî âñåì çàðåãèñòðèðîâàííûì ïîëüçîâàòåëÿì.
|
||||
|
||||
# STAFF responses
|
||||
MEMO_STAFF_SYNTAX
|
||||
STAFF memo-text
|
||||
|
||||
# CANCEL responses
|
||||
MEMO_CANCEL_SYNTAX
|
||||
@@ -1850,7 +1854,7 @@ MEMO_SET_UNKNOWN_OPTION
|
||||
|
||||
# SET NOTIFY responses
|
||||
MEMO_SET_NOTIFY_SYNTAX
|
||||
SET NOTIFY {ON | LOGON | NEW | OFF}
|
||||
SET NOTIFY {ON | LOGON | NEW | MAIL | NOMAIL | OFF}
|
||||
MEMO_SET_NOTIFY_ON
|
||||
Ñ ýòîãî ìîìåíòà, %s áóäåò óâåäîìëÿòü âàñ î íîâûõ ñîîáùåíèÿõ ñðàçó ïîñëå èäåíòèôèêàöèè ê íèêó èëè ïðè ïîñòóïëåíèè íîâûõ ñîîáùåíèé.
|
||||
MEMO_SET_NOTIFY_LOGON
|
||||
@@ -2444,6 +2448,8 @@ OPER_STATS_CHANSERV_MEM
|
||||
ChanServ : %6d çàïèñåé, %5d kB
|
||||
OPER_STATS_BOTSERV_MEM
|
||||
BotServ : %6d çàïèñåé, %5d kB
|
||||
OPER_STATS_HOSTSERV_MEM
|
||||
HostServ : %6d çàïèñåé, %5d kB
|
||||
OPER_STATS_OPERSERV_MEM
|
||||
OperServ : %6d çàïèñåé, %5d kB
|
||||
OPER_STATS_SESSIONS_MEM
|
||||
@@ -2858,6 +2864,8 @@ OPER_JUPE_SYNTAX
|
||||
JUPE èìÿ_ñåðâåðà [ïðè÷èíà]
|
||||
OPER_JUPE_HOST_ERROR
|
||||
 êà÷åñòâå îñíîâíîãî ïàðàìåòðà âû äîëæíû óêàçàòü ðåàëüíîå èìÿ ñåðåâåðà
|
||||
OPER_JUPE_INVALID_SERVER
|
||||
You can not jupe your services server or your uplink server.
|
||||
|
||||
# RAW responses
|
||||
OPER_RAW_SYNTAX
|
||||
@@ -2877,7 +2885,7 @@ OPER_CANNOT_RESTART
|
||||
|
||||
# IGNORE respondes
|
||||
OPER_IGNORE_SYNTAX
|
||||
Ñèíòàêñòñ: IGNORE {ADD|DEL|LIST|CLEAR} [âðåìÿ] [íèê]
|
||||
IGNORE {ADD|DEL|LIST|CLEAR} [âðåìÿ] [íèê]
|
||||
OPER_IGNORE_VALID_TIME
|
||||
Çíà÷åíèå ïàðàìåòðà "âðåìÿ" óêàçàíî íå âåðíî.
|
||||
OPER_IGNORE_TIME_DONE
|
||||
@@ -2947,7 +2955,7 @@ OPER_STAFF_AFORMAT
|
||||
# DefCon Messages
|
||||
|
||||
OPER_DEFCON_SYNTAX
|
||||
Ñèíòàêñèñ: DEFCON [1|2|3|4|5]
|
||||
DEFCON [1|2|3|4|5]
|
||||
OPER_DEFCON_DENIED
|
||||
Íà äàííûé ìîìåíò ñåðâèñû ðàáîòàþò â DEFCON-ðåæèìå. Ïîâòîðèòå ñâîé çàïðîñ ïîçæå.
|
||||
OPER_DEFCON_NO_CONF
|
||||
@@ -3206,7 +3214,7 @@ NEWS_RANDOM_TEXT
|
||||
[Ñëó÷àéíàÿ íîâîñòü - %s] %s
|
||||
|
||||
NEWS_LOGON_SYNTAX
|
||||
Ñèíòàêñèñ: LOGONNEWS {ADD|DEL|LIST} [òåêñò|íîìåð]
|
||||
LOGONNEWS {ADD|DEL|LIST} [òåêñò|íîìåð]
|
||||
NEWS_LOGON_LIST_HEADER
|
||||
Òåêóùèå ñïèñîê íîâîñòåé:
|
||||
NEWS_LOGON_LIST_ENTRY
|
||||
@@ -3215,13 +3223,13 @@ NEWS_LOGON_LIST_ENTRY
|
||||
NEWS_LOGON_LIST_NONE
|
||||
Ñïèñîê íîâîñòåé ïóñò.
|
||||
NEWS_LOGON_ADD_SYNTAX
|
||||
Ñèíòàêñèñ: LOGONNEWS ADD òåêñò
|
||||
LOGONNEWS ADD òåêñò
|
||||
NEWS_LOGON_ADD_FULL
|
||||
Ñïèñîê íîâîñòåé ïåðåïîëíåí.
|
||||
NEWS_LOGON_ADDED
|
||||
Íîâîñòü óñïåøíî äîáàâëåíà, åå íîìåð: #%d
|
||||
NEWS_LOGON_DEL_SYNTAX
|
||||
Ñèíòàêñèñ: LOGONNEWS DEL {íîìåð | ALL}
|
||||
LOGONNEWS DEL {íîìåð | ALL}
|
||||
NEWS_LOGON_DEL_NOT_FOUND
|
||||
Íîâîñòü ïîä íîìåðîì #%d íå îáíàðóæåíà.
|
||||
NEWS_LOGON_DELETED
|
||||
@@ -3258,7 +3266,7 @@ NEWS_OPER_DELETED_ALL
|
||||
Ñïèñîê íîâîñòåé äëÿ îïåðàòîðîâ ïîëíîñòüþ î÷èùåí.
|
||||
|
||||
NEWS_RANDOM_SYNTAX
|
||||
Ñèíòàêñèñ: RANDOMNEWS {ADD|DEL|LIST} [òåêñò|íîìåð]
|
||||
RANDOMNEWS {ADD|DEL|LIST} [òåêñò|íîìåð]
|
||||
NEWS_RANDOM_LIST_HEADER
|
||||
Ñïèñîê ñëó÷àéíûõ íîâîñòåé:
|
||||
NEWS_RANDOM_LIST_ENTRY
|
||||
@@ -3267,13 +3275,13 @@ NEWS_RANDOM_LIST_ENTRY
|
||||
NEWS_RANDOM_LIST_NONE
|
||||
Ñïèñîê ñëó÷àéíûõ íîâîñòåé ïóñò.
|
||||
NEWS_RANDOM_ADD_SYNTAX
|
||||
Ñèíòàêñèñ: RANDOMNEWS ADD òåêñò
|
||||
RANDOMNEWS ADD òåêñò
|
||||
NEWS_RANDOM_ADD_FULL
|
||||
Ñïèñîê ñëó÷àéíûõ íîâîñòåé ïåðåïîëíåí.
|
||||
NEWS_RANDOM_ADDED
|
||||
Íîâîñòü óñïåøíî äîáàâëåíà, åå íîìåð: #%d
|
||||
NEWS_RANDOM_DEL_SYNTAX
|
||||
Ñèíòàêñèñ: RANDOMNEWS DEL {íîìåð | ALL}
|
||||
RANDOMNEWS DEL {íîìåð | ALL}
|
||||
NEWS_RANDOM_DEL_NOT_FOUND
|
||||
Íîâîñòü ïîä íîìåðîì #%d íå îáíàðóæåíà.
|
||||
NEWS_RANDOM_DELETED
|
||||
@@ -3291,7 +3299,7 @@ NEWS_HELP_LOGON
|
||||
Ïîçâîëÿåò óïðàâëÿòü ñïèñêîì íîâîñòåé, êîòîðûå áóäóò àâòîìàòè÷åñêè
|
||||
âûäàâàòüñÿ ïîëüçîâàòåëþ ñðàçó æå, êàê òîëüêî îí ïîäêëþ÷èòñÿ ê ñåòè.
|
||||
Ñòîèò çàìåòèòü, ÷òî âî èçáåæàíèå ôëóäà ïîëüçîâàòåëü ïîëó÷èò òîëüêî
|
||||
%s íîâîñòü(è), òàê ÷òî åñëè ó âàñ â ñïèñêå èõ áîëüøå - ïîêàçàíû
|
||||
%d íîâîñòü(è), òàê ÷òî åñëè ó âàñ â ñïèñêå èõ áîëüøå - ïîêàçàíû
|
||||
áóäóò òîëüêî ïîñëåäíèå èç íèõ. Çíà÷åíèå NewsCount, îòâå÷àþùåå çà
|
||||
îäíîâðåìåííî ïîñûëàåìîå êîë-âî íîâîñòåé, óêàçûâàåòñÿ â services.conf
|
||||
|
||||
@@ -3301,9 +3309,7 @@ NEWS_HELP_LOGON
|
||||
êà÷åñòâå ïàðàìåòðà âû ìîæåòå óêàçàòü íîìåð íîâîñòè - ÷òî áû óäàëèòü
|
||||
îäíó íîâîñòü, èëè ALL - ÷òî áû î÷èñòèòü ñïèñîê íîâîñòåé ïîëíîñòüþ.
|
||||
|
||||
Êîìàíäà LOGONNEWS LIST âûâîäèò ñïèñîê òåêóùèõ íîâîñòåé è ìîæåò áûòü
|
||||
èñïîëüçîâàíà ëþáûì IRC-îïåðàòîðîì. Êîìàíäû ADD è DEL äîñòóïíû òîëüêî
|
||||
Àäìèíèñòðàòîðàì ñåðâèñîâ.
|
||||
LOGONNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_OPER
|
||||
Ñèíòàêñèñ: OPERNEWS ADD òåêñò
|
||||
@@ -3314,7 +3320,7 @@ NEWS_HELP_OPER
|
||||
ïîëüçîâàòåëü ïîëó÷èò ñòàòóñ IRC-îïåðàòîðà (èñïîëüçîâàâ êîìàíäó /OPER),
|
||||
äàííûå ñîîáùåíèÿ áóäóò åìó îòïðàâëåíû àâòîìàòè÷åñêè.
|
||||
Ñòîèò çàìåòèòü, ÷òî âî èçáåæàíèå ôëóäà ïîëüçîâàòåëü ïîëó÷èò òîëüêî
|
||||
%s íîâîñòü(è), òàê ÷òî åñëè ó âàñ â ñïèñêå èõ áîëüøå - ïîêàçàíû
|
||||
%d íîâîñòü(è), òàê ÷òî åñëè ó âàñ â ñïèñêå èõ áîëüøå - ïîêàçàíû
|
||||
áóäóò òîëüêî ïîñëåäíèå èç íèõ. Çíà÷åíèå NewsCount, îòâå÷àþùåå çà
|
||||
îäíîâðåìåííî ïîñûëàåìîå êîë-âî íîâîñòåé, óêàçûâàåòñÿ â services.conf
|
||||
|
||||
@@ -3324,9 +3330,7 @@ NEWS_HELP_OPER
|
||||
êà÷åñòâå ïàðàìåòðà âû ìîæåòå óêàçàòü íîìåð íîâîñòè - ÷òî áû óäàëèòü
|
||||
îäíó íîâîñòü, èëè ALL - ÷òî áû î÷èñòèòü ñïèñîê íîâîñòåé ïîëíîñòüþ.
|
||||
|
||||
Êîìàíäà OPERNEWS LIST âûâîäèò ñïèñîê òåêóùèõ íîâîñòåé è ìîæåò áûòü
|
||||
èñïîëüçîâàíà ëþáûì IRC-îïåðàòîðîì. Êîìàíäû ADD è DEL äîñòóïíû òîëüêî
|
||||
Àäìèíèñòðàòîðàì ñåðâèñîâ.
|
||||
OPERNEWS may only be used by Services admins.
|
||||
|
||||
NEWS_HELP_RANDOM
|
||||
Ñèíòàêñèñ: RANDOMNEWS ADD òåêñò
|
||||
@@ -3344,9 +3348,7 @@ NEWS_HELP_RANDOM
|
||||
êà÷åñòâå ïàðàìåòðà âû ìîæåòå óêàçàòü íîìåð íîâîñòè - ÷òî áû óäàëèòü
|
||||
îäíó íîâîñòü, èëè ALL - ÷òî áû î÷èñòèòü ñïèñîê íîâîñòåé ïîëíîñòüþ.
|
||||
|
||||
Êîìàíäà RANDOMNEWS LIST âûâîäèò ñïèñîê òåêóùèõ íîâîñòåé è ìîæåò
|
||||
áûòü èñïîëüçîâàíà ëþáûì IRC-Îïåðàòîðîì. Êîìàíäû ADD è DEL äîñòóïíû
|
||||
òîëüêî Àäìèíèñòðàòîðàì ñåðâèñîâ.
|
||||
RANDOMNEWS may only be used by Services admins.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
@@ -4245,7 +4247,7 @@ CHAN_HELP_CMD_GETKEY
|
||||
CHAN_HELP_CMD_INFO
|
||||
INFO Çàïðîñ èíôîðìàöèè îá óêàçàííîì êàíàëå
|
||||
CHAN_HELP_CMD_INVITE
|
||||
INVITE Çàñòàâëÿåò ñåðâèñû ïðèãëàñèòü âàñ íà óêàçàííûé êàíàë.
|
||||
INVITE Tells ChanServ to invite you into a channel
|
||||
CHAN_HELP_CMD_KICK
|
||||
KICK Âûêèäûâàåò óêàçàííîãî ïîëüçîâàòåëÿ ñ êàíàëà
|
||||
CHAN_HELP_CMD_LIST
|
||||
@@ -4525,9 +4527,9 @@ CHAN_HELP_SET_PRIVATE
|
||||
CHAN_HELP_SET_RESTRICTED
|
||||
Ñèíòàêñèñ: SET #êàíàë RESTRICTED {ON | OFF}
|
||||
|
||||
Àêòèâèðóåò/äåàêòèâèðóåò îãðàíè÷åííûé äîñòóï íà êàíàë. Äàííûé ðåæèì
|
||||
ïîçâîëÿåò çàïðåòèòü äîñòóï íà êàíàë âñåì òåì ïîëüçîâàòåëÿì, êîòîðûå
|
||||
íå ÷èñëÿòñÿ â ñïèñêå äîñòóïà êàíàëà.
|
||||
Enables or disables the restricted access option for a
|
||||
channel. When restricted access is set, users not on
|
||||
the access list will instead be kicked and banned from the channel.
|
||||
|
||||
CHAN_HELP_SET_SECURE
|
||||
Ñèíòàêñèñ: SET #êàíàë SECURE {ON | OFF}
|
||||
@@ -5409,7 +5411,7 @@ MEMO_HELP_SET
|
||||
êîìàíäîé %R%S HELP SET îïöèÿ.
|
||||
|
||||
MEMO_HELP_SET_NOTIFY
|
||||
Ñèíòàêñèñ: SET NOTIFY {ON | LOGON | NEW | OFF}
|
||||
Ñèíòàêñèñ: SET NOTIFY {ON | LOGON | NEW | MAIL | NOMAIL | OFF}
|
||||
|
||||
Äàííàÿ îïöèÿ ïîçâîëÿåò íàñòðîèòü âàø ëè÷íûé ìåòîä óâåäîìëåíèÿ î
|
||||
íîâûõ ñîîáùåíèÿõ, ïîñëàííûõ âàì êåì-ëèáî.
|
||||
@@ -5423,6 +5425,9 @@ MEMO_HELP_SET_NOTIFY
|
||||
/AWAY (îòîøåë).
|
||||
NEW óâåäîìëåíèå áóäåò ïîñòóïàòü ñðàçó, êàê òîëüêî êòî-òî
|
||||
îòïðàâèò âàì íîâîå ñîîáùåíèå.
|
||||
MAIL You will be notified of memos by email aswell as
|
||||
any other settings you have.
|
||||
NOMAIL You will not be notified of memos by email.
|
||||
OFF óâåäîìëåíèé î ïîëó÷åíèè íîâûõ ñîîáùåíèé ïîñòóïàòü
|
||||
íå áóäåò
|
||||
|
||||
@@ -6632,7 +6637,7 @@ HOST_SETALL
|
||||
HOST_DELALL
|
||||
Âñå âèðòóàëüíûå õîñòû äëÿ ãðóïïû %s áûëè óäàëåíû.
|
||||
HOST_DELALL_SYNTAX
|
||||
Ñèíòàêñèñ: DELALL <íèê>.
|
||||
DELALL <íèê>.
|
||||
HOST_IDENT_SETALL
|
||||
Âèðòóàëüíûé õîñò äëÿ ãðóïïû %s óñòàíîâëåí â %s@%s.
|
||||
HOST_SET_ERROR
|
||||
@@ -6646,9 +6651,9 @@ HOST_SET_IDENTTOOLONG
|
||||
HOST_NOREG
|
||||
Ïîëüçîâàòåëü %s íå íàéäåí â ñåðâèñíîé áàçå äàííûõ íèêîâ.
|
||||
HOST_SET_SYNTAX
|
||||
Ñèòàêñèñ: %R%s SET <íèê> <õîñòìàñêà>.
|
||||
SET <íèê> <õîñòìàñêà>.
|
||||
HOST_SETALL_SYNTAX
|
||||
Ñèíòàêñèñ %R%s SETALL <íèê> <õîñòìàñêà>.
|
||||
SETALL <íèê> <õîñòìàñêà>.
|
||||
HOST_DENIED
|
||||
Äîñòóï çàïðåùåí.
|
||||
HOST_NOT_ASSIGNED
|
||||
@@ -6664,7 +6669,7 @@ HOST_NOT_REGED
|
||||
HOST_DEL
|
||||
Âèðòóàëüíûé õîñò äëÿ %s óäàëåí.
|
||||
HOST_DEL_SYNTAX
|
||||
Ñèíòàêñèñ: %R%s del <íèê>.
|
||||
DEL <íèê>.
|
||||
HOST_OFF
|
||||
Your vhost was removed and the normal cloaking restored.
|
||||
HOST_OFF_UNREAL
|
||||
|
||||
@@ -0,0 +1,99 @@
|
||||
#
|
||||
# Anope IRC Services 1.7.9 for Windows
|
||||
#
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Please read COPYING and README for further details.
|
||||
#
|
||||
# Based on the original code of Epona by Lara.
|
||||
# Based on the original code of Services by Andy Church.
|
||||
#
|
||||
|
||||
# Please read and edit the configurations options below.
|
||||
|
||||
|
||||
# Set this to 1 to enable MySQL support
|
||||
USE_MYSQL=0
|
||||
# Set this to the path where the MySQL includes can be found
|
||||
#MYSQL_INC="c:\\mysql\\include\\"
|
||||
# Set this to the path where the MySQL libraries can be found
|
||||
#MYSQL_LIB="c:\\mysql\\lib\\opt\\"
|
||||
|
||||
# Set this to 1 to enable database encryption
|
||||
DB_ENCRYPTION=0
|
||||
|
||||
# If you want to change the names/locations of files/folders, you
|
||||
# can do that here.
|
||||
PROGRAM=anope.exe
|
||||
DATDEST=data
|
||||
|
||||
# If you are compiling using VC6, or get __ftol2 errors, please uncomment
|
||||
# the following line:
|
||||
#VC6=/QIfist
|
||||
|
||||
# If you are getting errors such as 'Cannot find wsock32.lib', then change
|
||||
# the following line to the path where the library files can be found.
|
||||
#
|
||||
# Eg: LIBPATH=C:\\Program Files\\Microsoft Visual Studio .NET 2003\\Vc7\\lib
|
||||
#
|
||||
LIBPATH=
|
||||
|
||||
# If you edited the line above, uncomment the next line.
|
||||
#LFLAGS=/LIBPATH:"$(LIBPATH)"
|
||||
|
||||
|
||||
###############################################################
|
||||
#Don't touch anything below unless you know what you are doing#
|
||||
###############################################################
|
||||
|
||||
|
||||
CC=cl
|
||||
RC=rc
|
||||
MAKE=nmake -f Makefile.win32
|
||||
BASE_CFLAGS=/O2 /MD
|
||||
LIBS=wsock32.lib advapi32.lib /NODEFAULTLIB:libcmtd.lib
|
||||
ELIBS=
|
||||
MLIBS=
|
||||
|
||||
!IF $(USE_MYSQL) == 1
|
||||
!IF $(MYSQL_LIB) != ""
|
||||
LIBS=$(LIBS) /LIBPATH:$(MYSQL_LIB)
|
||||
MYSQL_LIB_PATH=/LIBPATH:$(MYSQL_LIB)
|
||||
!ENDIF
|
||||
!IF $(MYSQL_INC) != ""
|
||||
BASE_CFLAGS=$(BASE_CFLAGS) /I $(MYSQL_INC)
|
||||
MYSQL_INC_PATH=/I $(MYSQL_INC)
|
||||
!ENDIF
|
||||
RDB_C=rdb.c
|
||||
RDB_O=rdb.obj
|
||||
|
||||
MYSQL_C=mysql.c
|
||||
MYSQL_O=mysql.obj
|
||||
BASE_CFLAGS=/D USE_MYSQL /D USE_RDB $(BASE_CFLAGS) /D HAVE_MYSQL_MYSQL_H
|
||||
|
||||
MYPASQL_BUILD=$(CC) /LD $(MYSQL_INC_PATH) src\mypasql.c /link $(MYSQL_LIB_PATH) $(LFLAGS) \
|
||||
/DEF:src\mypasql.def libmysql.lib zlib.lib ws2_32.lib advapi32.lib /NODEFAULTLIB:LIBCMTD.lib
|
||||
|
||||
LIBS=$(LIBS) libmysql.lib zlib.lib
|
||||
!ENDIF
|
||||
|
||||
!IF $(DB_ENCRYPTION) == 1
|
||||
BASE_CFLAGS=/D USE_ENCRYPTION /D ENCRYPT_MD5 $(BASE_CFLAGS)
|
||||
!ENDIF
|
||||
|
||||
# Note that changing any of these options (or, in fact, anything in this
|
||||
# file) will automatically cause a full rebuild of Services.
|
||||
|
||||
# Compilation options:
|
||||
# -DCLEAN_COMPILE Attempt to compile without any warnings (note that
|
||||
# this may reduce performance)
|
||||
# -DSTREAMLINED Leave out "fancy" options to enhance performance
|
||||
|
||||
CDEFS =
|
||||
|
||||
# Add any extra flags you want here. The default line enables warnings and
|
||||
# debugging symbols on GCC. If you have a non-GCC compiler, you may want
|
||||
# to comment it out or change it.
|
||||
|
||||
MORE_CFLAGS = /I"../include"
|
||||
CFLAGS = /nologo $(VC6) $(CDEFS) $(BASE_CFLAGS) $(MORE_CFLAGS)
|
||||
@@ -1,224 +0,0 @@
|
||||
#!/usr/bin/env perl
|
||||
|
||||
### THIS IS DESIGNED TO BE RUN BY MAKE! DO NOT RUN FROM THE SHELL (because it MIGHT sigterm the shell)! ###
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => qw(all);
|
||||
|
||||
use POSIX ();
|
||||
|
||||
# Runs the compiler, passing it the given arguments.
|
||||
# Filters select output from the compiler's standard error channel and
|
||||
# can take different actions as a result.
|
||||
|
||||
# NOTE: this is *NOT* a hash (sadly: a hash would stringize all the regexes and thus render them useless, plus you can't index a hash based on regexes anyway)
|
||||
# even though we use the => in it.
|
||||
|
||||
# The subs are passed the message, and anything the regex captured.
|
||||
|
||||
my $flag = shift(@ARGV);
|
||||
my $quiet = 0;
|
||||
my $cc;
|
||||
if ($flag eq "-q") {
|
||||
$quiet = 1;
|
||||
$cc = shift(@ARGV);
|
||||
}
|
||||
else {
|
||||
$cc = $flag;
|
||||
}
|
||||
|
||||
my $showncmdline = 0;
|
||||
|
||||
# GCC's "location of error stuff", which accumulates the "In file included from" include stack
|
||||
my $location = "";
|
||||
|
||||
my @msgfilters = (
|
||||
[ qr/^(.*) warning: cannot pass objects of non-POD type `(.*)' through `\.\.\.'; call will abort at runtime/ => sub {
|
||||
my ($msg, $where, $type) = @_;
|
||||
my $errstr = $location . "$where error: cannot pass objects of non-POD type `$type' through `...'\n";
|
||||
$location = "";
|
||||
if ($type =~ m/::(basic_)?string/) {
|
||||
$errstr .= "$where (Did you forget to call c_str()?)\n";
|
||||
}
|
||||
die $errstr;
|
||||
} ],
|
||||
|
||||
# Start of an include stack.
|
||||
[ qr/^In file included from .*[,:]$/ => sub {
|
||||
my ($msg) = @_;
|
||||
$location = "$msg\n";
|
||||
return undef;
|
||||
} ],
|
||||
|
||||
# Continuation of an include stack.
|
||||
[ qr/^ from .*[,:]$/ => sub {
|
||||
my ($msg) = @_;
|
||||
$location .= "$msg\n";
|
||||
return undef;
|
||||
} ],
|
||||
|
||||
# A function, method, constructor, or destructor is the site of a problem
|
||||
[ qr/In ((con|de)structor|(member )?function)/ => sub {
|
||||
my ($msg) = @_;
|
||||
# If a complete location string is waiting then probably we dropped an error, so drop the location for a new one.
|
||||
if ($location =~ m/In ((con|de)structor|(member )?function)/) {
|
||||
$location = "$msg\n";
|
||||
} else {
|
||||
$location .= "$msg\n";
|
||||
}
|
||||
return undef;
|
||||
} ],
|
||||
|
||||
[ qr/^.* warning: / => sub {
|
||||
my ($msg) = @_;
|
||||
my $str = $location . "\e[33;1m$msg\e[0m\n";
|
||||
$showncmdline = 1;
|
||||
$location = "";
|
||||
return $str;
|
||||
} ],
|
||||
|
||||
[ qr/^.* error: / => sub {
|
||||
my ($msg) = @_;
|
||||
my $str = "";
|
||||
$str = "An error occured when executing:\e[37;1m $cc " . join(' ', @ARGV) . "\n" unless $showncmdline;
|
||||
$showncmdline = 1;
|
||||
$str .= $location . "\e[31;1m$msg\e[0m\n";
|
||||
$location = "";
|
||||
return $str;
|
||||
} ],
|
||||
|
||||
[ qr/./ => sub {
|
||||
my ($msg) = @_;
|
||||
$msg = $location . $msg;
|
||||
$location = "";
|
||||
$msg =~ s/std::basic_string\<char\, std\:\:char_traits\<char\>, std::allocator\<char\> \>(\s+|)/std::string/g;
|
||||
$msg =~ s/std::basic_string\<char\, .*?irc_char_traits\<char\>, std::allocator\<char\> \>(\s+|)/irc::string/g;
|
||||
for my $stl (qw(deque vector list)) {
|
||||
$msg =~ s/std::$stl\<(\S+), std::allocator\<\1\> \>/std::$stl\<$1\>/g;
|
||||
$msg =~ s/std::$stl\<(std::pair\<\S+, \S+\>), std::allocator\<\1 \> \>/std::$stl<$1 >/g;
|
||||
}
|
||||
$msg =~ s/std::map\<(\S+), (\S+), std::less\<\1\>, std::allocator\<std::pair\<const \1, \2\> \> \>/std::map<$1, $2>/g;
|
||||
# Warning: These filters are GNU C++ specific!
|
||||
$msg =~ s/__gnu_cxx::__normal_iterator\<(\S+)\*, std::vector\<\1\> \>/std::vector<$1>::iterator/g;
|
||||
$msg =~ s/__gnu_cxx::__normal_iterator\<(std::pair\<\S+, \S+\>)\*, std::vector\<\1 \> \>/std::vector<$1 >::iterator/g;
|
||||
$msg =~ s/__gnu_cxx::__normal_iterator\<char\*, std::string\>/std::string::iterator/g;
|
||||
$msg =~ s/__gnu_cxx::__normal_iterator\<char\*, irc::string\>/irc::string::iterator/g;
|
||||
return $msg;
|
||||
} ],
|
||||
);
|
||||
|
||||
my $pid;
|
||||
|
||||
my ($r_stderr, $w_stderr);
|
||||
|
||||
my $name = "";
|
||||
my $action = "";
|
||||
|
||||
if ($cc eq "ar") {
|
||||
$name = $ARGV[1];
|
||||
$action = "ARCHIVE";
|
||||
} else {
|
||||
foreach my $n (@ARGV)
|
||||
{
|
||||
if ($n =~ /\.cpp|\.c$/)
|
||||
{
|
||||
if ($action eq "BUILD")
|
||||
{
|
||||
$name .= " " . $n;
|
||||
}
|
||||
else
|
||||
{
|
||||
$action = "BUILD";
|
||||
$name = $n;
|
||||
}
|
||||
}
|
||||
elsif ($action eq "BUILD") # .cpp has priority.
|
||||
{
|
||||
next;
|
||||
}
|
||||
elsif ($n eq "-o")
|
||||
{
|
||||
$action = $name = $n;
|
||||
}
|
||||
elsif ($name eq "-o")
|
||||
{
|
||||
$action = "LINK";
|
||||
$name = $n;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!defined($cc) || $cc eq "") {
|
||||
die "Compiler not specified!\n";
|
||||
}
|
||||
|
||||
pipe($r_stderr, $w_stderr) or die "pipe stderr: $!\n";
|
||||
|
||||
$pid = fork;
|
||||
|
||||
die "Cannot fork to start $cc! $!\n" unless defined($pid);
|
||||
|
||||
if ($pid) {
|
||||
|
||||
if ($quiet == 0) {
|
||||
printf "\t\e[1;32m%-20s\e[0m%s\n", $action . ":", $name unless $name eq "";
|
||||
}
|
||||
|
||||
my $fail = 0;
|
||||
# Parent - Close child-side pipes.
|
||||
close $w_stderr;
|
||||
# Close STDIN to ensure no conflicts with child.
|
||||
close STDIN;
|
||||
# Now read each line of stderr
|
||||
LINE: while (defined(my $line = <$r_stderr>)) {
|
||||
chomp $line;
|
||||
|
||||
for my $filter (@msgfilters) {
|
||||
my @caps;
|
||||
if (@caps = ($line =~ $filter->[0])) {
|
||||
$@ = "";
|
||||
$line = eval {
|
||||
$filter->[1]->($line, @caps);
|
||||
};
|
||||
if ($@) {
|
||||
# Note that $line is undef now.
|
||||
$fail = 1;
|
||||
print STDERR $@;
|
||||
}
|
||||
next LINE unless defined($line);
|
||||
}
|
||||
}
|
||||
# Chomp off newlines again, in case the filters put some back in.
|
||||
chomp $line;
|
||||
print STDERR "$line\n";
|
||||
}
|
||||
waitpid $pid, 0;
|
||||
close $r_stderr;
|
||||
my $exit = $?;
|
||||
# Simulate the same exit, so make gets the right termination info.
|
||||
if (POSIX::WIFSIGNALED($exit)) {
|
||||
# Make won't get the right termination info (it gets ours, not the compiler's), so we must tell the user what really happened ourselves!
|
||||
print STDERR "$cc killed by signal " . POSIX::WTERMSIGN($exit) . "\n";
|
||||
kill "TERM", getppid(); # Needed for bsd make.
|
||||
kill "TERM", $$;
|
||||
}
|
||||
else {
|
||||
if (POSIX::WEXITSTATUS($exit) == 0) {
|
||||
if ($fail) {
|
||||
kill "TERM", getppid(); # Needed for bsd make.
|
||||
kill "TERM", $$;
|
||||
}
|
||||
exit 0;
|
||||
} else {
|
||||
exit POSIX::WEXITSTATUS($exit);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
# Child - Close parent-side pipes.
|
||||
close $r_stderr;
|
||||
# Divert stderr
|
||||
open STDERR, ">&", $w_stderr or die "Cannot divert STDERR: $!\n";
|
||||
# Run the compiler!
|
||||
exec { $cc } $cc, @ARGV;
|
||||
die "exec $cc: $!\n";
|
||||
}
|
||||
@@ -1,77 +0,0 @@
|
||||
# Find all the *.c and *.cpp files within the current source directory, and sort the list
|
||||
file(GLOB SRC_SRCS_C RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.c")
|
||||
file(GLOB SRC_SRCS_CPP RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.cpp")
|
||||
set(SRC_SRCS ${SRC_SRCS_C} ${SRC_SRCS_CPP})
|
||||
# If not using Visual Studio, don't include win32_memory.cpp, it's only required by Visual Studio to override it's override of the new/delete operators
|
||||
if(NOT MSVC)
|
||||
list(REMOVE_ITEM SRC_SRCS win32_memory.cpp)
|
||||
endif(NOT MSVC)
|
||||
# If not using Windows, don't include windows.cpp, as it's Windows-specific
|
||||
if(NOT WIN32)
|
||||
list(REMOVE_ITEM SRC_SRCS windows.cpp)
|
||||
endif(NOT WIN32)
|
||||
if(CMAKE244_OR_BETTER)
|
||||
list(SORT SRC_SRCS)
|
||||
endif(CMAKE244_OR_BETTER)
|
||||
|
||||
# Set all the files to use C++ as well as set their compile flags (use the module-specific compile flags, though)
|
||||
set_source_files_properties(${SRC_SRCS} PROPERTIES LANGUAGE CXX COMPILE_FLAGS "${CXXFLAGS}")
|
||||
|
||||
# Iterate through all the source files
|
||||
foreach(SRC ${SRC_SRCS})
|
||||
# Calculate the header file dependencies for the given source file
|
||||
calculate_depends(${SRC})
|
||||
endforeach(SRC)
|
||||
|
||||
# Under Windows, we also include a resource file to the build
|
||||
if(WIN32)
|
||||
# Make sure that the resource file is seen as an RC file to be compiled with a resource compiler, not a C++ compiler
|
||||
set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/win32.rc LANGUAGE RC)
|
||||
# Add the resource file to the list of sources
|
||||
append_to_list(SRC_SRCS ${CMAKE_CURRENT_BINARY_DIR}/win32.rc)
|
||||
# For MinGW, we have to change the compile flags
|
||||
if(MINGW)
|
||||
set(RC_CFLAGS "-DMINGW -Ocoff -I${Anope_SOURCE_DIR}/include")
|
||||
# If any sort of debugging is being enabled, add a _DEBUG define to the flags for the resource compiler
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "DEBUG" OR CMAKE_BUILD_TYPE STREQUAL "RELWITHDEBINFO")
|
||||
set(RC_CFLAGS "${RC_CFLAGS} -D_DEBUG")
|
||||
endif(CMAKE_BUILD_TYPE STREQUAL "DEBUG" OR CMAKE_BUILD_TYPE STREQUAL "RELWITHDEBINFO")
|
||||
set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/win32.rc COMPILE_FLAGS "${RC_CFLAGS}")
|
||||
# For anything else, assumingly Visual Studio at this point, use a different set of compile flags
|
||||
else(MINGW)
|
||||
set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/win32.rc COMPILE_FLAGS "/i\"${Anope_SOURCE_DIR}/include\"")
|
||||
endif(MINGW)
|
||||
endif(WIN32)
|
||||
|
||||
# Generate the Anope executable and set it's linker flags, also set it to export it's symbols even though it's not a module
|
||||
add_executable(${PROGRAM_NAME} ${SRC_SRCS})
|
||||
set_target_properties(${PROGRAM_NAME} PROPERTIES LINKER_LANGUAGE CXX LINK_FLAGS "${LDFLAGS}" ENABLE_EXPORTS ON)
|
||||
# On Windows, also link Anope to the wsock32 library, as well as set the version
|
||||
if(WIN32)
|
||||
target_link_libraries(${PROGRAM_NAME} wsock32)
|
||||
set_target_properties(${PROGRAM_NAME} PROPERTIES VERSION "${VERSION_DOTTED}")
|
||||
endif(WIN32)
|
||||
# Building the Anope executable requires the language files to be compiled first as well as the version.h header to be generated
|
||||
add_dependencies(${PROGRAM_NAME} language headers)
|
||||
|
||||
# Get the filename of the Anope executable as it is in on this system
|
||||
get_target_property(SERVICES_BINARY ${PROGRAM_NAME} LOCATION)
|
||||
get_filename_component(SERVICES_BINARY ${SERVICES_BINARY} NAME)
|
||||
set(SERVICES_BIN "${SERVICES_BINARY}")
|
||||
# Add the Anope executable to the list of files for CPack to ignore
|
||||
add_to_cpack_ignored_files("${SERVICES_BINARY}$" TRUE)
|
||||
|
||||
# Generate sysconf.h from the earlier configuration
|
||||
configure_file(${Anope_SOURCE_DIR}/include/sysconf.h.cmake ${Anope_BINARY_DIR}/include/sysconf.h)
|
||||
|
||||
# Go into the following directories and run their CMakeLists.txt as well
|
||||
add_subdirectory(bin)
|
||||
add_subdirectory(core)
|
||||
add_subdirectory(modules)
|
||||
add_subdirectory(protocol)
|
||||
add_subdirectory(tools)
|
||||
|
||||
# Set Anope to be installed to the bin directory
|
||||
install(TARGETS ${PROGRAM_NAME}
|
||||
DESTINATION bin
|
||||
)
|
||||
+61
-60
@@ -1,27 +1,31 @@
|
||||
OBJS = actions.o base64.o bots.o botserv.o channels.o chanserv.o commands.o compat.o \
|
||||
config.o datafiles.o encrypt.o events.o hashcomp.o helpserv.o hostserv.o init.o ircd.o language.o log.o mail.o main.o \
|
||||
MYSQL_OBJ = $(MYSQL:.c=.o)
|
||||
RDB_OBJ = $(RDB:.c=.o)
|
||||
OBJS = actions.o base64.o botserv.o channels.o chanserv.o commands.o compat.o \
|
||||
config.o datafiles.o encrypt.o events.o helpserv.o hostserv.o init.o ircd.o language.o list.o log.o mail.o main.o \
|
||||
memory.o memoserv.o messages.o misc.o modules.o news.o nickserv.o operserv.o \
|
||||
process.o send.o servers.o sessions.o slist.o sockutil.o timeout.o users.o module.o modulemanager.o configreader.o
|
||||
process.o send.o servers.o sessions.o slist.o sockutil.o timeout.o users.o \
|
||||
$(RDB_OBJ) $(MYSQL_OBJ)
|
||||
SRCS = actions.c base64.c botserv.c channels.c chanserv.c commands.c compat.c \
|
||||
config.c datafiles.c encrypt.c events.c helpserv.c hostserv.c init.c ircd.c language.c list.c log.c mail.c main.c \
|
||||
memory.c memoserv.c messages.c misc.c modules.c news.c nickserv.c operserv.c \
|
||||
process.c send.c servers.c sessions.c slist.c sockutil.c timeout.c users.c \
|
||||
$(RDB) $(MYSQL)
|
||||
|
||||
INCLUDES = ../include/commands.h ../include/defs.h ../include/language.h \
|
||||
../include/pseudo.h ../include/sysconf.h ../include/config.h \
|
||||
../include/encrypt.h ../include/messages.h ../include/services.h \
|
||||
../include/timeout.h ../include/datafiles.h ../include/extern.h \
|
||||
../include/modules.h ../include/slist.h ../include/hashcomp.h
|
||||
../include/modules.h ../include/slist.h
|
||||
|
||||
MAKEARGS = 'CFLAGS=${CFLAGS}' 'CC=${CC}' 'ANOPELIBS=${ANOPELIBS}' \
|
||||
'LDFLAGS=${LDFLAGS}' 'INSTDIR=${INSTDIR}' 'INSTALL=${INSTALL}' \
|
||||
'LDFLAGS=${LDFLAGS}' 'BINDEST=${BINDEST}' 'INSTALL=${INSTALL}' \
|
||||
'INCLUDEDIR=${INCLUDEDIR}' 'RM=${RM}' 'CP=${CP}' \
|
||||
'TOUCH=${TOUCH}' 'SHELL=${SHELL}' \
|
||||
'RUNGROUP=${RUNGROUP}' \
|
||||
'SHARED=${SHARED}' 'MODULEFLAGS=${MODULEFLAGS}' \
|
||||
'MAKEBIN=${MAKEBIN}'
|
||||
'TOUCH=${TOUCH}' 'SHELL=${SHELL}' 'DATDEST=${DATDEST}' \
|
||||
'RUNGROUP=${RUNGROUP}' 'MODULE_PATH=${MODULE_PATH}' 'MYSQL=${MYSQL}'\
|
||||
'RDB=${RDB}' 'SHARED=${SHARED}' 'MODULEFLAGS=${MODULEFLAGS}'
|
||||
|
||||
.c.o:
|
||||
@$(MAKEBIN) $(CC) $(CFLAGS) -I../include/ -c $<
|
||||
|
||||
.cpp.o:
|
||||
@$(MAKEBIN) $(CC) $(CFLAGS) -I../include/ -c $<
|
||||
$(CC) $(CFLAGS) -I../include/ -c $<
|
||||
|
||||
all: services
|
||||
|
||||
@@ -29,26 +33,26 @@ distclean: spotless
|
||||
distclean_modules: clean_modules spotless
|
||||
|
||||
services: $(OBJS) mod_version
|
||||
@$(MAKEBIN) $(CC) $(CFLAGS) $(OBJS) $(ANOPELIBS) $(MLIBS) -o $@ $(LDFLAGS)
|
||||
$(CC) $(CFLAGS) $(OBJS) $(ANOPELIBS) $(MLIBS) -o $@ $(LDFLAGS)
|
||||
|
||||
$(OBJS): Makefile
|
||||
actions.o: actions.c $(INCLUDES)
|
||||
base64.o: base64.c $(INCLUDES)
|
||||
bots.o: bots.cpp $(INCLUDES)
|
||||
botserv.o: botserv.c $(INCLUDES)
|
||||
channels.o: channels.c $(INCLUDES)
|
||||
chanserv.o: chanserv.c $(INCLUDES)
|
||||
commands.o: commands.c $(INCLUDES)
|
||||
base64.o: base64.c $(INCLUDES)
|
||||
botserv.o: botserv.c $(INCLUDES)
|
||||
channels.o: channels.c $(INCLUDES)
|
||||
chanserv.o: chanserv.c $(INCLUDES)
|
||||
commands.o: commands.c $(INCLUDES)
|
||||
compat.o: compat.c $(INCLUDES)
|
||||
config.o: config.c $(INCLUDES)
|
||||
config.o: config.c $(INCLUDES)
|
||||
datafiles.o: datafiles.c $(INCLUDES)
|
||||
encrypt.o: encrypt.c $(INCLUDES)
|
||||
encrypt.o: encrypt.c $(INCLUDES)
|
||||
events.o: events.c $(INCLUDES)
|
||||
init.o: init.c $(INCLUDES)
|
||||
ircd.o: ircd.c $(INCLUDES)
|
||||
helpserv.o: helpserv.c $(INCLUDES)
|
||||
hostserv.o: hostserv.c $(INCLUDES)
|
||||
language.o: language.c $(INCLUDES)
|
||||
helpserv.o: helpserv.c $(INCLUDES)
|
||||
hostserv.o: hostserv.c $(INCLUDES)
|
||||
language.o: language.c $(INCLUDES)
|
||||
list.o: list.c $(INCLUDES)
|
||||
log.o: log.c $(INCLUDES)
|
||||
mail.o: mail.c $(INCLUDES)
|
||||
main.o: main.c $(INCLUDES)
|
||||
@@ -56,8 +60,6 @@ memory.o: memory.c $(INCLUDES)
|
||||
memoserv.o: memoserv.c $(INCLUDES)
|
||||
messages.o: messages.c $(INCLUDES)
|
||||
modules.o: modules.c $(INCLUDES)
|
||||
module.o: module.cpp $(INCLUDES)
|
||||
modulemanager.o: modulemanager.cpp $(INCLUDES)
|
||||
misc.o: misc.c $(INCLUDES)
|
||||
news.o: news.c $(INCLUDES)
|
||||
nickserv.o: nickserv.c $(INCLUDES)
|
||||
@@ -71,67 +73,66 @@ sockutil.o: sockutil.c $(INCLUDES)
|
||||
timeout.o: timeout.c $(INCLUDES)
|
||||
users.o: users.c $(INCLUDES)
|
||||
vsnprintf.o: vsnprintf.c $(INCLUDES)
|
||||
mysql.o: mysql.c $(INCLUDES)
|
||||
rdb.o: rdb.c $(INCLUDES)
|
||||
|
||||
mod_version: mod_version.c $(INCLUDES)
|
||||
@$(MAKEBIN) $(CC) $(CDEFS) $(CFLAGS) $(MODULEFLAGS) -I../include/ -c mod_version.c
|
||||
$(CC) $(CDEFS) $(CFLAGS) $(MODULEFLAGS) -I../include/ -c mod_version.c
|
||||
|
||||
|
||||
modules: DUMMY
|
||||
@modules/configure modules
|
||||
@${MAKE} -C modules ${MAKEARGS} all
|
||||
(cd modules ; ./configure ; ${MAKE} ${MAKEARGS} all)
|
||||
|
||||
protocols: DUMMY
|
||||
@protocol/configure protocol
|
||||
@${MAKE} -C protocol ${MAKEARGS} all
|
||||
|
||||
(cd protocol ; ./configure ; ${MAKE} ${MAKEARGS} all)
|
||||
core: DUMMY
|
||||
@core/configure core
|
||||
@${MAKE} -C core ${MAKEARGS} all
|
||||
(cd core ; ./configure ; ${MAKE} ${MAKEARGS} all)
|
||||
|
||||
clean: clean_modules clean_protocols clean_core
|
||||
rm -f *.o services a.out
|
||||
|
||||
clean_modules:
|
||||
@touch modules/Makefile.inc # Horribly ugly...
|
||||
@${MAKE} -C modules clean
|
||||
(cd modules ; ${MAKE} clean)
|
||||
|
||||
clean_protocols:
|
||||
@touch protocol/Makefile.inc
|
||||
@${MAKE} -C protocol clean
|
||||
(cd protocol ; ${MAKE} clean)
|
||||
|
||||
clean_core:
|
||||
@touch core/Makefile.inc
|
||||
@${MAKE} -C core clean
|
||||
(cd core ; ${MAKE} clean)
|
||||
|
||||
spotless:
|
||||
@${MAKE} -C modules distclean
|
||||
@${MAKE} -C protocol distclean
|
||||
@${MAKE} -C core distclean
|
||||
(cd modules ; ${MAKE} distclean)
|
||||
(cd protocol ; ${MAKE} distclean)
|
||||
(cd core ; ${MAKE} distclean)
|
||||
|
||||
install: services
|
||||
test -d ${INSTDIR} || mkdir ${INSTDIR}
|
||||
test -d ${INSTDIR}/bin || mkdir ${INSTDIR}/bin
|
||||
$(INSTALL) services $(INSTDIR)/bin/services
|
||||
$(INSTALL) bin/anoperc $(INSTDIR)/bin/anoperc
|
||||
test -d ${INSTDIR}/data || mkdir ${INSTDIR}/data
|
||||
test -d ${BINDEST} || mkdir ${BINDEST}
|
||||
$(INSTALL) services $(BINDEST)/services
|
||||
$(INSTALL) bin/anoperc $(BINDEST)/anoperc
|
||||
rm -f $(BINDEST)/listnicks $(BINDEST)/listchans
|
||||
ln $(BINDEST)/services $(BINDEST)/listnicks
|
||||
ln $(BINDEST)/services $(BINDEST)/listchans
|
||||
(cd ../lang ; $(MAKE) install)
|
||||
$(CP) ../data/* $(INSTDIR)/data
|
||||
$(INSTALL) bin/mydbgen $(INSTDIR)/data/mydbgen
|
||||
test -d $(INSTDIR)/data/backups || mkdir $(INSTDIR)/data/backups
|
||||
test -d $(INSTDIR)/data/logs || mkdir $(INSTDIR)/data/logs
|
||||
@if [ "$(INSTDIR)/data/modules" ] ; then \
|
||||
test -d ${INSTDIR}/data/modules || mkdir ${INSTDIR}/data/modules ; \
|
||||
test -d ${INSTDIR}/data/modules/runtime || mkdir ${INSTDIR}/data/modules/runtime ; \
|
||||
$(CP) ../data/* $(DATDEST)
|
||||
$(INSTALL) bin/mydbgen $(DATDEST)/mydbgen
|
||||
test -d $(DATDEST)/backups || mkdir $(DATDEST)/backups
|
||||
test -d $(DATDEST)/logs || mkdir $(DATDEST)/logs
|
||||
@if [ "$(MODULE_PATH)" ] ; then \
|
||||
test -d ${MODULE_PATH} || mkdir ${MODULE_PATH} ; \
|
||||
test -d ${MODULE_PATH}/runtime || mkdir ${MODULE_PATH}/runtime ; \
|
||||
(cd modules ; $(MAKE) install) ; \
|
||||
(cd protocol ; ${MAKE} install) ; \
|
||||
(cd core ; ${MAKE} install) ; \
|
||||
fi
|
||||
@if [ "$(RUNGROUP)" ] ; then \
|
||||
echo chgrp -R $(RUNGROUP) $(INSTDIR)/data ; \
|
||||
chgrp -R $(RUNGROUP) $(INSTDIR)/data ; \
|
||||
echo chmod -R g+rw $(INSTDIR)/data ; \
|
||||
chmod -R g+rw $(INSTDIR)/data ; \
|
||||
echo find $(INSTDIR)/data -type d -exec chmod g+xs \'\{\}\' \\\; ; \
|
||||
find $(INSTDIR)/data -type d -exec chmod g+xs '{}' \; ; \
|
||||
echo chgrp -R $(RUNGROUP) $(DATDEST) ; \
|
||||
chgrp -R $(RUNGROUP) $(DATDEST) ; \
|
||||
echo chmod -R g+rw $(DATDEST) ; \
|
||||
chmod -R g+rw $(DATDEST) ; \
|
||||
echo find $(DATDEST) -type d -exec chmod g+xs \'\{\}\' \\\; ; \
|
||||
find $(DATDEST) -type d -exec chmod g+xs '{}' \; ; \
|
||||
fi
|
||||
|
||||
DUMMY:
|
||||
|
||||
+174
-156
@@ -1,14 +1,13 @@
|
||||
/* Various routines to perform simple actions.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -24,20 +23,20 @@
|
||||
*/
|
||||
void bad_password(User * u)
|
||||
{
|
||||
time_t now = time(NULL);
|
||||
time_t now = time(NULL);
|
||||
|
||||
if (!u || !BadPassLimit) {
|
||||
return;
|
||||
}
|
||||
if (!u || !BadPassLimit) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (BadPassTimeout > 0 && u->invalid_pw_time > 0
|
||||
&& u->invalid_pw_time < now - BadPassTimeout)
|
||||
u->invalid_pw_count = 0;
|
||||
u->invalid_pw_count++;
|
||||
u->invalid_pw_time = now;
|
||||
if (u->invalid_pw_count >= BadPassLimit) {
|
||||
kill_user(NULL, u->nick, "Too many invalid passwords");
|
||||
}
|
||||
if (BadPassTimeout > 0 && u->invalid_pw_time > 0
|
||||
&& u->invalid_pw_time < now - BadPassTimeout)
|
||||
u->invalid_pw_count = 0;
|
||||
u->invalid_pw_count++;
|
||||
u->invalid_pw_time = now;
|
||||
if (u->invalid_pw_count >= BadPassLimit) {
|
||||
kill_user(NULL, u->nick, "Too many invalid passwords");
|
||||
}
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
@@ -49,27 +48,27 @@ void bad_password(User * u)
|
||||
* @param reason for the kill
|
||||
* @return void
|
||||
*/
|
||||
void kill_user(const char *source, const char *user, const char *reason)
|
||||
void kill_user(char *source, char *user, char *reason)
|
||||
{
|
||||
char buf[BUFSIZE];
|
||||
char buf[BUFSIZE];
|
||||
|
||||
if (!user || !*user) {
|
||||
return;
|
||||
}
|
||||
if (!source || !*source) {
|
||||
source = ServerName;
|
||||
}
|
||||
if (!reason) {
|
||||
reason = "";
|
||||
}
|
||||
if (!user || !*user) {
|
||||
return;
|
||||
}
|
||||
if (!source || !*source) {
|
||||
source = ServerName;
|
||||
}
|
||||
if (!reason) {
|
||||
reason = "";
|
||||
}
|
||||
|
||||
snprintf(buf, sizeof(buf), "%s (%s)", source, reason);
|
||||
snprintf(buf, sizeof(buf), "%s (%s)", source, reason);
|
||||
|
||||
ircdproto->SendSVSKill(source, user, buf);
|
||||
anope_cmd_svskill(source, user, buf);
|
||||
|
||||
if (!ircd->quitonkill && finduser(user)) {
|
||||
do_kill(user, buf);
|
||||
}
|
||||
if (!ircd->quitonkill && finduser(user)) {
|
||||
do_kill(user, buf);
|
||||
}
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
@@ -82,42 +81,42 @@ void kill_user(const char *source, const char *user, const char *reason)
|
||||
*/
|
||||
void sqline(char *mask, char *reason)
|
||||
{
|
||||
int i;
|
||||
Channel *c, *next;
|
||||
const char *av[3];
|
||||
struct c_userlist *cu, *cunext;
|
||||
int i;
|
||||
Channel *c, *next;
|
||||
char *av[3];
|
||||
struct c_userlist *cu, *cunext;
|
||||
|
||||
if (ircd->chansqline) {
|
||||
if (*mask == '#') {
|
||||
ircdproto->SendSQLine(mask, reason);
|
||||
if (ircd->chansqline) {
|
||||
if (*mask == '#') {
|
||||
anope_cmd_sqline(mask, reason);
|
||||
|
||||
for (i = 0; i < 1024; i++) {
|
||||
for (c = chanlist[i]; c; c = next) {
|
||||
next = c->next;
|
||||
for (i = 0; i < 1024; i++) {
|
||||
for (c = chanlist[i]; c; c = next) {
|
||||
next = c->next;
|
||||
|
||||
if (!match_wild_nocase(mask, c->name)) {
|
||||
continue;
|
||||
}
|
||||
for (cu = c->users; cu; cu = cunext) {
|
||||
cunext = cu->next;
|
||||
if (is_oper(cu->user)) {
|
||||
continue;
|
||||
}
|
||||
av[0] = c->name;
|
||||
av[1] = cu->user->nick;
|
||||
av[2] = reason;
|
||||
ircdproto->SendKick(findbot(s_OperServ), av[0], av[1],
|
||||
"Q-Lined: %s", av[2]);
|
||||
do_kick(s_ChanServ, 3, av);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ircdproto->SendSQLine(mask, reason);
|
||||
}
|
||||
} else {
|
||||
ircdproto->SendSQLine(mask, reason);
|
||||
}
|
||||
if (!match_wild_nocase(mask, c->name)) {
|
||||
continue;
|
||||
}
|
||||
for (cu = c->users; cu; cu = cunext) {
|
||||
cunext = cu->next;
|
||||
if (is_oper(cu->user)) {
|
||||
continue;
|
||||
}
|
||||
av[0] = c->name;
|
||||
av[1] = cu->user->nick;
|
||||
av[2] = reason;
|
||||
anope_cmd_kick(s_OperServ, av[0], av[1],
|
||||
"Q-Lined: %s", av[2]);
|
||||
do_kick(s_ChanServ, 3, av);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
anope_cmd_sqline(mask, reason);
|
||||
}
|
||||
} else {
|
||||
anope_cmd_sqline(mask, reason);
|
||||
}
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
@@ -126,76 +125,95 @@ void sqline(char *mask, char *reason)
|
||||
* Unban the nick from a channel
|
||||
* @param ci channel info for the channel
|
||||
* @param nick to remove the ban for
|
||||
* @param full True to match against realhost
|
||||
* @return void
|
||||
*/
|
||||
static void _common_unban(ChannelInfo * ci, char *nick, boolean full)
|
||||
{
|
||||
char *av[4];
|
||||
char *host = NULL;
|
||||
char buf[BUFSIZE];
|
||||
int ac;
|
||||
uint32 ip = 0;
|
||||
User *u;
|
||||
Entry *ban, *next;
|
||||
|
||||
if (!ci || !ci->c || !nick) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!(u = finduser(nick))) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!ci->c->bans || (ci->c->bans->count == 0))
|
||||
return;
|
||||
|
||||
if (u->hostip == NULL) {
|
||||
host = host_resolve(u->host);
|
||||
/* we store the just resolved hostname so we don't
|
||||
* need to do this again */
|
||||
if (host) {
|
||||
u->hostip = sstrdup(host);
|
||||
}
|
||||
} else {
|
||||
host = sstrdup(u->hostip);
|
||||
}
|
||||
/* Convert the host to an IP.. */
|
||||
if (host)
|
||||
ip = str_is_ip(host);
|
||||
|
||||
if (ircdcap->tsmode) {
|
||||
snprintf(buf, BUFSIZE - 1, "%ld", (long int) time(NULL));
|
||||
av[0] = ci->name;
|
||||
av[1] = buf;
|
||||
av[2] = sstrdup("-b");
|
||||
ac = 4;
|
||||
} else {
|
||||
av[0] = ci->name;
|
||||
av[1] = sstrdup("-b");
|
||||
ac = 3;
|
||||
}
|
||||
|
||||
for (ban = ci->c->bans->entries; ban; ban = next) {
|
||||
next = ban->next;
|
||||
if ((full && entry_match(ban, u->nick, u->username, u->host, ip)) ||
|
||||
entry_match(ban, u->nick, u->vident, u->vhost, 0) ||
|
||||
entry_match(ban, u->nick, u->username, u->chost, 0)) {
|
||||
anope_cmd_mode(whosends(ci), ci->name, "-b %s", ban->mask);
|
||||
if (ircdcap->tsmode)
|
||||
av[3] = sstrdup(ban->mask);
|
||||
else
|
||||
av[2] = sstrdup(ban->mask);
|
||||
|
||||
do_cmode(whosends(ci), ac, av);
|
||||
|
||||
if (ircdcap->tsmode)
|
||||
free(av[3]);
|
||||
else
|
||||
free(av[2]);
|
||||
}
|
||||
}
|
||||
|
||||
if (ircdcap->tsmode)
|
||||
free(av[2]);
|
||||
else
|
||||
free(av[1]);
|
||||
|
||||
/* host_resolve() sstrdup us this info so we gotta free it */
|
||||
if (host) {
|
||||
free(host);
|
||||
}
|
||||
}
|
||||
|
||||
void common_unban(ChannelInfo * ci, char *nick)
|
||||
{
|
||||
const char *av[4];
|
||||
char *host = NULL;
|
||||
char buf[BUFSIZE];
|
||||
int ac;
|
||||
uint32 ip = 0;
|
||||
User *u;
|
||||
Entry *ban, *next;
|
||||
_common_unban(ci, nick, false);
|
||||
}
|
||||
|
||||
if (!ci || !ci->c || !nick) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!(u = finduser(nick))) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!ci->c->bans || (ci->c->bans->count == 0))
|
||||
return;
|
||||
|
||||
if (u->hostip == NULL) {
|
||||
host = host_resolve(u->host);
|
||||
/* we store the just resolved hostname so we don't
|
||||
* need to do this again */
|
||||
if (host) {
|
||||
u->hostip = sstrdup(host);
|
||||
}
|
||||
} else {
|
||||
host = sstrdup(u->hostip);
|
||||
}
|
||||
/* Convert the host to an IP.. */
|
||||
if (host)
|
||||
ip = str_is_ip(host);
|
||||
|
||||
if (ircd->svsmode_unban) {
|
||||
ircdproto->SendBanDel(ci->name, nick);
|
||||
} else {
|
||||
if (ircdcap->tsmode) {
|
||||
snprintf(buf, BUFSIZE - 1, "%ld", static_cast<long>(time(NULL)));
|
||||
av[0] = ci->name;
|
||||
av[1] = buf;
|
||||
av[2] = "-b";
|
||||
ac = 4;
|
||||
} else {
|
||||
av[0] = ci->name;
|
||||
av[1] = "-b";
|
||||
ac = 3;
|
||||
}
|
||||
|
||||
for (ban = ci->c->bans->entries; ban; ban = next) {
|
||||
next = ban->next;
|
||||
if (entry_match(ban, u->nick, u->username, u->host, ip) ||
|
||||
entry_match(ban, u->nick, u->username, u->vhost, ip)) {
|
||||
ircdproto->SendMode(whosends(ci), ci->name, "-b %s", ban->mask);
|
||||
if (ircdcap->tsmode)
|
||||
av[3] = ban->mask;
|
||||
else
|
||||
av[2] = ban->mask;
|
||||
|
||||
do_cmode(whosends(ci)->nick, ac, av);
|
||||
}
|
||||
}
|
||||
}
|
||||
/* host_resolve() sstrdup us this info so we gotta free it */
|
||||
if (host) {
|
||||
delete [] host;
|
||||
}
|
||||
void common_unban_full(ChannelInfo * ci, char *nick, boolean full)
|
||||
{
|
||||
_common_unban(ci, nick, full);
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
@@ -207,19 +225,19 @@ void common_unban(ChannelInfo * ci, char *nick)
|
||||
* @param arg the arguments for the user modes
|
||||
* @return void
|
||||
*/
|
||||
void common_svsmode(User * u, const char *modes, const char *arg)
|
||||
void common_svsmode(User * u, char *modes, char *arg)
|
||||
{
|
||||
int ac = 1;
|
||||
const char *av[2];
|
||||
int ac = 1;
|
||||
char *av[2];
|
||||
|
||||
av[0] = modes;
|
||||
if (arg) {
|
||||
av[1] = arg;
|
||||
ac++;
|
||||
}
|
||||
av[0] = modes;
|
||||
if (arg) {
|
||||
av[1] = arg;
|
||||
ac++;
|
||||
}
|
||||
|
||||
ircdproto->SendSVSMode(u, ac, av);
|
||||
ircdproto->ProcessUsermodes(u, ac, av);
|
||||
anope_cmd_svsmode(u, ac, av);
|
||||
anope_set_umode(u, ac, av);
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
@@ -232,15 +250,15 @@ void common_svsmode(User * u, const char *modes, const char *arg)
|
||||
*/
|
||||
char *common_get_vhost(User * u)
|
||||
{
|
||||
if (!u)
|
||||
return NULL;
|
||||
if (!u)
|
||||
return NULL;
|
||||
|
||||
if (ircd->vhostmode && (u->mode & ircd->vhostmode))
|
||||
return u->vhost;
|
||||
else if (ircd->vhost && u->vhost)
|
||||
return u->vhost;
|
||||
else
|
||||
return u->host;
|
||||
if (u->vhost)
|
||||
return u->vhost;
|
||||
else if (ircd->vhostmode && (u->mode & ircd->vhostmode) && u->chost)
|
||||
return u->chost;
|
||||
else
|
||||
return u->host;
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
@@ -253,13 +271,13 @@ char *common_get_vhost(User * u)
|
||||
*/
|
||||
char *common_get_vident(User * u)
|
||||
{
|
||||
if (!u)
|
||||
return NULL;
|
||||
if (!u)
|
||||
return NULL;
|
||||
|
||||
if (ircd->vhostmode && (u->mode & ircd->vhostmode))
|
||||
return u->vident;
|
||||
else if (ircd->vident && u->vident)
|
||||
return u->vident;
|
||||
else
|
||||
return u->username;
|
||||
if (ircd->vhostmode && (u->mode & ircd->vhostmode))
|
||||
return u->vident;
|
||||
else if (ircd->vident && u->vident)
|
||||
return u->vident;
|
||||
else
|
||||
return u->username;
|
||||
}
|
||||
|
||||
+279
-279
@@ -1,13 +1,13 @@
|
||||
/* base64 routines.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2014 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -20,24 +20,24 @@
|
||||
static char *int_to_base64(long);
|
||||
static long base64_to_int(char *);
|
||||
|
||||
const char* base64enc(long i)
|
||||
char *base64enc(long i)
|
||||
{
|
||||
if (i < 0)
|
||||
return ("0");
|
||||
return int_to_base64(i);
|
||||
if (i < 0)
|
||||
return ("0");
|
||||
return int_to_base64(i);
|
||||
}
|
||||
|
||||
long base64dec(char* b64)
|
||||
long base64dec(char *b64)
|
||||
{
|
||||
if (b64)
|
||||
return base64_to_int(b64);
|
||||
else
|
||||
return 0;
|
||||
if (b64)
|
||||
return base64_to_int(b64);
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static const char Base64[] =
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
||||
static const char Pad64 = '=';
|
||||
|
||||
/* (From RFC1521 and draft-ietf-dnssec-secext-03.txt)
|
||||
@@ -59,26 +59,26 @@ static const char Pad64 = '=';
|
||||
characters. The character referenced by the index is placed in the
|
||||
output string.
|
||||
|
||||
Table 1: The Base64 Alphabet
|
||||
Table 1: The Base64 Alphabet
|
||||
|
||||
Value Encoding Value Encoding Value Encoding Value Encoding
|
||||
0 A 17 R 34 i 51 z
|
||||
1 B 18 S 35 j 52 0
|
||||
2 C 19 T 36 k 53 1
|
||||
3 D 20 U 37 l 54 2
|
||||
4 E 21 V 38 m 55 3
|
||||
5 F 22 W 39 n 56 4
|
||||
6 G 23 X 40 o 57 5
|
||||
7 H 24 Y 41 p 58 6
|
||||
8 I 25 Z 42 q 59 7
|
||||
9 J 26 a 43 r 60 8
|
||||
10 K 27 b 44 s 61 9
|
||||
11 L 28 c 45 t 62 +
|
||||
12 M 29 d 46 u 63 /
|
||||
13 N 30 e 47 v
|
||||
14 O 31 f 48 w (pad) =
|
||||
15 P 32 g 49 x
|
||||
16 Q 33 h 50 y
|
||||
Value Encoding Value Encoding Value Encoding Value Encoding
|
||||
0 A 17 R 34 i 51 z
|
||||
1 B 18 S 35 j 52 0
|
||||
2 C 19 T 36 k 53 1
|
||||
3 D 20 U 37 l 54 2
|
||||
4 E 21 V 38 m 55 3
|
||||
5 F 22 W 39 n 56 4
|
||||
6 G 23 X 40 o 57 5
|
||||
7 H 24 Y 41 p 58 6
|
||||
8 I 25 Z 42 q 59 7
|
||||
9 J 26 a 43 r 60 8
|
||||
10 K 27 b 44 s 61 9
|
||||
11 L 28 c 45 t 62 +
|
||||
12 M 29 d 46 u 63 /
|
||||
13 N 30 e 47 v
|
||||
14 O 31 f 48 w (pad) =
|
||||
15 P 32 g 49 x
|
||||
16 Q 33 h 50 y
|
||||
|
||||
Special processing is performed if fewer than 24 bits are available
|
||||
at the end of the data being encoded. A full encoding quantum is
|
||||
@@ -88,72 +88,72 @@ static const char Pad64 = '=';
|
||||
end of the data is performed using the '=' character.
|
||||
|
||||
Since all base64 input is an integral number of octets, only the
|
||||
-------------------------------------------------
|
||||
-------------------------------------------------
|
||||
following cases can arise:
|
||||
|
||||
(1) the final quantum of encoding input is an integral
|
||||
multiple of 24 bits; here, the final unit of encoded
|
||||
|
||||
(1) the final quantum of encoding input is an integral
|
||||
multiple of 24 bits; here, the final unit of encoded
|
||||
output will be an integral multiple of 4 characters
|
||||
with no "=" padding,
|
||||
(2) the final quantum of encoding input is exactly 8 bits;
|
||||
here, the final unit of encoded output will be two
|
||||
(2) the final quantum of encoding input is exactly 8 bits;
|
||||
here, the final unit of encoded output will be two
|
||||
characters followed by two "=" padding characters, or
|
||||
(3) the final quantum of encoding input is exactly 16 bits;
|
||||
here, the final unit of encoded output will be three
|
||||
(3) the final quantum of encoding input is exactly 16 bits;
|
||||
here, the final unit of encoded output will be three
|
||||
characters followed by one "=" padding character.
|
||||
*/
|
||||
|
||||
int b64_encode(char *src, size_t srclength, char *target, size_t targsize)
|
||||
{
|
||||
size_t datalength = 0;
|
||||
unsigned char input[3];
|
||||
unsigned char output[4];
|
||||
size_t i;
|
||||
size_t datalength = 0;
|
||||
unsigned char input[3];
|
||||
unsigned char output[4];
|
||||
size_t i;
|
||||
|
||||
while (2 < srclength) {
|
||||
input[0] = *src++;
|
||||
input[1] = *src++;
|
||||
input[2] = *src++;
|
||||
srclength -= 3;
|
||||
while (2 < srclength) {
|
||||
input[0] = *src++;
|
||||
input[1] = *src++;
|
||||
input[2] = *src++;
|
||||
srclength -= 3;
|
||||
|
||||
output[0] = input[0] >> 2;
|
||||
output[1] = ((input[0] & 0x03) << 4) + (input[1] >> 4);
|
||||
output[2] = ((input[1] & 0x0f) << 2) + (input[2] >> 6);
|
||||
output[3] = input[2] & 0x3f;
|
||||
output[0] = input[0] >> 2;
|
||||
output[1] = ((input[0] & 0x03) << 4) + (input[1] >> 4);
|
||||
output[2] = ((input[1] & 0x0f) << 2) + (input[2] >> 6);
|
||||
output[3] = input[2] & 0x3f;
|
||||
|
||||
if (datalength + 4 > targsize)
|
||||
return (-1);
|
||||
target[datalength++] = Base64[output[0]];
|
||||
target[datalength++] = Base64[output[1]];
|
||||
target[datalength++] = Base64[output[2]];
|
||||
target[datalength++] = Base64[output[3]];
|
||||
}
|
||||
if (datalength + 4 > targsize)
|
||||
return (-1);
|
||||
target[datalength++] = Base64[output[0]];
|
||||
target[datalength++] = Base64[output[1]];
|
||||
target[datalength++] = Base64[output[2]];
|
||||
target[datalength++] = Base64[output[3]];
|
||||
}
|
||||
|
||||
/* Now we worry about padding. */
|
||||
if (0 != srclength) {
|
||||
/* Get what's left. */
|
||||
input[0] = input[1] = input[2] = '\0';
|
||||
for (i = 0; i < srclength; i++)
|
||||
input[i] = *src++;
|
||||
/* Now we worry about padding. */
|
||||
if (0 != srclength) {
|
||||
/* Get what's left. */
|
||||
input[0] = input[1] = input[2] = '\0';
|
||||
for (i = 0; i < srclength; i++)
|
||||
input[i] = *src++;
|
||||
|
||||
output[0] = input[0] >> 2;
|
||||
output[1] = ((input[0] & 0x03) << 4) + (input[1] >> 4);
|
||||
output[2] = ((input[1] & 0x0f) << 2) + (input[2] >> 6);
|
||||
output[0] = input[0] >> 2;
|
||||
output[1] = ((input[0] & 0x03) << 4) + (input[1] >> 4);
|
||||
output[2] = ((input[1] & 0x0f) << 2) + (input[2] >> 6);
|
||||
|
||||
if (datalength + 4 > targsize)
|
||||
return (-1);
|
||||
target[datalength++] = Base64[output[0]];
|
||||
target[datalength++] = Base64[output[1]];
|
||||
if (srclength == 1)
|
||||
target[datalength++] = Pad64;
|
||||
else
|
||||
target[datalength++] = Base64[output[2]];
|
||||
target[datalength++] = Pad64;
|
||||
}
|
||||
if (datalength >= targsize)
|
||||
return (-1);
|
||||
target[datalength] = '\0'; /* Returned value doesn't count \0. */
|
||||
return (datalength);
|
||||
if (datalength + 4 > targsize)
|
||||
return (-1);
|
||||
target[datalength++] = Base64[output[0]];
|
||||
target[datalength++] = Base64[output[1]];
|
||||
if (srclength == 1)
|
||||
target[datalength++] = Pad64;
|
||||
else
|
||||
target[datalength++] = Base64[output[2]];
|
||||
target[datalength++] = Pad64;
|
||||
}
|
||||
if (datalength >= targsize)
|
||||
return (-1);
|
||||
target[datalength] = '\0'; /* Returned value doesn't count \0. */
|
||||
return (datalength);
|
||||
}
|
||||
|
||||
/* skips all whitespace anywhere.
|
||||
@@ -162,249 +162,249 @@ int b64_encode(char *src, size_t srclength, char *target, size_t targsize)
|
||||
it returns the number of data bytes stored at the target, or -1 on error.
|
||||
*/
|
||||
|
||||
int b64_decode(const char *src, char *target, size_t targsize)
|
||||
int b64_decode(char *src, char *target, size_t targsize)
|
||||
{
|
||||
int tarindex, state, ch;
|
||||
char *pos;
|
||||
int tarindex, state, ch;
|
||||
char *pos;
|
||||
|
||||
state = 0;
|
||||
tarindex = 0;
|
||||
state = 0;
|
||||
tarindex = 0;
|
||||
|
||||
while ((ch = *src++) != '\0') {
|
||||
if (isspace(ch)) /* Skip whitespace anywhere. */
|
||||
continue;
|
||||
while ((ch = *src++) != '\0') {
|
||||
if (isspace(ch)) /* Skip whitespace anywhere. */
|
||||
continue;
|
||||
|
||||
if (ch == Pad64)
|
||||
break;
|
||||
if (ch == Pad64)
|
||||
break;
|
||||
|
||||
pos = const_cast<char *>(strchr(Base64, ch));
|
||||
if (pos == 0) /* A non-base64 character. */
|
||||
return (-1);
|
||||
pos = strchr(Base64, ch);
|
||||
if (pos == 0) /* A non-base64 character. */
|
||||
return (-1);
|
||||
|
||||
switch (state) {
|
||||
case 0:
|
||||
if (target) {
|
||||
if (static_cast<size_t>(tarindex) >= targsize)
|
||||
return (-1);
|
||||
target[tarindex] = (pos - Base64) << 2;
|
||||
}
|
||||
state = 1;
|
||||
break;
|
||||
case 1:
|
||||
if (target) {
|
||||
if (static_cast<size_t>(tarindex) + 1 >= targsize)
|
||||
return (-1);
|
||||
target[tarindex] |= (pos - Base64) >> 4;
|
||||
target[tarindex + 1] = ((pos - Base64) & 0x0f)
|
||||
<< 4;
|
||||
}
|
||||
tarindex++;
|
||||
state = 2;
|
||||
break;
|
||||
case 2:
|
||||
if (target) {
|
||||
if (static_cast<size_t>(tarindex) + 1 >= targsize)
|
||||
return (-1);
|
||||
target[tarindex] |= (pos - Base64) >> 2;
|
||||
target[tarindex + 1] = ((pos - Base64) & 0x03)
|
||||
<< 6;
|
||||
}
|
||||
tarindex++;
|
||||
state = 3;
|
||||
break;
|
||||
case 3:
|
||||
if (target) {
|
||||
if (static_cast<size_t>(tarindex) >= targsize)
|
||||
return (-1);
|
||||
target[tarindex] |= (pos - Base64);
|
||||
}
|
||||
tarindex++;
|
||||
state = 0;
|
||||
break;
|
||||
default:
|
||||
abort();
|
||||
}
|
||||
}
|
||||
switch (state) {
|
||||
case 0:
|
||||
if (target) {
|
||||
if ((size_t) tarindex >= targsize)
|
||||
return (-1);
|
||||
target[tarindex] = (pos - Base64) << 2;
|
||||
}
|
||||
state = 1;
|
||||
break;
|
||||
case 1:
|
||||
if (target) {
|
||||
if ((size_t) tarindex + 1 >= targsize)
|
||||
return (-1);
|
||||
target[tarindex] |= (pos - Base64) >> 4;
|
||||
target[tarindex + 1] = ((pos - Base64) & 0x0f)
|
||||
<< 4;
|
||||
}
|
||||
tarindex++;
|
||||
state = 2;
|
||||
break;
|
||||
case 2:
|
||||
if (target) {
|
||||
if ((size_t) tarindex + 1 >= targsize)
|
||||
return (-1);
|
||||
target[tarindex] |= (pos - Base64) >> 2;
|
||||
target[tarindex + 1] = ((pos - Base64) & 0x03)
|
||||
<< 6;
|
||||
}
|
||||
tarindex++;
|
||||
state = 3;
|
||||
break;
|
||||
case 3:
|
||||
if (target) {
|
||||
if ((size_t) tarindex >= targsize)
|
||||
return (-1);
|
||||
target[tarindex] |= (pos - Base64);
|
||||
}
|
||||
tarindex++;
|
||||
state = 0;
|
||||
break;
|
||||
default:
|
||||
abort();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* We are done decoding Base-64 chars. Let's see if we ended
|
||||
* on a byte boundary, and/or with erroneous trailing characters.
|
||||
*/
|
||||
/*
|
||||
* We are done decoding Base-64 chars. Let's see if we ended
|
||||
* on a byte boundary, and/or with erroneous trailing characters.
|
||||
*/
|
||||
|
||||
if (ch == Pad64) { /* We got a pad char. */
|
||||
ch = *src++; /* Skip it, get next. */
|
||||
switch (state) {
|
||||
case 0: /* Invalid = in first position */
|
||||
case 1: /* Invalid = in second position */
|
||||
return (-1);
|
||||
if (ch == Pad64) { /* We got a pad char. */
|
||||
ch = *src++; /* Skip it, get next. */
|
||||
switch (state) {
|
||||
case 0: /* Invalid = in first position */
|
||||
case 1: /* Invalid = in second position */
|
||||
return (-1);
|
||||
|
||||
case 2: /* Valid, means one byte of info */
|
||||
/* Skip any number of spaces. */
|
||||
for (; ch != '\0'; ch = *src++)
|
||||
if (!isspace(ch))
|
||||
break;
|
||||
/* Make sure there is another trailing = sign. */
|
||||
if (ch != Pad64)
|
||||
return (-1);
|
||||
ch = *src++; /* Skip the = */
|
||||
/* Fall through to "single trailing =" case. */
|
||||
/* FALLTHROUGH */
|
||||
case 2: /* Valid, means one byte of info */
|
||||
/* Skip any number of spaces. */
|
||||
for ((void) NULL; ch != '\0'; ch = *src++)
|
||||
if (!isspace(ch))
|
||||
break;
|
||||
/* Make sure there is another trailing = sign. */
|
||||
if (ch != Pad64)
|
||||
return (-1);
|
||||
ch = *src++; /* Skip the = */
|
||||
/* Fall through to "single trailing =" case. */
|
||||
/* FALLTHROUGH */
|
||||
|
||||
case 3: /* Valid, means two bytes of info */
|
||||
/*
|
||||
* We know this char is an =. Is there anything but
|
||||
* whitespace after it?
|
||||
*/
|
||||
for (; ch != '\0'; ch = *src++)
|
||||
if (!isspace(ch))
|
||||
return (-1);
|
||||
case 3: /* Valid, means two bytes of info */
|
||||
/*
|
||||
* We know this char is an =. Is there anything but
|
||||
* whitespace after it?
|
||||
*/
|
||||
for ((void) NULL; ch != '\0'; ch = *src++)
|
||||
if (!isspace(ch))
|
||||
return (-1);
|
||||
|
||||
/*
|
||||
* Now make sure for cases 2 and 3 that the "extra"
|
||||
* bits that slopped past the last full byte were
|
||||
* zeros. If we don't check them, they become a
|
||||
* subliminal channel.
|
||||
*/
|
||||
if (target && target[tarindex] != 0)
|
||||
return (-1);
|
||||
}
|
||||
} else {
|
||||
/*
|
||||
* We ended by seeing the end of the string. Make sure we
|
||||
* have no partial bytes lying around.
|
||||
*/
|
||||
if (state != 0)
|
||||
return (-1);
|
||||
}
|
||||
/*
|
||||
* Now make sure for cases 2 and 3 that the "extra"
|
||||
* bits that slopped past the last full byte were
|
||||
* zeros. If we don't check them, they become a
|
||||
* subliminal channel.
|
||||
*/
|
||||
if (target && target[tarindex] != 0)
|
||||
return (-1);
|
||||
}
|
||||
} else {
|
||||
/*
|
||||
* We ended by seeing the end of the string. Make sure we
|
||||
* have no partial bytes lying around.
|
||||
*/
|
||||
if (state != 0)
|
||||
return (-1);
|
||||
}
|
||||
|
||||
return (tarindex);
|
||||
return (tarindex);
|
||||
}
|
||||
|
||||
const char* encode_ip(unsigned char *ip)
|
||||
char *encode_ip(unsigned char *ip)
|
||||
{
|
||||
static char buf[25];
|
||||
unsigned char *cp;
|
||||
struct in_addr ia; /* For IPv4 */
|
||||
char *s_ip; /* Signed ip string */
|
||||
static char buf[25];
|
||||
unsigned char *cp;
|
||||
struct in_addr ia; /* For IPv4 */
|
||||
char *s_ip; /* Signed ip string */
|
||||
|
||||
if (!ip)
|
||||
return "*";
|
||||
if (!ip)
|
||||
return "*";
|
||||
|
||||
if (strchr(reinterpret_cast<char *>(ip), ':')) {
|
||||
return NULL;
|
||||
} else {
|
||||
s_ip = str_signed(ip);
|
||||
ia.s_addr = inet_addr(s_ip);
|
||||
cp = reinterpret_cast<unsigned char *>(ia.s_addr);
|
||||
b64_encode(reinterpret_cast<char *>(&cp), sizeof(struct in_addr), buf, 25);
|
||||
}
|
||||
return buf;
|
||||
if (strchr((char *) ip, ':')) {
|
||||
return NULL;
|
||||
} else {
|
||||
s_ip = str_signed(ip);
|
||||
ia.s_addr = inet_addr(s_ip);
|
||||
cp = (unsigned char *) &ia.s_addr;
|
||||
b64_encode((char *) &cp, sizeof(struct in_addr), buf, 25);
|
||||
}
|
||||
return buf;
|
||||
}
|
||||
|
||||
int decode_ip(const char *buf)
|
||||
int decode_ip(char *buf)
|
||||
{
|
||||
int len = strlen(buf);
|
||||
char targ[25];
|
||||
struct in_addr ia;
|
||||
int len = strlen(buf);
|
||||
char targ[25];
|
||||
struct in_addr *ia;
|
||||
|
||||
b64_decode(buf, targ, 25);
|
||||
ia = *reinterpret_cast<struct in_addr *>(targ);
|
||||
if (len == 24) { /* IPv6 */
|
||||
return 0;
|
||||
} else if (len == 8) /* IPv4 */
|
||||
return ia.s_addr;
|
||||
else /* Error?? */
|
||||
return 0;
|
||||
b64_decode(buf, targ, 25);
|
||||
ia = (struct in_addr *) targ;
|
||||
if (len == 24) { /* IPv6 */
|
||||
return 0;
|
||||
} else if (len == 8) /* IPv4 */
|
||||
return ia->s_addr;
|
||||
else /* Error?? */
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* ':' and '#' and '&' and '+' and '@' must never be in this table. */
|
||||
/* these tables must NEVER CHANGE! >) */
|
||||
char int6_to_base64_map[] = {
|
||||
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D',
|
||||
'E', 'F',
|
||||
'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
|
||||
'U', 'V',
|
||||
'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
|
||||
'k', 'l',
|
||||
'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
|
||||
'{', '}'
|
||||
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D',
|
||||
'E', 'F',
|
||||
'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
|
||||
'U', 'V',
|
||||
'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
|
||||
'k', 'l',
|
||||
'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
|
||||
'{', '}'
|
||||
};
|
||||
|
||||
char base64_to_int6_map[] = {
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, -1, -1,
|
||||
-1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
|
||||
25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1,
|
||||
-1, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
|
||||
51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, -1, 63, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, -1, -1,
|
||||
-1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
|
||||
25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1,
|
||||
-1, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
|
||||
51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, -1, 63, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
|
||||
};
|
||||
|
||||
static char *int_to_base64(long val)
|
||||
{
|
||||
/* 32/6 == max 6 bytes for representation,
|
||||
* +1 for the null, +1 for byte boundaries
|
||||
*/
|
||||
static char base64buf[8];
|
||||
long i = 7;
|
||||
/* 32/6 == max 6 bytes for representation,
|
||||
* +1 for the null, +1 for byte boundaries
|
||||
*/
|
||||
static char base64buf[8];
|
||||
long i = 7;
|
||||
|
||||
base64buf[i] = '\0';
|
||||
base64buf[i] = '\0';
|
||||
|
||||
/* Temporary debugging code.. remove before 2038 ;p.
|
||||
* This might happen in case of 64bit longs (opteron/ia64),
|
||||
* if the value is then too large it can easily lead to
|
||||
* a buffer underflow and thus to a crash. -- Syzop
|
||||
*/
|
||||
if (val > 2147483647L) {
|
||||
abort();
|
||||
}
|
||||
/* Temporary debugging code.. remove before 2038 ;p.
|
||||
* This might happen in case of 64bit longs (opteron/ia64),
|
||||
* if the value is then too large it can easily lead to
|
||||
* a buffer underflow and thus to a crash. -- Syzop
|
||||
*/
|
||||
if (val > 2147483647L) {
|
||||
abort();
|
||||
}
|
||||
|
||||
do {
|
||||
base64buf[--i] = int6_to_base64_map[val & 63];
|
||||
}
|
||||
while (val >>= 6);
|
||||
do {
|
||||
base64buf[--i] = int6_to_base64_map[val & 63];
|
||||
}
|
||||
while (val >>= 6);
|
||||
|
||||
return base64buf + i;
|
||||
return base64buf + i;
|
||||
}
|
||||
|
||||
static long base64_to_int(char *b64)
|
||||
{
|
||||
int v = base64_to_int6_map[static_cast<unsigned char>(*b64++)];
|
||||
int v = base64_to_int6_map[(unsigned char) *b64++];
|
||||
|
||||
if (!b64)
|
||||
return 0;
|
||||
if (!b64)
|
||||
return 0;
|
||||
|
||||
while (*b64) {
|
||||
v <<= 6;
|
||||
v += base64_to_int6_map[static_cast<unsigned char>(*b64++)];
|
||||
}
|
||||
while (*b64) {
|
||||
v <<= 6;
|
||||
v += base64_to_int6_map[(unsigned char) *b64++];
|
||||
}
|
||||
|
||||
return v;
|
||||
return v;
|
||||
}
|
||||
|
||||
long base64dects(const char *ts)
|
||||
long base64dects(char *ts)
|
||||
{
|
||||
char *token;
|
||||
long value;
|
||||
char *token;
|
||||
long value;
|
||||
|
||||
if (!ts) {
|
||||
return 0;
|
||||
}
|
||||
token = myStrGetToken(ts, '!', 1);
|
||||
if (!ts) {
|
||||
return 0;
|
||||
}
|
||||
token = myStrGetToken(ts, '!', 1);
|
||||
|
||||
if (!token) {
|
||||
return strtoul(ts, NULL, 10);
|
||||
}
|
||||
value = base64dec(token);
|
||||
delete [] token;
|
||||
return value;
|
||||
if (!token) {
|
||||
return strtoul(ts, NULL, 10);
|
||||
}
|
||||
value = base64dec(token);
|
||||
Anope_Free(token);
|
||||
return value;
|
||||
}
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
# If not on Windows, generate anoperc and install it along with mydbgen
|
||||
if(NOT WIN32)
|
||||
configure_file(${Anope_SOURCE_DIR}/src/bin/anoperc.in ${Anope_BINARY_DIR}/src/bin/anoperc)
|
||||
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/anoperc
|
||||
DESTINATION bin
|
||||
)
|
||||
# Add anoperc to list of files for CPack to ignore
|
||||
add_to_cpack_ignored_files("anoperc$")
|
||||
install(PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/mydbgen
|
||||
DESTINATION data
|
||||
)
|
||||
endif(NOT WIN32)
|
||||
@@ -6,7 +6,6 @@
|
||||
# For usage, see the usage subroutine or run the script with no
|
||||
# command line arguments.
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# ====================================================================
|
||||
require 5.6.0;
|
||||
|
||||
+6
-7
@@ -2,7 +2,7 @@
|
||||
#
|
||||
# Configuration script for Services
|
||||
#
|
||||
# (C) 2003-2008 Anope Team
|
||||
# (C) 2003-2014 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Please read COPYING and README for further details.
|
||||
@@ -10,15 +10,14 @@
|
||||
# Based on the original code of Epona by Lara.
|
||||
# Based on the original code of Services by Andy Church.
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
|
||||
|
||||
|
||||
ANOPEPID="@INSTDIR@/data/services.pid"
|
||||
ANOPROG="@INSTDIR@/bin/services"
|
||||
LOG="@INSTDIR@/data/logs/"
|
||||
ARCVERSION="1.3"
|
||||
ANOPEPID="@DATDEST@/services.pid"
|
||||
ANOPROG="@BINDEST@/services"
|
||||
LOG="@DATDEST@/logs/"
|
||||
ARCVERSION="1.2"
|
||||
|
||||
isAnopeRunning () {
|
||||
if [ ! -f $ANOPEPID ] ; then
|
||||
@@ -134,7 +133,7 @@ elif [ "$1" = "help" ] ; then
|
||||
echo "folder or make use of our extensive online support at"
|
||||
echo "http://www.anope.org/"
|
||||
fi
|
||||
|
||||
|
||||
else
|
||||
echo "Anope Remote Control ($ARCVERSION)"
|
||||
echo "Usage: $0 [start|stop|status|restart|rehash|version|help]"
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# $Id$
|
||||
|
||||
# Location of the .sql file with the schema
|
||||
DBSQL="tables.sql"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user