mirror of
https://github.com/anope/anope.git
synced 2026-06-18 06:14:46 +02:00
Compare commits
329 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 883d22d4da | |||
| b766b3a597 | |||
| 834f4d1bf0 | |||
| ab4533e58a | |||
| 4ba8c2ba74 | |||
| 2cc4cd0165 | |||
| 9abdb4e2e9 | |||
| f43f6c3864 | |||
| 6d87e0eb72 | |||
| 1c89004245 | |||
| 8cc71ee794 | |||
| e4189822bc | |||
| a5ddbb0217 | |||
| 3d396f245b | |||
| 0018f790ed | |||
| 6674797c7d | |||
| 1e2e80bf75 | |||
| dc3744a71c | |||
| a36e536a4d | |||
| 7f4afc22fa | |||
| 6e7479170e | |||
| 543e0d770a | |||
| d5f0360175 | |||
| fae2710ba7 | |||
| 8e39d5f219 | |||
| 0a91d582c9 | |||
| 9b06dc5046 | |||
| 6fb5ca2315 | |||
| 3860856dd2 | |||
| 2b4d834f8c | |||
| 79c3a70ed7 | |||
| f9c4baf8fc | |||
| a0ff4cfed5 | |||
| 5993a65b87 | |||
| 116a4b2bea | |||
| 29619eb206 | |||
| 78240c5790 | |||
| da277ad2c9 | |||
| b88b98e627 | |||
| 0ab5111bda | |||
| 6c56c23837 | |||
| bd2fda42cf | |||
| baa119f2e2 | |||
| 5351fb4e4a | |||
| 2f3da52c3c | |||
| 80969ad89a | |||
| 7b6d1e1b52 | |||
| 0a371aec7b | |||
| 011e426845 | |||
| 75f39dec7a | |||
| 3ebaa46c99 | |||
| 196567ce68 | |||
| 2e03670256 | |||
| 845cca2722 | |||
| 1b7749f108 | |||
| 7ffaa93865 | |||
| 6bd04bc936 | |||
| 8c1afc307a | |||
| d002ea1952 | |||
| 05eb3fd2d6 | |||
| 9fc99cdfbb | |||
| 0f45f286eb | |||
| f07adb2b25 | |||
| ab7e430170 | |||
| 8aa7fbe0ea | |||
| 7fc9b4f943 | |||
| 3d367e9bde | |||
| 582212b361 | |||
| 1528727cc8 | |||
| 492b543c7e | |||
| 0bfe09ba5d | |||
| 76534583db | |||
| b8674ee3fb | |||
| 9f47e2b137 | |||
| aff1d04bab | |||
| 01b0ad461a | |||
| 80c9c4903e | |||
| 757c7ad973 | |||
| 531cba9251 | |||
| 752e87a9f0 | |||
| 508996215f | |||
| f87398b532 | |||
| a6cc0a305e | |||
| bf84e48549 | |||
| 99559d1acd | |||
| 12a4aa4dba | |||
| a53719d91e | |||
| 5a6ec7cf86 | |||
| e84db77a2c | |||
| 34f10d78fc | |||
| 5d3491e72f | |||
| 1e9de0c7f1 | |||
| 626afff37d | |||
| aa677072e0 | |||
| c424dce517 | |||
| 91f6b2e29d | |||
| 7d3138a4cc | |||
| c4f40ed3a7 | |||
| a1c49c827f | |||
| 1f738f0ad4 | |||
| af45426be5 | |||
| 278314f8be | |||
| 4e594d3acd | |||
| 89120afeba | |||
| 1a3a4b275f | |||
| a840ef8ae8 | |||
| 2c79273205 | |||
| ac19ba79d1 | |||
| a40c22a729 | |||
| 911eeea867 | |||
| 1ec931a93a | |||
| 93949b8b96 | |||
| 6a70b5385b | |||
| f483ab87c6 | |||
| 973ecb7058 | |||
| e1ff14e0c4 | |||
| b2380300ff | |||
| 2404bb74c5 | |||
| b1c34faf49 | |||
| b55ac06019 | |||
| eaf211d59c | |||
| 94822c99c0 | |||
| a3347b59a1 | |||
| 3c4b3f0407 | |||
| f4bcf833ec | |||
| aa90411f3a | |||
| 7e8e6e849b | |||
| 3ffd917926 | |||
| 14fc57d24b | |||
| 9302af51a3 | |||
| 287169d6e8 | |||
| fc05827621 | |||
| 04bf65525a | |||
| 872a00242e | |||
| d70948d81e | |||
| 3e77eaa218 | |||
| 28ccf79adf | |||
| 6ebc85b900 | |||
| 51351aac2b | |||
| ba4c7d8138 | |||
| 2871c4701b | |||
| f62eb16176 | |||
| b7477fc4d0 | |||
| faed18f6e8 | |||
| ce79b5023f | |||
| 27364ac890 | |||
| dd7d2d4cf0 | |||
| 023c2188f8 | |||
| ab1f8e01fa | |||
| 3f80e1cad0 | |||
| 393b5ab26e | |||
| 9edede4f3a | |||
| 235c4ae95c | |||
| 54a60add71 | |||
| a06e674305 | |||
| 84ecd1866c | |||
| 2eb2cb7650 | |||
| fcc08f61bc | |||
| 512b5bdaf3 | |||
| f4db8c5360 | |||
| 6b2f9e25cd | |||
| 4099944013 | |||
| 87b62c433d | |||
| de99f89894 | |||
| 308070e019 | |||
| 3d4cf39940 | |||
| 122dcd082a | |||
| aa4b3e2563 | |||
| 47504c9de5 | |||
| 0ed0fa4af6 | |||
| 15817208aa | |||
| ff13d00eb5 | |||
| aaf1cefd1c | |||
| c4c1242ac7 | |||
| f432789853 | |||
| 1cf1f044fb | |||
| 525dfe12e6 | |||
| 0d6fa568ec | |||
| fadc61f89e | |||
| 711787b54d | |||
| f2c44c67b5 | |||
| 0a61c06860 | |||
| ef442c3dc8 | |||
| 420b11a235 | |||
| 5ad60b70ee | |||
| b73210e538 | |||
| 01d43e7db5 | |||
| 20b5056315 | |||
| d66e928529 | |||
| 4ae43c7dd2 | |||
| 5e62e8f22e | |||
| a4b015b39d | |||
| 0761d4f74b | |||
| e34448092e | |||
| 9124a3be53 | |||
| b462814760 | |||
| 2708eea5d1 | |||
| f58026749b | |||
| ed568f4750 | |||
| de824a599a | |||
| a819cb0cc0 | |||
| 3617d79788 | |||
| 657e1deb59 | |||
| c595e6755d | |||
| 4fd169b184 | |||
| 7665af27cd | |||
| df107dac1f | |||
| bfd252b517 | |||
| 90a500ffd6 | |||
| 80cbac3769 | |||
| f82640af7c | |||
| 77f0cd0c46 | |||
| 7a7f1f8390 | |||
| 861fe9e7b3 | |||
| 453963eeae | |||
| aad1a4ca8d | |||
| c6e3324b30 | |||
| 98aa38d800 | |||
| f1c975c89f | |||
| 3beac16030 | |||
| 511c4b73d2 | |||
| 6f5bc22584 | |||
| 744d6d4030 | |||
| d4af97a7a7 | |||
| 710355fd2c | |||
| 46c0d40009 | |||
| a7ac6a0ac7 | |||
| 3a956c51be | |||
| 280dcc7597 | |||
| 37de1286fa | |||
| 4630ae454a | |||
| 42b8cfe404 | |||
| 935c1974e8 | |||
| f913188991 | |||
| eadf52caf2 | |||
| 661755a199 | |||
| 17a4789c1c | |||
| 180ac9e4d2 | |||
| d4b595fdb8 | |||
| f9cd8c200c | |||
| 0557f090fb | |||
| 23b3382347 | |||
| a08b3ec592 | |||
| f6b823ade8 | |||
| 4fac8d6a91 | |||
| 4f550d29aa | |||
| 68ef593292 | |||
| 24f7ffcf18 | |||
| c3529b6129 | |||
| c7893e471f | |||
| e514a3793d | |||
| 68381e69d9 | |||
| aa421772e0 | |||
| 5179a0a40f | |||
| da8a1c7b60 | |||
| e10fe1cd76 | |||
| 88330c07ad | |||
| 88c0edc8f8 | |||
| d82771900e | |||
| 7eadde9911 | |||
| 8e8a1d96e4 | |||
| 842b5609dc | |||
| 960968b8cd | |||
| 9c6576f78e | |||
| 65628dfdec | |||
| 848c0aaa21 | |||
| d16f4930f4 | |||
| 30b7e50a43 | |||
| 0264072b53 | |||
| 0bd3141407 | |||
| b9190ebc16 | |||
| 86e43f1f14 | |||
| 9d37cf1d5a | |||
| 458be36a32 | |||
| 38ad96c57c | |||
| 1c1312624d | |||
| 608b63d979 | |||
| 9047b0347d | |||
| 029f39964b | |||
| 2ec83162d6 | |||
| 3317f406d2 | |||
| 95a017db9f | |||
| 187868def9 | |||
| 154b0ded37 | |||
| 3125c632b5 | |||
| 921ddbd517 | |||
| 65deeaf1e6 | |||
| a1fe864c7f | |||
| 9a0b1efc24 | |||
| d2362719b2 | |||
| 987f371c0b | |||
| 6a9fa9f4d2 | |||
| 5fc268b750 | |||
| 5b62682223 | |||
| 0b64cbc1d2 | |||
| fa622b4e9f | |||
| 52593ef71b | |||
| 9e48e683e7 | |||
| c64c2b6fd0 | |||
| a491eed3ff | |||
| a43424dbb9 | |||
| 13f92e03be | |||
| 6e3aa36876 | |||
| 7a429517af | |||
| 0e8de37778 | |||
| 338cb38ee8 | |||
| 8330009373 | |||
| 5ab705b6fe | |||
| a6c5207859 | |||
| 2361cb8d40 | |||
| d08461907c | |||
| fb997c5057 | |||
| 6de7cb6eed | |||
| 624c5ba5b6 | |||
| 0b3824c86a | |||
| 0d3ec454de | |||
| 12ac162d9e | |||
| d935d3d1b8 | |||
| b705f7eda6 | |||
| 00494c9020 | |||
| bbea1b5679 | |||
| 72fed4d9bb | |||
| 63f55fa78b | |||
| 11709eade6 | |||
| 3806cd8440 | |||
| f6510291aa | |||
| de917994f8 | |||
| d3d64c27b1 | |||
| 1fd6685132 |
+2
-33
@@ -379,10 +379,7 @@ macro(calculate_depends SRC)
|
||||
foreach(INCLUDE ${INCLUDES})
|
||||
# Extract the filename from the #include line
|
||||
extract_include_filename(${INCLUDE} FILENAME QUOTE_TYPE)
|
||||
if(QUOTE_TYPE STREQUAL "quotes")
|
||||
# Append the filename to the list of headers
|
||||
append_to_list(HEADERS ${FILENAME})
|
||||
else(QUOTE_TYPE STREQUAL "quotes")
|
||||
if(QUOTE_TYPE STREQUAL "angle brackets")
|
||||
# The following checks will only be done if there was a request for angle includes to be checked
|
||||
if(CHECK_ANGLE_INCLUDES)
|
||||
# Find the path of the include file
|
||||
@@ -404,36 +401,8 @@ macro(calculate_depends SRC)
|
||||
message(FATAL_ERROR "${SRC} needs header file ${FILENAME} but we were unable to locate that header file! Check that the header file is within the search path of your OS.")
|
||||
endif(FOUND_${FILENAME}_INCLUDE)
|
||||
endif(CHECK_ANGLE_INCLUDES)
|
||||
endif(QUOTE_TYPE STREQUAL "quotes")
|
||||
endif(QUOTE_TYPE STREQUAL "angle brackets")
|
||||
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)
|
||||
sort_list(HEADERS)
|
||||
# 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)
|
||||
|
||||
###############################################################################
|
||||
|
||||
+14
-88
@@ -21,13 +21,19 @@ if(HAS_PATCH)
|
||||
string(REGEX REPLACE "(.*)-patch .*" "\\1" MINOR_VERSION "${ONLY_VERSION}")
|
||||
string(REGEX REPLACE ".*-patch (.*)" "\\1" PATCH_VERSION "${ONLY_VERSION}")
|
||||
else(HAS_PATCH)
|
||||
string(REGEX REPLACE "(.*)-beta" "\\1" MINOR_VERSION "${ONLY_VERSION}")
|
||||
if(MINOR_VERSION STREQUAL "4-1\n")
|
||||
set(PATCH_VERSION 1)
|
||||
else(MINOR_VERSION STREQUAL "4-1\n")
|
||||
set(PATCH_VERSION 0)
|
||||
endif(MINOR_VERSION STREQUAL "4-1\n")
|
||||
set(MINOR_VERSION 4)
|
||||
string(REGEX MATCH "\\." HAS_DOT "${ONLY_VERSION}")
|
||||
if(HAS_DOT)
|
||||
string(REGEX REPLACE "(.*)\\..*" "\\1" MINOR_VERSION "${ONLY_VERSION}")
|
||||
string(REGEX REPLACE ".*\\.(.*)" "\\1" PATCH_VERSION "${ONLY_VERSION}")
|
||||
else(HAS_DOT)
|
||||
string(REGEX REPLACE "(.*)-beta" "\\1" MINOR_VERSION "${ONLY_VERSION}")
|
||||
if(MINOR_VERSION STREQUAL "4-1\n")
|
||||
set(PATCH_VERSION 1)
|
||||
else(MINOR_VERSION STREQUAL "4-1\n")
|
||||
set(PATCH_VERSION 0)
|
||||
endif(MINOR_VERSION STREQUAL "4-1\n")
|
||||
set(MINOR_VERSION 4)
|
||||
endif(HAS_DOT)
|
||||
endif(HAS_PATCH)
|
||||
|
||||
# Detect is we are using CMake 2.6 or better, these versions include functions that require less work than CMake 2.4 does
|
||||
@@ -378,86 +384,6 @@ if(WIN32)
|
||||
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
|
||||
if(TMP_HEADERS)
|
||||
set(ALL_HEADERS ${TMP_HEADERS})
|
||||
sort_list(ALL_HEADERS)
|
||||
endif(TMP_HEADERS)
|
||||
|
||||
# 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)
|
||||
sort_list(OLD_HEADERS)
|
||||
# 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)
|
||||
|
||||
# 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\;build\;autom4te.cache" TRUE)
|
||||
# Add the files we don't want the periods converted for
|
||||
@@ -501,7 +427,7 @@ 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
|
||||
install(FILES ${Anope_SOURCE_DIR}/docs/Changes ${Anope_SOURCE_DIR}/docs/Changes.conf ${Anope_SOURCE_DIR}/docs/Changes.lang
|
||||
DESTINATION .
|
||||
)
|
||||
endif(WIN32)
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
Anope Version 1.9.1
|
||||
-------------------
|
||||
** DELETED CONFIGURATION DIRECTIVES **
|
||||
Nick tracking has been removed as an option.
|
||||
|
||||
Anope Version 1.9.0
|
||||
-------------------
|
||||
** ADDED CONFIGURATION DIRECTIVES **
|
||||
|
||||
** MODIFIED CONFIGURATION DIRECTIVES **
|
||||
|
||||
** DELETED CONFIGURATION DIRECTIVES **
|
||||
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
Anope Version 1.9.0
|
||||
-------------------
|
||||
*** New Strings:
|
||||
|
||||
*** Mod Strings:
|
||||
|
||||
*** Del Strings:
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
Anope Version 1.9.0
|
||||
-------------------
|
||||
- MySQL Support Withdrawn until rewritten.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#
|
||||
# Configuration script for Services.
|
||||
#
|
||||
# Anope (c) 2003-2008 Anope team
|
||||
# Anope (c) 2003-2010 Anope team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# This program is free but copyrighted software; see the file COPYING for
|
||||
@@ -42,7 +42,6 @@ Run_Build_System () {
|
||||
WITH_PERM=""
|
||||
BUILD_TYPE=""
|
||||
RUN_CC_PL=""
|
||||
EXTRA_ARGS=""
|
||||
GEN_TYPE=""
|
||||
|
||||
if [ "$INSTDIR" != "" ] ; then
|
||||
@@ -114,9 +113,9 @@ Run_Build_System () {
|
||||
REAL_SOURCE_DIR="$SOURCE_DIR"
|
||||
fi
|
||||
|
||||
echo "cmake $GEN_TYPE $WITH_INST $WITH_RUN $WITH_PERM $BUILD_TYPE $RUN_CC_PL $EXTRA_ARGS $REAL_SOURCE_DIR"
|
||||
echo "cmake $GEN_TYPE $WITH_INST $WITH_RUN $WITH_PERM $BUILD_TYPE $RUN_CC_PL $EXTRA_CONFIG_ARGS $REAL_SOURCE_DIR"
|
||||
|
||||
cmake $GEN_TYPE $WITH_INST $WITH_RUN $WITH_PERM $BUILD_TYPE $RUN_CC_PL $EXTRA_ARGS $REAL_SOURCE_DIR
|
||||
cmake $GEN_TYPE $WITH_INST $WITH_RUN $WITH_PERM $BUILD_TYPE $RUN_CC_PL $EXTRA_CONFIG_ARGS $REAL_SOURCE_DIR
|
||||
|
||||
echo ""
|
||||
if [ "$SOURCE_DIR" = "." ] ; then
|
||||
@@ -126,9 +125,9 @@ Run_Build_System () {
|
||||
echo "Now run make to build Anope."
|
||||
fi
|
||||
else
|
||||
echo "./configure $WITH_INST $WITH_RUN $WITH_PERM $BUILD_TYPE $EXTRA_ARGS $RUN_CC_PL"
|
||||
echo "./configure $WITH_INST $WITH_RUN $WITH_PERM $BUILD_TYPE $EXTRA_CONFIG_ARGS $RUN_CC_PL"
|
||||
|
||||
./configure $WITH_INST $WITH_RUN $WITH_PERM $BUILD_TYPE $EXTRA_ARGS $RUN_CC_PL
|
||||
./configure $WITH_INST $WITH_RUN $WITH_PERM $BUILD_TYPE $EXTRA_CONFIG_ARGS $RUN_CC_PL
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -393,7 +392,9 @@ echo "(You may only need to do this if $BUILD_SYSTEM is unable to locate"
|
||||
echo "missing dependencies without hints)"
|
||||
echo2 "[$EXTRA_CONFIG_ARGS] "
|
||||
if read INPUT ; then : ; else echo "" ; exit 1 ; fi
|
||||
EXTRA_CONFIG_ARGS=$INPUT
|
||||
if [ "$INPUT" ] ; then
|
||||
EXTRA_CONFIG_ARGS=$INPUT
|
||||
fi
|
||||
echo ""
|
||||
|
||||
####
|
||||
|
||||
+2
-1
@@ -7,6 +7,7 @@ LDPROFILE=
|
||||
SHELL=/bin/sh
|
||||
INSTDIR=@INSTDIR@
|
||||
MAKEBIN=@MAKEBIN@
|
||||
MYSQLDIR=@MYSQLDIR@
|
||||
INSTALL=@INSTALL@
|
||||
RM=@RM@
|
||||
CP=@CP@
|
||||
@@ -25,7 +26,7 @@ MAKEARGS = 'CFLAGS=${CFLAGS}' 'CC=${CC}' 'ANOPELIBS=${ANOPELIBS}' \
|
||||
'TOUCH=${TOUCH}' 'SHELL=${SHELL}' \
|
||||
'RUNGROUP=${RUNGROUP}' \
|
||||
'SHARED=${SHARED}' 'MODULEFLAGS=${MODULEFLAGS}' \
|
||||
'MAKEBIN=${MAKEBIN}'
|
||||
'MAKEBIN=${MAKEBIN}' 'MYSQLDIR=${MYSQLDIR}'
|
||||
|
||||
build: language headers
|
||||
@${MAKE} -C src ${MAKEARGS} all
|
||||
|
||||
@@ -3,4 +3,3 @@
|
||||
|
||||
file(READ "${FILE}" RESULT)
|
||||
message("${RESULT}")
|
||||
|
||||
|
||||
@@ -1,98 +0,0 @@
|
||||
Legend:
|
||||
x = done
|
||||
? = unsure
|
||||
+ = in progress
|
||||
|
||||
1.9.1
|
||||
-----
|
||||
[x] Remove modules_unload_all fini + hack that goes with it
|
||||
[x] signal handling cleanup
|
||||
[x] Seamless fantasy support for all ChanServ commands, instead of requiring bs_fantasy_*
|
||||
Remaining issues:
|
||||
[x] Allow fantasy to be disabled from some commands (e.g. FORBID?) seems unnecessary, really.
|
||||
[x] (think on this carefully): some commands (e.g. !help) need to strip the pre-provided channelname from them.
|
||||
[x] HelpServ must die
|
||||
[x] 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.
|
||||
[x] Make NS ENFORCE/RELEASE stuff more sane, redo timers
|
||||
[x] Support operoverride and such things (stop reversing mode changes from nonopped people where unnecessary) - done by Liber
|
||||
[x] Settable oper flags (split into types containing privs+commands, allow each oper to be set to a type, like we do with insp?)
|
||||
|
||||
Outstanding issues:
|
||||
- Add some events that were not present before but useful for future versions
|
||||
|
||||
1.9.2
|
||||
-----
|
||||
[ ] Redo database insanity.
|
||||
[ ] Move database load/save to a module
|
||||
[ ] realtime SQL/whatever module using events (possibly ongoing)
|
||||
[ ] 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)
|
||||
[ ] IRCd capability support: don't rely on CAPAB, provide an interface to turn capabilities on specifically
|
||||
[ ] Socket subsystem needs some serious loving
|
||||
[ ] Multiple sockets
|
||||
[ ] Asynchronous, using select() (multiple engines? not really needed..)
|
||||
[ ] Callbacks, event style, see also inspircd
|
||||
[ ] Asynchronous DNS?
|
||||
|
||||
Future
|
||||
------
|
||||
[ ] Move a (lot) of stuff to class members as a defined interface rather than copypasta everywhere (ns_set, ns_saset!)
|
||||
[ ] 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?)
|
||||
[ ] Add support for +k, +q, etc type umodes
|
||||
[ ] Fix permanent channels support properly. This will require removing do_sjoin().
|
||||
[ ] burn do_sjoin with fire
|
||||
[ ] fantasy: allow replies/notifications to fantasy commands to go to the channel via notice
|
||||
[ ] 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").
|
||||
[?] Update help to reflect the fact /msg memoserv set notify mail - works just fine ;)
|
||||
[ ] 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)
|
||||
[ ] 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)
|
||||
@@ -1,6 +1,6 @@
|
||||
#! /bin/sh
|
||||
# Guess values for system-dependent variables and create Makefiles.
|
||||
# Generated by GNU Autoconf 2.62.
|
||||
# Generated by GNU Autoconf 2.63.
|
||||
#
|
||||
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
|
||||
# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
||||
@@ -635,75 +635,74 @@ ac_includes_default="\
|
||||
# include <unistd.h>
|
||||
#endif"
|
||||
|
||||
ac_subst_vars='SHELL
|
||||
PATH_SEPARATOR
|
||||
PACKAGE_NAME
|
||||
PACKAGE_TARNAME
|
||||
PACKAGE_VERSION
|
||||
PACKAGE_STRING
|
||||
PACKAGE_BUGREPORT
|
||||
exec_prefix
|
||||
prefix
|
||||
program_transform_name
|
||||
bindir
|
||||
sbindir
|
||||
libexecdir
|
||||
datarootdir
|
||||
datadir
|
||||
sysconfdir
|
||||
sharedstatedir
|
||||
localstatedir
|
||||
includedir
|
||||
oldincludedir
|
||||
docdir
|
||||
infodir
|
||||
htmldir
|
||||
dvidir
|
||||
pdfdir
|
||||
psdir
|
||||
libdir
|
||||
localedir
|
||||
mandir
|
||||
DEFS
|
||||
ECHO_C
|
||||
ECHO_N
|
||||
ECHO_T
|
||||
LIBS
|
||||
build_alias
|
||||
host_alias
|
||||
target_alias
|
||||
CC
|
||||
CFLAGS
|
||||
LDFLAGS
|
||||
CPPFLAGS
|
||||
ac_ct_CC
|
||||
EXEEXT
|
||||
OBJEXT
|
||||
RM
|
||||
CP
|
||||
TOUCH
|
||||
INSTALL
|
||||
MYSQLCONF
|
||||
ANOPELIBS
|
||||
CPP
|
||||
GREP
|
||||
EGREP
|
||||
SHARED
|
||||
MODULEFLAGS
|
||||
RUNGROUP
|
||||
INSTDIR
|
||||
MAKEBIN
|
||||
ac_subst_vars='LTLIBOBJS
|
||||
LIBOBJS
|
||||
LTLIBOBJS'
|
||||
MYSQLDIR
|
||||
MAKEBIN
|
||||
INSTDIR
|
||||
RUNGROUP
|
||||
MODULEFLAGS
|
||||
SHARED
|
||||
EGREP
|
||||
GREP
|
||||
CPP
|
||||
ANOPELIBS
|
||||
INSTALL
|
||||
TOUCH
|
||||
CP
|
||||
RM
|
||||
OBJEXT
|
||||
EXEEXT
|
||||
ac_ct_CC
|
||||
CPPFLAGS
|
||||
LDFLAGS
|
||||
CFLAGS
|
||||
CC
|
||||
target_alias
|
||||
host_alias
|
||||
build_alias
|
||||
LIBS
|
||||
ECHO_T
|
||||
ECHO_N
|
||||
ECHO_C
|
||||
DEFS
|
||||
mandir
|
||||
localedir
|
||||
libdir
|
||||
psdir
|
||||
pdfdir
|
||||
dvidir
|
||||
htmldir
|
||||
infodir
|
||||
docdir
|
||||
oldincludedir
|
||||
includedir
|
||||
localstatedir
|
||||
sharedstatedir
|
||||
sysconfdir
|
||||
datadir
|
||||
datarootdir
|
||||
libexecdir
|
||||
sbindir
|
||||
bindir
|
||||
program_transform_name
|
||||
prefix
|
||||
exec_prefix
|
||||
PACKAGE_BUGREPORT
|
||||
PACKAGE_STRING
|
||||
PACKAGE_VERSION
|
||||
PACKAGE_TARNAME
|
||||
PACKAGE_NAME
|
||||
PATH_SEPARATOR
|
||||
SHELL'
|
||||
ac_subst_files=''
|
||||
ac_user_opts='
|
||||
enable_option_checking
|
||||
with_mysql
|
||||
with_mysqlconfig_path
|
||||
with_rungroup
|
||||
with_permissions
|
||||
with_instdir
|
||||
with_makebin
|
||||
with_mysqlpp
|
||||
with_optimization
|
||||
with_debugsym
|
||||
'
|
||||
@@ -1138,9 +1137,9 @@ fi
|
||||
if test -n "$ac_unrecognized_opts"; then
|
||||
case $enable_option_checking in
|
||||
no) ;;
|
||||
fatal) { $as_echo "$as_me: error: Unrecognized options: $ac_unrecognized_opts" >&2
|
||||
fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2
|
||||
{ (exit 1); exit 1; }; } ;;
|
||||
*) $as_echo "$as_me: WARNING: Unrecognized options: $ac_unrecognized_opts" >&2 ;;
|
||||
*) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
@@ -1193,7 +1192,7 @@ test "$silent" = yes && exec 6>/dev/null
|
||||
ac_pwd=`pwd` && test -n "$ac_pwd" &&
|
||||
ac_ls_di=`ls -di .` &&
|
||||
ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
|
||||
{ $as_echo "$as_me: error: Working directory cannot be determined" >&2
|
||||
{ $as_echo "$as_me: error: working directory cannot be determined" >&2
|
||||
{ (exit 1); exit 1; }; }
|
||||
test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
|
||||
{ $as_echo "$as_me: error: pwd does not report name of working directory" >&2
|
||||
@@ -1334,14 +1333,13 @@ if test -n "$ac_init_help"; then
|
||||
Optional Packages:
|
||||
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
|
||||
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
|
||||
--without-mysql Do not use MySQL or attempt to find it
|
||||
--with-mysqlconfig-path=PATH Complete path to the mysql_config executable
|
||||
--with-rungroup=group Specify the rungroup for anope
|
||||
--with-permissions=permissions Specify the default permissions for anope
|
||||
--with-instdir=instdir Specify the default install dir for anope
|
||||
--with-makebin=run-cc.pl Specify the default make binary to use
|
||||
--with-optimization=1|2|3|4|5 Specify the optimization level
|
||||
--with-debugsym Include debugging symbols
|
||||
--with-rungroup=group Specify the rungroup for anope
|
||||
--with-permissions=permissions Specify the default permissions for anope
|
||||
--with-instdir=instdir Specify the default install dir for anope
|
||||
--with-makebin=run-cc.pl Specify the default make binary to use
|
||||
--with-mysqlpp=/usr/local/ The base directory of the MySQL++ installation
|
||||
--with-optimization=1|2|3|4|5 Specify the optimization level
|
||||
--with-debugsym Include debugging symbols
|
||||
|
||||
Some influential environment variables:
|
||||
CC C compiler command
|
||||
@@ -1419,7 +1417,7 @@ test -n "$ac_init_help" && exit $ac_status
|
||||
if $ac_init_version; then
|
||||
cat <<\_ACEOF
|
||||
configure
|
||||
generated by GNU Autoconf 2.62
|
||||
generated by GNU Autoconf 2.63
|
||||
|
||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
|
||||
2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
||||
@@ -1433,7 +1431,7 @@ This file contains any messages produced by compilers while
|
||||
running configure, to aid debugging if configure makes a mistake.
|
||||
|
||||
It was created by $as_me, which was
|
||||
generated by GNU Autoconf 2.62. Invocation command line was
|
||||
generated by GNU Autoconf 2.63. Invocation command line was
|
||||
|
||||
$ $0 $@
|
||||
|
||||
@@ -1556,8 +1554,8 @@ _ASBOX
|
||||
case $ac_val in #(
|
||||
*${as_nl}*)
|
||||
case $ac_var in #(
|
||||
*_cv_*) { $as_echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
|
||||
$as_echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
|
||||
*_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5
|
||||
$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
|
||||
esac
|
||||
case $ac_var in #(
|
||||
_ | IFS | as_nl) ;; #(
|
||||
@@ -1760,6 +1758,8 @@ $as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
|
||||
fi
|
||||
done
|
||||
if $ac_cache_corrupted; then
|
||||
{ $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
|
||||
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
|
||||
{ $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
|
||||
$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
|
||||
{ { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
|
||||
@@ -1891,12 +1891,8 @@ fi
|
||||
else
|
||||
case $cross_compiling:$ac_tool_warned in
|
||||
yes:)
|
||||
{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
|
||||
whose name does not start with the host triplet. If you think this
|
||||
configuration is useful to you, please write to autoconf@gnu.org." >&5
|
||||
$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
|
||||
whose name does not start with the host triplet. If you think this
|
||||
configuration is useful to you, please write to autoconf@gnu.org." >&2;}
|
||||
{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
|
||||
$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
|
||||
ac_tool_warned=yes ;;
|
||||
esac
|
||||
CC=$ac_ct_CC
|
||||
@@ -2095,12 +2091,8 @@ done
|
||||
else
|
||||
case $cross_compiling:$ac_tool_warned in
|
||||
yes:)
|
||||
{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
|
||||
whose name does not start with the host triplet. If you think this
|
||||
configuration is useful to you, please write to autoconf@gnu.org." >&5
|
||||
$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
|
||||
whose name does not start with the host triplet. If you think this
|
||||
configuration is useful to you, please write to autoconf@gnu.org." >&2;}
|
||||
{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
|
||||
$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
|
||||
ac_tool_warned=yes ;;
|
||||
esac
|
||||
CC=$ac_ct_CC
|
||||
@@ -2110,11 +2102,13 @@ fi
|
||||
fi
|
||||
|
||||
|
||||
test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
|
||||
test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
|
||||
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
|
||||
{ { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
|
||||
See \`config.log' for more details." >&5
|
||||
$as_echo "$as_me: error: no acceptable C compiler found in \$PATH
|
||||
See \`config.log' for more details." >&2;}
|
||||
{ (exit 1); exit 1; }; }
|
||||
{ (exit 1); exit 1; }; }; }
|
||||
|
||||
# Provide some information about the compiler.
|
||||
$as_echo "$as_me:$LINENO: checking for C compiler version" >&5
|
||||
@@ -2244,11 +2238,13 @@ if test -z "$ac_file"; then
|
||||
$as_echo "$as_me: failed program was:" >&5
|
||||
sed 's/^/| /' conftest.$ac_ext >&5
|
||||
|
||||
{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
|
||||
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
|
||||
{ { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables
|
||||
See \`config.log' for more details." >&5
|
||||
$as_echo "$as_me: error: C compiler cannot create executables
|
||||
See \`config.log' for more details." >&2;}
|
||||
{ (exit 77); exit 77; }; }
|
||||
{ (exit 77); exit 77; }; }; }
|
||||
fi
|
||||
|
||||
ac_exeext=$ac_cv_exeext
|
||||
@@ -2276,13 +2272,15 @@ $as_echo "$ac_try_echo") >&5
|
||||
if test "$cross_compiling" = maybe; then
|
||||
cross_compiling=yes
|
||||
else
|
||||
{ { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs.
|
||||
{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
|
||||
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
|
||||
{ { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs.
|
||||
If you meant to cross compile, use \`--host'.
|
||||
See \`config.log' for more details." >&5
|
||||
$as_echo "$as_me: error: cannot run C compiled programs.
|
||||
If you meant to cross compile, use \`--host'.
|
||||
See \`config.log' for more details." >&2;}
|
||||
{ (exit 1); exit 1; }; }
|
||||
{ (exit 1); exit 1; }; }; }
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
@@ -2325,11 +2323,13 @@ for ac_file in conftest.exe conftest conftest.*; do
|
||||
esac
|
||||
done
|
||||
else
|
||||
{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
|
||||
{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
|
||||
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
|
||||
{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
|
||||
See \`config.log' for more details." >&5
|
||||
$as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
|
||||
See \`config.log' for more details." >&2;}
|
||||
{ (exit 1); exit 1; }; }
|
||||
{ (exit 1); exit 1; }; }; }
|
||||
fi
|
||||
|
||||
rm -f conftest$ac_cv_exeext
|
||||
@@ -2383,11 +2383,13 @@ else
|
||||
$as_echo "$as_me: failed program was:" >&5
|
||||
sed 's/^/| /' conftest.$ac_ext >&5
|
||||
|
||||
{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
|
||||
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
|
||||
{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
|
||||
See \`config.log' for more details." >&5
|
||||
$as_echo "$as_me: error: cannot compute suffix of object files: cannot compile
|
||||
See \`config.log' for more details." >&2;}
|
||||
{ (exit 1); exit 1; }; }
|
||||
{ (exit 1); exit 1; }; }; }
|
||||
fi
|
||||
|
||||
rm -f conftest.$ac_cv_objext conftest.$ac_ext
|
||||
@@ -3024,7 +3026,7 @@ LIBS=$ac_check_lib_save_LIBS
|
||||
fi
|
||||
{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_inet_ntoa" >&5
|
||||
$as_echo "$ac_cv_lib_nsl_inet_ntoa" >&6; }
|
||||
if test $ac_cv_lib_nsl_inet_ntoa = yes; then
|
||||
if test "x$ac_cv_lib_nsl_inet_ntoa" = x""yes; then
|
||||
ANOPELIBS="$ANOPELIBS-lnsl "
|
||||
fi
|
||||
|
||||
@@ -3093,7 +3095,7 @@ LIBS=$ac_check_lib_save_LIBS
|
||||
fi
|
||||
{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_socket_socket" >&5
|
||||
$as_echo "$ac_cv_lib_socket_socket" >&6; }
|
||||
if test $ac_cv_lib_socket_socket = yes; then
|
||||
if test "x$ac_cv_lib_socket_socket" = x""yes; then
|
||||
ANOPELIBS="$ANOPELIBS-lsocket "
|
||||
fi
|
||||
|
||||
@@ -3162,7 +3164,7 @@ LIBS=$ac_check_lib_save_LIBS
|
||||
fi
|
||||
{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_resolv_res_query" >&5
|
||||
$as_echo "$ac_cv_lib_resolv_res_query" >&6; }
|
||||
if test $ac_cv_lib_resolv_res_query = yes; then
|
||||
if test "x$ac_cv_lib_resolv_res_query" = x""yes; then
|
||||
ANOPELIBS="$ANOPELIBS-lresolv "
|
||||
fi
|
||||
|
||||
@@ -3231,7 +3233,7 @@ LIBS=$ac_check_lib_save_LIBS
|
||||
fi
|
||||
{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_revoke" >&5
|
||||
$as_echo "$ac_cv_lib_bsd_revoke" >&6; }
|
||||
if test $ac_cv_lib_bsd_revoke = yes; then
|
||||
if test "x$ac_cv_lib_bsd_revoke" = x""yes; then
|
||||
ANOPELIBS="$ANOPELIBS-lbsd "
|
||||
fi
|
||||
|
||||
@@ -3316,164 +3318,16 @@ else
|
||||
$as_echo "no" >&6; }
|
||||
fi
|
||||
|
||||
|
||||
DIS_MYSQL=" MySQL: No"
|
||||
|
||||
# Check whether --with-mysql was given.
|
||||
if test "${with_mysql+set}" = set; then
|
||||
withval=$with_mysql;
|
||||
else
|
||||
|
||||
|
||||
# Check whether --with-mysqlconfig-path was given.
|
||||
if test "${with_mysqlconfig_path+set}" = set; then
|
||||
withval=$with_mysqlconfig_path; mysql_config_path="$withval"
|
||||
else
|
||||
mysql_config_path=""
|
||||
fi
|
||||
|
||||
MYSQLCONF=""
|
||||
if test "$mysql_config_path" != ""; then
|
||||
if test -x "$mysql_config_path"; then
|
||||
MYSQLCONF="$mysql_config_path"
|
||||
echo "checking for mysql_config... $MYSQLCONF" >&6
|
||||
fi
|
||||
fi
|
||||
if test "$MYSQLCONF" = ""; then
|
||||
# Extract the first word of "mysql_config", so it can be a program name with args.
|
||||
set dummy mysql_config; ac_word=$2
|
||||
{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
|
||||
$as_echo_n "checking for $ac_word... " >&6; }
|
||||
if test "${ac_cv_path_MYSQLCONF+set}" = set; then
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
case $MYSQLCONF in
|
||||
[\\/]* | ?:[\\/]*)
|
||||
ac_cv_path_MYSQLCONF="$MYSQLCONF" # Let the user override the test with a path.
|
||||
;;
|
||||
*)
|
||||
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||||
for as_dir in $PATH
|
||||
do
|
||||
IFS=$as_save_IFS
|
||||
test -z "$as_dir" && as_dir=.
|
||||
for ac_exec_ext in '' $ac_executable_extensions; do
|
||||
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
|
||||
ac_cv_path_MYSQLCONF="$as_dir/$ac_word$ac_exec_ext"
|
||||
$as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
|
||||
break 2
|
||||
fi
|
||||
done
|
||||
done
|
||||
IFS=$as_save_IFS
|
||||
|
||||
test -z "$ac_cv_path_MYSQLCONF" && ac_cv_path_MYSQLCONF=""""
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
MYSQLCONF=$ac_cv_path_MYSQLCONF
|
||||
if test -n "$MYSQLCONF"; then
|
||||
{ $as_echo "$as_me:$LINENO: result: $MYSQLCONF" >&5
|
||||
$as_echo "$MYSQLCONF" >&6; }
|
||||
else
|
||||
{ $as_echo "$as_me:$LINENO: result: no" >&5
|
||||
$as_echo "no" >&6; }
|
||||
fi
|
||||
|
||||
|
||||
fi
|
||||
if test "$MYSQLCONF" != ""; then
|
||||
hold_cflags="$CFLAGS"
|
||||
hold_ldflags="$LDFLAGS"
|
||||
if test "$MYSQL_CFLAGS" = ""; then
|
||||
MYSQL_CFLAGS="`$MYSQLCONF --cflags`"
|
||||
fi
|
||||
if test "$MYSQL_LDFLAGS" = ""; then
|
||||
MYSQL_LDFLAGS="`$MYSQLCONF --libs`"
|
||||
fi
|
||||
CFLAGS="$CFLAGS $MYSQL_CFLAGS"
|
||||
LDFLAGS="$LDFLAGS $MYSQL_LDFLAGS"
|
||||
echo $ECHO_N "checking if mysql_config produces valid values... $ECHO_C" >&6
|
||||
if test "$cross_compiling" = yes; then
|
||||
{ { $as_echo "$as_me:$LINENO: error: cannot run test program while cross compiling
|
||||
See \`config.log' for more details." >&5
|
||||
$as_echo "$as_me: error: cannot run test program while cross compiling
|
||||
See \`config.log' for more details." >&2;}
|
||||
{ (exit 1); exit 1; }; }
|
||||
else
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
/* confdefs.h. */
|
||||
_ACEOF
|
||||
cat confdefs.h >>conftest.$ac_ext
|
||||
cat >>conftest.$ac_ext <<_ACEOF
|
||||
/* end confdefs.h. */
|
||||
|
||||
#include <mysql.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
MYSQL *mysql = mysql_init(0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
_ACEOF
|
||||
rm -f conftest$ac_exeext
|
||||
if { (ac_try="$ac_link"
|
||||
case "(($ac_try" in
|
||||
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||
*) ac_try_echo=$ac_try;;
|
||||
esac
|
||||
eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
|
||||
$as_echo "$ac_try_echo") >&5
|
||||
(eval "$ac_link") 2>&5
|
||||
ac_status=$?
|
||||
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
|
||||
{ (case "(($ac_try" in
|
||||
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||
*) ac_try_echo=$ac_try;;
|
||||
esac
|
||||
eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
|
||||
$as_echo "$ac_try_echo") >&5
|
||||
(eval "$ac_try") 2>&5
|
||||
ac_status=$?
|
||||
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; }; then
|
||||
ac_cv_mysql_valid=yes
|
||||
else
|
||||
$as_echo "$as_me: program exited with status $ac_status" >&5
|
||||
$as_echo "$as_me: failed program was:" >&5
|
||||
sed 's/^/| /' conftest.$ac_ext >&5
|
||||
|
||||
( exit $ac_status )
|
||||
ac_cv_mysql_valid=no
|
||||
fi
|
||||
rm -rf conftest.dSYM
|
||||
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
|
||||
fi
|
||||
|
||||
|
||||
echo $ac_cv_mysql_valid >&6
|
||||
if test "$ac_cv_mysql_valid" = "yes"; then
|
||||
DIS_MYSQL=" MySQL: Yes"
|
||||
else
|
||||
CFLAGS="$hold_cflags"
|
||||
LDFLAGS="$hold_ldflags"
|
||||
fi
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
|
||||
{ $as_echo "$as_me:$LINENO: checking whether this is a bit or little endian system" >&5
|
||||
$as_echo_n "checking whether this is a bit or little endian system... " >&6; }
|
||||
if test "$cross_compiling" = yes; then
|
||||
{ { $as_echo "$as_me:$LINENO: error: cannot run test program while cross compiling
|
||||
{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
|
||||
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
|
||||
{ { $as_echo "$as_me:$LINENO: error: cannot run test program while cross compiling
|
||||
See \`config.log' for more details." >&5
|
||||
$as_echo "$as_me: error: cannot run test program while cross compiling
|
||||
See \`config.log' for more details." >&2;}
|
||||
{ (exit 1); exit 1; }; }
|
||||
{ (exit 1); exit 1; }; }; }
|
||||
else
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
/* confdefs.h. */
|
||||
@@ -3765,11 +3619,13 @@ rm -f conftest.err conftest.$ac_ext
|
||||
if $ac_preproc_ok; then
|
||||
:
|
||||
else
|
||||
{ { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
|
||||
{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
|
||||
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
|
||||
{ { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
|
||||
See \`config.log' for more details." >&5
|
||||
$as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
|
||||
See \`config.log' for more details." >&2;}
|
||||
{ (exit 1); exit 1; }; }
|
||||
{ (exit 1); exit 1; }; }; }
|
||||
fi
|
||||
|
||||
ac_ext=c
|
||||
@@ -4152,8 +4008,9 @@ ac_res=`eval 'as_val=${'$as_ac_Header'}
|
||||
$as_echo "$as_val"'`
|
||||
{ $as_echo "$as_me:$LINENO: result: $ac_res" >&5
|
||||
$as_echo "$ac_res" >&6; }
|
||||
if test `eval 'as_val=${'$as_ac_Header'}
|
||||
$as_echo "$as_val"'` = yes; then
|
||||
as_val=`eval 'as_val=${'$as_ac_Header'}
|
||||
$as_echo "$as_val"'`
|
||||
if test "x$as_val" = x""yes; then
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
|
||||
_ACEOF
|
||||
@@ -4290,7 +4147,7 @@ fi
|
||||
$as_echo "$ac_cv_header_sys_types_h" >&6; }
|
||||
|
||||
fi
|
||||
if test $ac_cv_header_sys_types_h = yes; then
|
||||
if test "x$ac_cv_header_sys_types_h" = x""yes; then
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define HAS_SYS_TYPES_H 1
|
||||
@@ -4387,7 +4244,7 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
|
||||
fi
|
||||
{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
|
||||
$as_echo "$ac_cv_func_dlopen" >&6; }
|
||||
if test $ac_cv_func_dlopen = yes; then
|
||||
if test "x$ac_cv_func_dlopen" = x""yes; then
|
||||
:
|
||||
else
|
||||
{ $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
|
||||
@@ -4455,7 +4312,7 @@ LIBS=$ac_check_lib_save_LIBS
|
||||
fi
|
||||
{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
|
||||
$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
|
||||
if test $ac_cv_lib_dl_dlopen = yes; then
|
||||
if test "x$ac_cv_lib_dl_dlopen" = x""yes; then
|
||||
|
||||
ANOPELIBS="$ANOPELIBS -ldl"
|
||||
|
||||
@@ -4709,7 +4566,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
fi
|
||||
{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_uint8_t" >&5
|
||||
$as_echo "$ac_cv_type_uint8_t" >&6; }
|
||||
if test $ac_cv_type_uint8_t = yes; then
|
||||
if test "x$ac_cv_type_uint8_t" = x""yes; then
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define HAVE_UINT8_T 1
|
||||
@@ -4811,7 +4668,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
fi
|
||||
{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_u_int8_t" >&5
|
||||
$as_echo "$ac_cv_type_u_int8_t" >&6; }
|
||||
if test $ac_cv_type_u_int8_t = yes; then
|
||||
if test "x$ac_cv_type_u_int8_t" = x""yes; then
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define HAVE_U_INT8_T 1
|
||||
@@ -4913,7 +4770,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
fi
|
||||
{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_int16_t" >&5
|
||||
$as_echo "$ac_cv_type_int16_t" >&6; }
|
||||
if test $ac_cv_type_int16_t = yes; then
|
||||
if test "x$ac_cv_type_int16_t" = x""yes; then
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define HAVE_INT16_T 1
|
||||
@@ -5015,7 +4872,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
fi
|
||||
{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_uint16_t" >&5
|
||||
$as_echo "$ac_cv_type_uint16_t" >&6; }
|
||||
if test $ac_cv_type_uint16_t = yes; then
|
||||
if test "x$ac_cv_type_uint16_t" = x""yes; then
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define HAVE_UINT16_T 1
|
||||
@@ -5117,7 +4974,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
fi
|
||||
{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_u_int16_t" >&5
|
||||
$as_echo "$ac_cv_type_u_int16_t" >&6; }
|
||||
if test $ac_cv_type_u_int16_t = yes; then
|
||||
if test "x$ac_cv_type_u_int16_t" = x""yes; then
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define HAVE_U_INT16_T 1
|
||||
@@ -5219,7 +5076,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
fi
|
||||
{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_int32_t" >&5
|
||||
$as_echo "$ac_cv_type_int32_t" >&6; }
|
||||
if test $ac_cv_type_int32_t = yes; then
|
||||
if test "x$ac_cv_type_int32_t" = x""yes; then
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define HAVE_INT32_T 1
|
||||
@@ -5321,7 +5178,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
fi
|
||||
{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_uint32_t" >&5
|
||||
$as_echo "$ac_cv_type_uint32_t" >&6; }
|
||||
if test $ac_cv_type_uint32_t = yes; then
|
||||
if test "x$ac_cv_type_uint32_t" = x""yes; then
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define HAVE_UINT32_T 1
|
||||
@@ -5423,7 +5280,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
fi
|
||||
{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_u_int32_t" >&5
|
||||
$as_echo "$ac_cv_type_u_int32_t" >&6; }
|
||||
if test $ac_cv_type_u_int32_t = yes; then
|
||||
if test "x$ac_cv_type_u_int32_t" = x""yes; then
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define HAVE_U_INT32_T 1
|
||||
@@ -5560,7 +5417,7 @@ fi
|
||||
$as_echo "$ac_cv_header_strings_h" >&6; }
|
||||
|
||||
fi
|
||||
if test $ac_cv_header_strings_h = yes; then
|
||||
if test "x$ac_cv_header_strings_h" = x""yes; then
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define HAVE_STRINGS_H 1
|
||||
@@ -5696,7 +5553,7 @@ fi
|
||||
$as_echo "$ac_cv_header_sys_select_h" >&6; }
|
||||
|
||||
fi
|
||||
if test $ac_cv_header_sys_select_h = yes; then
|
||||
if test "x$ac_cv_header_sys_select_h" = x""yes; then
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define HAVE_SYS_SELECT_H 1
|
||||
@@ -5797,8 +5654,9 @@ ac_res=`eval 'as_val=${'$as_ac_var'}
|
||||
$as_echo "$as_val"'`
|
||||
{ $as_echo "$as_me:$LINENO: result: $ac_res" >&5
|
||||
$as_echo "$ac_res" >&6; }
|
||||
if test `eval 'as_val=${'$as_ac_var'}
|
||||
$as_echo "$as_val"'` = yes; then
|
||||
as_val=`eval 'as_val=${'$as_ac_var'}
|
||||
$as_echo "$as_val"'`
|
||||
if test "x$as_val" = x""yes; then
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
|
||||
_ACEOF
|
||||
@@ -5900,8 +5758,9 @@ ac_res=`eval 'as_val=${'$as_ac_var'}
|
||||
$as_echo "$as_val"'`
|
||||
{ $as_echo "$as_me:$LINENO: result: $ac_res" >&5
|
||||
$as_echo "$ac_res" >&6; }
|
||||
if test `eval 'as_val=${'$as_ac_var'}
|
||||
$as_echo "$as_val"'` = yes; then
|
||||
as_val=`eval 'as_val=${'$as_ac_var'}
|
||||
$as_echo "$as_val"'`
|
||||
if test "x$as_val" = x""yes; then
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
|
||||
_ACEOF
|
||||
@@ -6003,8 +5862,9 @@ ac_res=`eval 'as_val=${'$as_ac_var'}
|
||||
$as_echo "$as_val"'`
|
||||
{ $as_echo "$as_me:$LINENO: result: $ac_res" >&5
|
||||
$as_echo "$ac_res" >&6; }
|
||||
if test `eval 'as_val=${'$as_ac_var'}
|
||||
$as_echo "$as_val"'` = yes; then
|
||||
as_val=`eval 'as_val=${'$as_ac_var'}
|
||||
$as_echo "$as_val"'`
|
||||
if test "x$as_val" = x""yes; then
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
|
||||
_ACEOF
|
||||
@@ -6106,8 +5966,9 @@ ac_res=`eval 'as_val=${'$as_ac_var'}
|
||||
$as_echo "$as_val"'`
|
||||
{ $as_echo "$as_me:$LINENO: result: $ac_res" >&5
|
||||
$as_echo "$ac_res" >&6; }
|
||||
if test `eval 'as_val=${'$as_ac_var'}
|
||||
$as_echo "$as_val"'` = yes; then
|
||||
as_val=`eval 'as_val=${'$as_ac_var'}
|
||||
$as_echo "$as_val"'`
|
||||
if test "x$as_val" = x""yes; then
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
|
||||
_ACEOF
|
||||
@@ -6209,8 +6070,9 @@ ac_res=`eval 'as_val=${'$as_ac_var'}
|
||||
$as_echo "$as_val"'`
|
||||
{ $as_echo "$as_me:$LINENO: result: $ac_res" >&5
|
||||
$as_echo "$ac_res" >&6; }
|
||||
if test `eval 'as_val=${'$as_ac_var'}
|
||||
$as_echo "$as_val"'` = yes; then
|
||||
as_val=`eval 'as_val=${'$as_ac_var'}
|
||||
$as_echo "$as_val"'`
|
||||
if test "x$as_val" = x""yes; then
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
|
||||
_ACEOF
|
||||
@@ -6312,8 +6174,9 @@ ac_res=`eval 'as_val=${'$as_ac_var'}
|
||||
$as_echo "$as_val"'`
|
||||
{ $as_echo "$as_me:$LINENO: result: $ac_res" >&5
|
||||
$as_echo "$ac_res" >&6; }
|
||||
if test `eval 'as_val=${'$as_ac_var'}
|
||||
$as_echo "$as_val"'` = yes; then
|
||||
as_val=`eval 'as_val=${'$as_ac_var'}
|
||||
$as_echo "$as_val"'`
|
||||
if test "x$as_val" = x""yes; then
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
|
||||
_ACEOF
|
||||
@@ -6415,8 +6278,9 @@ ac_res=`eval 'as_val=${'$as_ac_var'}
|
||||
$as_echo "$as_val"'`
|
||||
{ $as_echo "$as_me:$LINENO: result: $ac_res" >&5
|
||||
$as_echo "$ac_res" >&6; }
|
||||
if test `eval 'as_val=${'$as_ac_var'}
|
||||
$as_echo "$as_val"'` = yes; then
|
||||
as_val=`eval 'as_val=${'$as_ac_var'}
|
||||
$as_echo "$as_val"'`
|
||||
if test "x$as_val" = x""yes; then
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
|
||||
_ACEOF
|
||||
@@ -6518,8 +6382,9 @@ ac_res=`eval 'as_val=${'$as_ac_var'}
|
||||
$as_echo "$as_val"'`
|
||||
{ $as_echo "$as_me:$LINENO: result: $ac_res" >&5
|
||||
$as_echo "$ac_res" >&6; }
|
||||
if test `eval 'as_val=${'$as_ac_var'}
|
||||
$as_echo "$as_val"'` = yes; then
|
||||
as_val=`eval 'as_val=${'$as_ac_var'}
|
||||
$as_echo "$as_val"'`
|
||||
if test "x$as_val" = x""yes; then
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
|
||||
_ACEOF
|
||||
@@ -6621,8 +6486,9 @@ ac_res=`eval 'as_val=${'$as_ac_var'}
|
||||
$as_echo "$as_val"'`
|
||||
{ $as_echo "$as_me:$LINENO: result: $ac_res" >&5
|
||||
$as_echo "$ac_res" >&6; }
|
||||
if test `eval 'as_val=${'$as_ac_var'}
|
||||
$as_echo "$as_val"'` = yes; then
|
||||
as_val=`eval 'as_val=${'$as_ac_var'}
|
||||
$as_echo "$as_val"'`
|
||||
if test "x$as_val" = x""yes; then
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
|
||||
_ACEOF
|
||||
@@ -6724,8 +6590,9 @@ ac_res=`eval 'as_val=${'$as_ac_var'}
|
||||
$as_echo "$as_val"'`
|
||||
{ $as_echo "$as_me:$LINENO: result: $ac_res" >&5
|
||||
$as_echo "$ac_res" >&6; }
|
||||
if test `eval 'as_val=${'$as_ac_var'}
|
||||
$as_echo "$as_val"'` = yes; then
|
||||
as_val=`eval 'as_val=${'$as_ac_var'}
|
||||
$as_echo "$as_val"'`
|
||||
if test "x$as_val" = x""yes; then
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
|
||||
_ACEOF
|
||||
@@ -6827,8 +6694,9 @@ ac_res=`eval 'as_val=${'$as_ac_var'}
|
||||
$as_echo "$as_val"'`
|
||||
{ $as_echo "$as_me:$LINENO: result: $ac_res" >&5
|
||||
$as_echo "$ac_res" >&6; }
|
||||
if test `eval 'as_val=${'$as_ac_var'}
|
||||
$as_echo "$as_val"'` = yes; then
|
||||
as_val=`eval 'as_val=${'$as_ac_var'}
|
||||
$as_echo "$as_val"'`
|
||||
if test "x$as_val" = x""yes; then
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
|
||||
_ACEOF
|
||||
@@ -6891,11 +6759,21 @@ if test "${with_makebin+set}" = set; then
|
||||
withval=$with_makebin; MAKEBIN=$withval
|
||||
fi
|
||||
|
||||
|
||||
# If we're using run-cc.pl suppress the make process (run-cc.pl does it for us)
|
||||
if test "$MAKEBIN"; then
|
||||
MAKEBIN="@$MAKEBIN"
|
||||
MAKEBIN="@$MAKEBIN"
|
||||
fi
|
||||
|
||||
MYSQLDIR=/usr/local/
|
||||
|
||||
# Check whether --with-mysqlpp was given.
|
||||
if test "${with_mysqlpp+set}" = set; then
|
||||
withval=$with_mysqlpp; MYSQLDIR=$withval
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -6948,8 +6826,8 @@ _ACEOF
|
||||
case $ac_val in #(
|
||||
*${as_nl}*)
|
||||
case $ac_var in #(
|
||||
*_cv_*) { $as_echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
|
||||
$as_echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
|
||||
*_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5
|
||||
$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
|
||||
esac
|
||||
case $ac_var in #(
|
||||
_ | IFS | as_nl) ;; #(
|
||||
@@ -7341,7 +7219,7 @@ exec 6>&1
|
||||
# values after options handling.
|
||||
ac_log="
|
||||
This file was extended by $as_me, which was
|
||||
generated by GNU Autoconf 2.62. Invocation command line was
|
||||
generated by GNU Autoconf 2.63. Invocation command line was
|
||||
|
||||
CONFIG_FILES = $CONFIG_FILES
|
||||
CONFIG_HEADERS = $CONFIG_HEADERS
|
||||
@@ -7354,6 +7232,15 @@ on `(hostname || uname -n) 2>/dev/null | sed 1q`
|
||||
|
||||
_ACEOF
|
||||
|
||||
case $ac_config_files in *"
|
||||
"*) set x $ac_config_files; shift; ac_config_files=$*;;
|
||||
esac
|
||||
|
||||
case $ac_config_headers in *"
|
||||
"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
|
||||
esac
|
||||
|
||||
|
||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||
# Files that config.status was made for.
|
||||
config_files="$ac_config_files"
|
||||
@@ -7366,16 +7253,17 @@ ac_cs_usage="\
|
||||
\`$as_me' instantiates files from templates according to the
|
||||
current configuration.
|
||||
|
||||
Usage: $0 [OPTIONS] [FILE]...
|
||||
Usage: $0 [OPTION]... [FILE]...
|
||||
|
||||
-h, --help print this help, then exit
|
||||
-V, --version print version number and configuration settings, then exit
|
||||
-q, --quiet do not print progress messages
|
||||
-q, --quiet, --silent
|
||||
do not print progress messages
|
||||
-d, --debug don't remove temporary files
|
||||
--recheck update $as_me by reconfiguring in the same conditions
|
||||
--file=FILE[:TEMPLATE]
|
||||
--file=FILE[:TEMPLATE]
|
||||
instantiate the configuration file FILE
|
||||
--header=FILE[:TEMPLATE]
|
||||
--header=FILE[:TEMPLATE]
|
||||
instantiate the configuration header FILE
|
||||
|
||||
Configuration files:
|
||||
@@ -7390,7 +7278,7 @@ _ACEOF
|
||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||
ac_cs_version="\\
|
||||
config.status
|
||||
configured by $0, generated by GNU Autoconf 2.62,
|
||||
configured by $0, generated by GNU Autoconf 2.63,
|
||||
with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
|
||||
|
||||
Copyright (C) 2008 Free Software Foundation, Inc.
|
||||
@@ -7587,7 +7475,8 @@ for ac_last_try in false false false false false :; do
|
||||
{ { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
|
||||
$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
|
||||
{ (exit 1); exit 1; }; }
|
||||
|
||||
|
||||
ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
|
||||
if test $ac_delim_n = $ac_delim_num; then
|
||||
break
|
||||
elif $ac_last_try; then
|
||||
@@ -7792,9 +7681,9 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||
mac1 = arg[2]
|
||||
}
|
||||
split(mac1, mac2, "(") #)
|
||||
macro = mac2[1]
|
||||
prefix = substr(line, 1, index(line, defundef) - 1)
|
||||
if (D_is_set[macro]) {
|
||||
# Preserve the white space surrounding the "#".
|
||||
# Preserve the white space surrounding the "#".
|
||||
print prefix "define", macro P[macro] D[macro]
|
||||
next
|
||||
@@ -7802,7 +7691,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||
# Replace #undef with comments. This is necessary, for example,
|
||||
# in the case of _POSIX_SOURCE, which is predefined and required
|
||||
# on some systems where configure will not decide to define it.
|
||||
if (defundef == "undef") {
|
||||
if (defundef == "undef") {
|
||||
print "/*", prefix defundef, macro, "*/"
|
||||
next
|
||||
}
|
||||
@@ -7826,8 +7715,8 @@ do
|
||||
:[FHLC]) ac_mode=$ac_tag; continue;;
|
||||
esac
|
||||
case $ac_mode$ac_tag in
|
||||
:[FHL]*:*);;
|
||||
:L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
|
||||
:[FHL]*:*);;
|
||||
:L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5
|
||||
$as_echo "$as_me: error: invalid tag $ac_tag" >&2;}
|
||||
{ (exit 1); exit 1; }; };;
|
||||
:[FH]-) ac_tag=-:-;;
|
||||
@@ -8145,16 +8034,14 @@ if test "$no_create" != yes; then
|
||||
# would make configure fail if this is the last instruction.
|
||||
$ac_cs_success || { (exit 1); exit 1; }
|
||||
fi
|
||||
if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
|
||||
{ $as_echo "$as_me:$LINENO: WARNING: Unrecognized options: $ac_unrecognized_opts" >&5
|
||||
if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
|
||||
{ $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
|
||||
$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
|
||||
fi
|
||||
|
||||
|
||||
cat <<EOT
|
||||
|
||||
$DIS_MODULES
|
||||
$DIS_MYSQL
|
||||
$DIS_MODULES
|
||||
|
||||
|
||||
|
||||
+11
-56
@@ -1,6 +1,6 @@
|
||||
dnl autoconf.in for Services.
|
||||
dnl
|
||||
dnl Anope (c) 2003-2008 Anope team
|
||||
dnl Anope (c) 2003-2010 Anope team
|
||||
dnl Contact us at team@anope.org
|
||||
|
||||
dnl This program is free but copyrighted software; see the file COPYING for
|
||||
@@ -76,53 +76,6 @@ else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
|
||||
|
||||
DIS_MYSQL=" MySQL: No"
|
||||
AC_ARG_WITH(mysql, [ --without-mysql Do not use MySQL or attempt to find it],,[
|
||||
AC_ARG_WITH(mysqlconfig-path, [ --with-mysqlconfig-path=PATH Complete path to the mysql_config executable],
|
||||
mysql_config_path="$withval", mysql_config_path="")
|
||||
MYSQLCONF=""
|
||||
if test "$mysql_config_path" != ""; then
|
||||
if test -x "$mysql_config_path"; then
|
||||
MYSQLCONF="$mysql_config_path"
|
||||
echo "checking for mysql_config... $MYSQLCONF" >&6
|
||||
fi
|
||||
fi
|
||||
if test "$MYSQLCONF" = ""; then
|
||||
AC_PATH_PROG(MYSQLCONF,mysql_config, "")
|
||||
fi
|
||||
if test "$MYSQLCONF" != ""; then
|
||||
hold_cflags="$CFLAGS"
|
||||
hold_ldflags="$LDFLAGS"
|
||||
if test "$MYSQL_CFLAGS" = ""; then
|
||||
MYSQL_CFLAGS="`$MYSQLCONF --cflags`"
|
||||
fi
|
||||
if test "$MYSQL_LDFLAGS" = ""; then
|
||||
MYSQL_LDFLAGS="`$MYSQLCONF --libs`"
|
||||
fi
|
||||
CFLAGS="$CFLAGS $MYSQL_CFLAGS"
|
||||
LDFLAGS="$LDFLAGS $MYSQL_LDFLAGS"
|
||||
echo $ECHO_N "checking if mysql_config produces valid values... $ECHO_C" >&6
|
||||
AC_TRY_RUN([
|
||||
#include <mysql.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
MYSQL *mysql = mysql_init(0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
], ac_cv_mysql_valid=yes, ac_cv_mysql_valid=no)
|
||||
echo $ac_cv_mysql_valid >&6
|
||||
if test "$ac_cv_mysql_valid" = "yes"; then
|
||||
DIS_MYSQL=" MySQL: Yes"
|
||||
else
|
||||
CFLAGS="$hold_cflags"
|
||||
LDFLAGS="$hold_ldflags"
|
||||
fi
|
||||
fi
|
||||
])
|
||||
|
||||
AC_MSG_CHECKING(whether this is a bit or little endian system)
|
||||
AC_TRY_RUN([
|
||||
int main()
|
||||
@@ -239,7 +192,7 @@ 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
|
||||
])
|
||||
@@ -248,24 +201,28 @@ 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(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], [
|
||||
AC_ARG_WITH(instdir, [ --with-instdir=instdir Specify the default install dir for anope], [
|
||||
INSTDIR=$withval
|
||||
])
|
||||
|
||||
MAKEBIN=`pwd`/run-cc.pl
|
||||
|
||||
AC_ARG_WITH(makebin, [--with-makebin=run-cc.pl Specify the default make binary to use],[MAKEBIN=$withval])
|
||||
AC_ARG_WITH(makebin, [ --with-makebin=run-cc.pl Specify the default make binary to use],[MAKEBIN=$withval])
|
||||
|
||||
MYSQLDIR=/usr/local/
|
||||
AC_ARG_WITH(mysqlpp, [ --with-mysqlpp=/usr/local/ The base directory of the MySQL++ installation],[MYSQLDIR=$withval])
|
||||
|
||||
AC_SUBST(INSTDIR)
|
||||
AC_SUBST(MAKEBIN)
|
||||
AC_SUBST(MYSQLDIR)
|
||||
|
||||
AC_ARG_WITH(optimization, [ --with-optimization=1|2|3|4|5 Specify the optimization level], [
|
||||
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], [
|
||||
AC_ARG_WITH(debugsym, [ --with-debugsym Include debugging symbols], [
|
||||
CFLAGS="$CFLAGS -g"
|
||||
])
|
||||
|
||||
@@ -280,8 +237,6 @@ AC_OUTPUT
|
||||
cat <<EOT
|
||||
|
||||
$DIS_MODULES
|
||||
$DIS_MYSQL
|
||||
|
||||
|
||||
|
||||
All done! Now run "make" (or possibly "gmake") to compile Anope.
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
# 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)
|
||||
set(DATA example.chk example.conf tables.sql)
|
||||
install(FILES ${DATA}
|
||||
DESTINATION data
|
||||
)
|
||||
|
||||
+8
-5
@@ -1,7 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Crontab script for Anope
|
||||
#
|
||||
#
|
||||
# To know how to install the crontab, read the INSTALL file.
|
||||
|
||||
###############################################################
|
||||
@@ -11,6 +11,9 @@
|
||||
# Anope binary directory
|
||||
ANOPATH=/home/ircd/services/bin
|
||||
|
||||
# Anope data directory
|
||||
ANODATA=/home/ircd/services/data
|
||||
|
||||
# Name of the pid file
|
||||
ANOPIDF=services.pid
|
||||
|
||||
@@ -31,14 +34,14 @@ ANOPID=
|
||||
|
||||
cd $ANOPATH
|
||||
|
||||
if [ -f $ANOPIDF ]
|
||||
if [ -f "$ANODATA/$ANOPIDF" ]
|
||||
then
|
||||
ANOPID=`cat $ANOPIDF`
|
||||
ANOPID=`cat "$ANODATA/$ANOPIDF"`
|
||||
if [ `ps auwx | grep $ANOPROG | grep $ANOPID | grep -v -c grep` = 1 ]
|
||||
then
|
||||
exit
|
||||
exit
|
||||
fi
|
||||
rm -f $ANOPIDF
|
||||
rm -f "$ANODATA/$ANOPIDF"
|
||||
fi
|
||||
|
||||
./$ANOPROG $ANOARGS
|
||||
|
||||
+103
-108
@@ -90,6 +90,11 @@ uplink
|
||||
*/
|
||||
host = "localhost"
|
||||
|
||||
/*
|
||||
* Enable if Services should connect using IPv6
|
||||
*/
|
||||
ipv6 = no
|
||||
|
||||
/*
|
||||
* The port to connect to.
|
||||
* The IRCd *MUST* be configured to listen on this port, and to accept
|
||||
@@ -132,17 +137,13 @@ serverinfo
|
||||
|
||||
/*
|
||||
* The local address that Services will bind to before connecting to the remote
|
||||
* server. This may be useful for multihomed hosts. If neither of these are given,
|
||||
* Services will let the Operating System choose the local address. If only a
|
||||
* hostname is specified, Services will bind to that address but let the Operating
|
||||
* System choose the local port. These directives are optional, and may be overridden
|
||||
* with the -local command-line option when starting Services.
|
||||
* server. This may be useful for multihomed hosts. If ommited, Services will let
|
||||
* the Operating System choose the local address. This directive is optional.
|
||||
*
|
||||
* If you don't know what this means or don't need to use it, just leave these
|
||||
* If you don't know what this means or don't need to use it, just leave this
|
||||
* directives commented out.
|
||||
*/
|
||||
#localhost = "nowhere."
|
||||
#localport = 0
|
||||
|
||||
/*
|
||||
* This directive instructs Anope which IRCd Protocol to speak when connecting.
|
||||
@@ -151,11 +152,12 @@ serverinfo
|
||||
* Supported:
|
||||
* - inspircd11
|
||||
* - inspircd12
|
||||
* - inspircd20
|
||||
* - ratbox
|
||||
* - bahamut
|
||||
* - unreal32
|
||||
*/
|
||||
type = "inspircd11"
|
||||
type = "inspircd12"
|
||||
|
||||
/*
|
||||
* What Server ID to use for this connection?
|
||||
@@ -222,12 +224,26 @@ networkinfo
|
||||
networkname = "LocalNet"
|
||||
|
||||
/*
|
||||
* Set this to the maximum allowed nick length on your network. Anope does not
|
||||
* support values larger than 31. Be sure to set this correctly, as setting
|
||||
* this wrong can result in Services being disconnected from the network.
|
||||
* This directive is optional, but recommended.
|
||||
* Set this to the maximum allowed nick length on your network.
|
||||
* Be sure to set this correctly, as setting this wrong can result in
|
||||
* Services being disconnected from the network. This directive is optional,
|
||||
* but recommended.
|
||||
*/
|
||||
nicklen = 31
|
||||
|
||||
/* Set this to the maximum allowed ident length on your network.
|
||||
* Be sure to set this correctly, as setting this wrong can result in
|
||||
* Services being disconnected from the network. This directive is optional,
|
||||
* but recommended.
|
||||
*/
|
||||
userlen = 10
|
||||
|
||||
/* Set this to the maximum allowed hostname length on your network.
|
||||
* Be sure to set this correctly, as setting this wrong can result in
|
||||
* Services being disconnected from the network. This directive is optional,
|
||||
* but recommended.
|
||||
*/
|
||||
hostlen = 64
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -238,7 +254,7 @@ networkinfo
|
||||
options
|
||||
{
|
||||
/*
|
||||
* The encryption module to use when dealing with passwords. This determines how
|
||||
* The encryption modules are used when dealing with passwords. This determines how
|
||||
* the passwords are stored in the databases, and does not add any security as
|
||||
* far as transmitting passwords over the network goes.
|
||||
*
|
||||
@@ -255,8 +271,30 @@ options
|
||||
* - enc_old (old, broken MD5 encryption)
|
||||
* - enc_md5 (working MD5 encryption)
|
||||
* - enc_sha1 (SHA1 encryption)
|
||||
* - enc_sha256 (SHA256 encryption with random salts)
|
||||
*
|
||||
* The first module in this list is the active encryption module. All new passwords are
|
||||
* encrypted by this module. Old passwords stored in another encryption method are
|
||||
* automatically re-encrypted by the active encryption module on next identify.
|
||||
* Changing the order of the modules requires the services to restart.
|
||||
*/
|
||||
encryption = "enc_none"
|
||||
encryption = "enc_none enc_sha1 enc_sha256 enc_md5 enc_old"
|
||||
|
||||
/*
|
||||
* The maximum length of passwords
|
||||
*/
|
||||
passlen = 32
|
||||
|
||||
/*
|
||||
* The database modules are used for saving and loading databases for Anope.
|
||||
*
|
||||
* Supported:
|
||||
* - db_plain
|
||||
* - db_mysql_write
|
||||
* - db_mysql_read
|
||||
* - db_mysql_execute
|
||||
*/
|
||||
database = "db_plain"
|
||||
|
||||
/*
|
||||
* These keys are used to initiate the random number generator. These numbers
|
||||
@@ -489,6 +527,33 @@ options
|
||||
* WARNING: Do NOT put your user servers in this directive.
|
||||
*/
|
||||
ulineservers = "stats.your.network"
|
||||
|
||||
/*
|
||||
* If set, Services will start logging to the log channel immediatly on startup.
|
||||
* This directive is optional, and has no effect if logchannel is not defined.
|
||||
*/
|
||||
#enablelogchannel = yes
|
||||
|
||||
/*
|
||||
* Default modes for mode lock, these are set on newly registered channels.
|
||||
*/
|
||||
mlock = "+nrt"
|
||||
|
||||
/*
|
||||
* Modes to set on service bots when they join channels, comment this out for no modes
|
||||
*/
|
||||
botmodes = "ao"
|
||||
|
||||
/*
|
||||
* How many times services should attempt to reconnect to the uplink before giving up
|
||||
* Comment this out to never give up.
|
||||
*/
|
||||
maxretries = 10
|
||||
|
||||
/*
|
||||
* How long to wait between connection retries, in seconds.
|
||||
*/
|
||||
retrywait = 60
|
||||
}
|
||||
|
||||
|
||||
@@ -509,23 +574,25 @@ options
|
||||
* chanserv/auspex - Can see any information with /chanserv info
|
||||
* chanserv/no-register-limit - May register an unlimited number of channels and nicknames
|
||||
* chanserv/set - Can modify the settings of any channel (incl. changing of the owner and password!)
|
||||
* hostserv/set - Can add/modify/delete any vhost
|
||||
* memoserv/info - Can see any information with /memoserv info
|
||||
* memoserv/set-limit - Can set the limit of max stored memos on any user and channel
|
||||
* nickserv/confirm - Can confirm other users nicknames
|
||||
* nickserv/drop - Can drop other users nicks
|
||||
*
|
||||
* Available commands:
|
||||
* botserv/bot/del botserv/bot/add botserv/bot/change botserv/assign/private
|
||||
* botserv/botlist botserv/set/private botserv/set/nobot
|
||||
*
|
||||
* chanserv/access/list chanserv/drop chanserv/forbid chanserv/getkey
|
||||
* chanserv/getpass chanserv/list chanserv/logout chanserv/sendpass
|
||||
* chanserv/status chanserv/topic chanserv/suspend chanserv/set/noexpire
|
||||
* chanserv/aop/list
|
||||
* chanserv/list chanserv/suspend chanserv/topic chanserv/set/noexpire
|
||||
* chanserv/status
|
||||
*
|
||||
* memoserv/sendall memoserv/staff
|
||||
*
|
||||
* nickserv/getpass nickserv/sendpass nickserv/getemail nickserv/suspend
|
||||
* nickserv/confirm
|
||||
* nickserv/resetpass
|
||||
*
|
||||
* hostserv/set - Can add/modify/delete any vhost
|
||||
*
|
||||
* operserv/global operserv/news operserv/stats operserv/kick
|
||||
* operserv/mode operserv/session operserv/modlist operserv/ignore
|
||||
@@ -635,8 +702,8 @@ mail
|
||||
sendfrom = "services@localhost.net"
|
||||
|
||||
/*
|
||||
* If set, SENDPASS will be restricted to IRC operators. This directive is
|
||||
* optional.
|
||||
* If set, SENDPASS and RESETPASS will be restricted to IRC operators.
|
||||
* This directive is optional.
|
||||
*
|
||||
* WARNING: If you choose to not enable this option, you should limit the
|
||||
* number of processes that the services user can have at a time (you can
|
||||
@@ -683,24 +750,11 @@ nickserv
|
||||
*/
|
||||
description = "Nickname Registration Service"
|
||||
|
||||
/*
|
||||
* The filename of the NickServ database. The path is relative to the services
|
||||
* executable. If not given, defaults to "nick.db".
|
||||
*/
|
||||
database = "nick.db"
|
||||
|
||||
/*
|
||||
* The filename of the NickServ Pre-Nick database. The path is relative to the
|
||||
* services executable. This directive is only required if the e-mail registration
|
||||
* option is enabled.
|
||||
*/
|
||||
#prenickdatabase = "prenick.db"
|
||||
|
||||
/*
|
||||
* The core modules to load for NickServ. This is a space separated list that corresponds
|
||||
* to the base names of the modules for NickServ. This directive is optional, but highly recommended.
|
||||
*/
|
||||
modules = "ns_help ns_register ns_group ns_identify ns_access ns_set ns_saset ns_drop ns_recover ns_release ns_sendpass ns_ghost ns_alist ns_info ns_list ns_logout ns_status ns_update ns_getpass ns_getemail ns_forbid ns_suspend"
|
||||
modules = "ns_help ns_register ns_group ns_identify ns_access ns_set ns_saset ns_drop ns_recover ns_release ns_sendpass ns_ghost ns_alist ns_info ns_list ns_logout ns_status ns_update ns_getpass ns_getemail ns_forbid ns_suspend ns_resetpass"
|
||||
|
||||
/*
|
||||
* Force users to give an e-mail address when they register a nick. This directive
|
||||
@@ -772,7 +826,7 @@ nickserv
|
||||
#preregexpire = 1d
|
||||
|
||||
/*
|
||||
* The maximum number of nicks allowed in a group. This directve is optional, but
|
||||
* The maximum number of nicks allowed in a group. This directive is optional, but
|
||||
* recommended. If not set or set to 0, no limits will be applied.
|
||||
*/
|
||||
maxaliases = 16
|
||||
@@ -871,17 +925,11 @@ chanserv
|
||||
*/
|
||||
description = "Channel Registration Service"
|
||||
|
||||
/*
|
||||
* The filename of the ChanServ database. The path is relative to the services
|
||||
* executable. If not given, defaults to "chan.db".
|
||||
*/
|
||||
database = "chan.db"
|
||||
|
||||
/*
|
||||
* The core modules to load for ChanServ. This is a space separated list that corresponds
|
||||
* to the base names of the modules for ChanServ. This directive is optional, but highly recommended.
|
||||
*/
|
||||
modules = "cs_help cs_register cs_identify cs_set cs_xop cs_access cs_akick cs_drop cs_sendpass cs_ban cs_clear cs_modes cs_getkey cs_invite cs_kick cs_list cs_logout cs_topic cs_info cs_getpass cs_forbid cs_suspend cs_status"
|
||||
modules = "cs_help cs_register cs_set cs_xop cs_access cs_akick cs_drop cs_ban cs_clear cs_modes cs_getkey cs_invite cs_kick cs_list cs_topic cs_info forbid cs_suspend cs_status cs_unban"
|
||||
|
||||
/*
|
||||
* The default options for newly registered channels. Note that changing these options
|
||||
@@ -899,12 +947,13 @@ chanserv
|
||||
* order to be considered for being on the access list of the channel
|
||||
* - secureops: Only allow operator status to be given if the user is on the access list
|
||||
* - securefounder: Only allow the real founder of the channel to drop the channel, change it's
|
||||
* password, or change the founder or succesor
|
||||
* password, or change the founder or successor
|
||||
* - signkick: Use of ChanServ's KICK command will cause the user's nick to be signed to the kick.
|
||||
* - signkicklevel: Same as above, but the kick will not be signed if the user is at the same access
|
||||
* level or superior to the target
|
||||
* - topiclock: Disallow the topic to be changed except with ChanServ's TOPIC command
|
||||
* - xop: Enable use of the xOP system
|
||||
* - persist: Keep the channel open at all times
|
||||
*
|
||||
* This directive is optional, if left blank, the options will default to keetopic, secure, securefounder,
|
||||
* and signkick. If you really want no defaults, use "none" by itself as the option.
|
||||
@@ -953,7 +1002,7 @@ chanserv
|
||||
|
||||
/*
|
||||
* The length of time ChanServ stays in a channel after kicking a user from a channel they are not
|
||||
* premitted to be in. This only occurs when the user is the only one in the channel.
|
||||
* permitted to be in. This only occurs when the user is the only one in the channel.
|
||||
*/
|
||||
inhabit = 15s
|
||||
|
||||
@@ -1017,7 +1066,7 @@ memoserv
|
||||
|
||||
/*
|
||||
* Should we notify all appropriate users of a new memo? This applies in cases where a memo is
|
||||
* sent to a nick which is in the group of another nick. Not that, unlike before, it is currently
|
||||
* sent to a nick which is in the group of another nick. Note that, unlike before, it is currently
|
||||
* more efficient to enable this. This directive is optional.
|
||||
*/
|
||||
notifyall = yes
|
||||
@@ -1053,12 +1102,6 @@ botserv
|
||||
*/
|
||||
description = "Bot Service"
|
||||
|
||||
/*
|
||||
* The filename of the BotServ database. The path is relative to the services
|
||||
* executable. If not given, defaults to "bot.db".
|
||||
*/
|
||||
database = "bot.db"
|
||||
|
||||
/*
|
||||
* The core modules to load for BotServ. This is a space separated list that corresponds
|
||||
* to the base names of the modules for BotServ. This directive is optional, but highly recommended.
|
||||
@@ -1152,12 +1195,6 @@ hostserv
|
||||
*/
|
||||
description = "vHost Service"
|
||||
|
||||
/*
|
||||
* The filename of the HostServ database. The path is relative to the services
|
||||
* executable. If not given, defaults to "hosts.db".
|
||||
*/
|
||||
database = "hosts.db"
|
||||
|
||||
/*
|
||||
* The core modules to load for HostServ. This is a space separated list that corresponds
|
||||
* to the base names of the modules for HostServ. This directive is optional, but highly recommended.
|
||||
@@ -1195,24 +1232,6 @@ operserv
|
||||
*/
|
||||
globaldescription = "Global Noticer"
|
||||
|
||||
/*
|
||||
* The filename of the OperServ database. The path is relative to the services
|
||||
* executable. If not given, defaults to "oper.db".
|
||||
*/
|
||||
database = "oper.db"
|
||||
|
||||
/*
|
||||
* The filename of OperServ's News database. The path is relative to the services
|
||||
* executable. If not given, defaults to "news.db".
|
||||
*/
|
||||
newsdatabase = "news.db"
|
||||
|
||||
/*
|
||||
* The filename of OperServ's Session Exception database. The path is relative to the services
|
||||
* executable. If not given, defaults to "exception.db".
|
||||
*/
|
||||
exceptiondatabase = "exception.db"
|
||||
|
||||
/*
|
||||
* The core modules to load for OperServ. This is a space separated list that corresponds
|
||||
* to the base names of the modules for OperServ. This directive is optional, but highly recommended.
|
||||
@@ -1493,6 +1512,14 @@ module { name = "hs_request" }
|
||||
* The following blocks are used for options pertaining to modules and are not part of the core.
|
||||
* Unless otherwise stated, most of the options are optional.
|
||||
*/
|
||||
db_plain
|
||||
{
|
||||
/*
|
||||
* The database db_plain should use
|
||||
*/
|
||||
database = "anope.db"
|
||||
}
|
||||
|
||||
hs_request
|
||||
{
|
||||
/*
|
||||
@@ -1510,12 +1537,6 @@ hs_request
|
||||
* If set, Services will send a memo to all Host Setters when a new vHost is requested.
|
||||
*/
|
||||
#memosetters = yes
|
||||
|
||||
/*
|
||||
* The filename of the vHost request database. The path is relative to the services
|
||||
* executable. If not given, defaults to "hs_request.db".
|
||||
*/
|
||||
#database = "hs_request.db"
|
||||
}
|
||||
|
||||
ns_maxemail
|
||||
@@ -1528,29 +1549,3 @@ ns_maxemail
|
||||
#maxemails = 1
|
||||
}
|
||||
|
||||
ns_noop_convert
|
||||
{
|
||||
/*
|
||||
* The filename of the NickServ AUTOOP convert database. The path is relative to the services
|
||||
* executable. If not given, defaults to "autoop.db".
|
||||
*/
|
||||
#database = "autoop.db"
|
||||
}
|
||||
|
||||
os_ignore
|
||||
{
|
||||
/*
|
||||
* The filename of the Services' ignore database. The path is relative to the services
|
||||
* executable. If not given, defaults to "os_ignore.db".
|
||||
*/
|
||||
#database = "os_ignore.db"
|
||||
}
|
||||
|
||||
os_info
|
||||
{
|
||||
/*
|
||||
* The filename of the oper information database. The path is relative to the services
|
||||
* executable. If not given, defaults to "os_info.db".
|
||||
*/
|
||||
#database = "os_info.db"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,174 @@
|
||||
<?php
|
||||
/*
|
||||
* (C) 2010 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/** Object representing a MySQL query
|
||||
*/
|
||||
class MySQLQuery
|
||||
{
|
||||
/* Our query */
|
||||
private $Query;
|
||||
/* The result */
|
||||
private $Result;
|
||||
/* Socket used to connect to MySQL */
|
||||
private $MysqlSock;
|
||||
|
||||
/** Constructor
|
||||
* @param MysqlSock The MySQL socket
|
||||
*/
|
||||
function __construct($MysqlSock)
|
||||
{
|
||||
$this->MysqlSock = $MysqlSock;
|
||||
}
|
||||
|
||||
/** Destructor
|
||||
*/
|
||||
function __destruct()
|
||||
{
|
||||
}
|
||||
|
||||
/** Execute a query
|
||||
* @return true or false
|
||||
*/
|
||||
private function Execute()
|
||||
{
|
||||
$Res = mysql_query($this->Query, $this->MysqlSock);
|
||||
$this->Result = array();
|
||||
|
||||
if (!empty($Res))
|
||||
{
|
||||
while (($Result = @mysql_fetch_assoc($Res)))
|
||||
{
|
||||
$this->Result[] = $Result;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/** Get the result for the query
|
||||
* @return The result
|
||||
*/
|
||||
public function Result()
|
||||
{
|
||||
return $this->Result;
|
||||
}
|
||||
|
||||
/** Execute a query
|
||||
* @param A formatted string
|
||||
* @param ... Args
|
||||
* @return true or false
|
||||
*/
|
||||
public function Query($String, $P1 = NULL, $P2 = NULL, $P3 = NULL, $P4 = NULL, $P5 = NULL, $P6 = NULL, $P7 = NULL,
|
||||
$P8 = NULL, $P9 = NULL, $P10 = NULL, $P11 = NULL, $P12 = NULL, $P13 = NULL, $P14 = NULL)
|
||||
{
|
||||
$this->Query = sprintf($String, $P1, $P2, $P3, $P4, $P5, $P6, $P7, $P8, $P9, $P10, $P11, $P12, $P13, $P14);
|
||||
return $this->Execute();
|
||||
|
||||
}
|
||||
|
||||
/** Escape a string to by MySQL safe
|
||||
* @return A new, MySQL safe string
|
||||
*/
|
||||
public function Escape($String)
|
||||
{
|
||||
return mysql_real_escape_string($String, $this->MysqlSock);
|
||||
}
|
||||
}
|
||||
|
||||
/** Main Anope class
|
||||
*/
|
||||
class Anope
|
||||
{
|
||||
/* Socket used to connect to MySQL */
|
||||
private $MysqlSock;
|
||||
/* True if we were able to connect successfully */
|
||||
private $Connected;
|
||||
|
||||
/** Constructor
|
||||
* @param MysqlHost The host of the MySQLd server, port can be included on this too
|
||||
* @param MysqlUser The username to authenticate to MySQL with
|
||||
* @param MysqlPassword The password to authenticate with
|
||||
* @param MysqlDatabase The name of the Anope database
|
||||
*/
|
||||
function __construct($MysqlHost, $MysqlUser, $MysqlPassword, $MysqlDatabase)
|
||||
{
|
||||
$this->Connected = false;
|
||||
$this->MysqlSock = @mysql_connect($MysqlHost, $MysqlUser, $MysqlPassword);
|
||||
if ($this->MysqlSock)
|
||||
$this->Connected = @mysql_select_db($MysqlDatabase, $this->MysqlSock);
|
||||
}
|
||||
|
||||
/** Destructor
|
||||
* Closes the connection to the MySQL server
|
||||
*/
|
||||
function __destruct()
|
||||
{
|
||||
if ($this->MysqlSock)
|
||||
@mysql_close($this->MysqlSock);
|
||||
}
|
||||
|
||||
/** Check if we are connected successfully
|
||||
* @return true or false
|
||||
*/
|
||||
public function Connected()
|
||||
{
|
||||
return $this->Connected;
|
||||
}
|
||||
|
||||
/** Retrieve a new query object
|
||||
* @return A new Query object
|
||||
*/
|
||||
public function Query()
|
||||
{
|
||||
return new MySQLQuery($this->MysqlSock);
|
||||
}
|
||||
|
||||
/** Anope Functions **/
|
||||
|
||||
/** Execute a command in Anope
|
||||
* For more information read docs/MYSQL
|
||||
* @param Nick The nickname to execute the command from
|
||||
* @param Service The service to execute the command on
|
||||
* @param Command The command to execute
|
||||
*/
|
||||
public function Command($Nick, $Service, $Command)
|
||||
{
|
||||
$Query = $this->Query();
|
||||
return $Query->Query("INSERT DELAYED INTO `anope_commands` (nick, service, command) VALUES('%s', '%s', '%s')", $Query->Escape($Nick), $Query->Escape($Service), $Query->Escape($Command));
|
||||
}
|
||||
|
||||
/** Register a nick
|
||||
* @param Nick The nick to be registered
|
||||
* @param Password The password
|
||||
* @param Email The email address to use, defaults to NULL
|
||||
* @param Returns a message confirming or denying the registration process
|
||||
*/
|
||||
public function Register($Nick, $Password, $Email = NULL)
|
||||
{
|
||||
$Query = $this->Query();
|
||||
$Query->Query("SELECT nick FROM `anope_ns_alias` WHERE `nick` = '%s'", $Query->Escape($Nick));
|
||||
$Result = $Query->Result();
|
||||
if (isset($Result[0]['nick']))
|
||||
{
|
||||
return "Nickname already registered";
|
||||
}
|
||||
|
||||
if ($this->Command($Nick, "NickServ", "REGISTER ".$Password." ".$Email))
|
||||
{
|
||||
return "Nick registration successful. If your network has email registration enabled check your inbox for the next step of the registration process.";
|
||||
}
|
||||
|
||||
return "Error registering nick";
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
/*
|
||||
* (C) 2010 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/* This is an example functional webpage showing how to use Anopes MySQL
|
||||
* Execute feature to register a nickname online
|
||||
*/
|
||||
|
||||
/* Include Anope's PHP API */
|
||||
include('Anope.php');
|
||||
|
||||
function IsValidEmail($Email)
|
||||
{
|
||||
return eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $Email);
|
||||
}
|
||||
|
||||
if (!empty($_POST['nick']) && !empty($_POST['password1']) && !empty($_POST['password2']) && !empty($_POST['email']))
|
||||
{
|
||||
if ($_POST['password1'] != $_POST['password2'])
|
||||
{
|
||||
echo 'Passwords do not match';
|
||||
}
|
||||
else if (!IsValidEmail($_POST['email']))
|
||||
{
|
||||
echo 'Invalid email address';
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Create a new connection, arguments are hostname, username, password, and database name */
|
||||
$Anope = new Anope("localhost", "anope", "anoperules", "anope");
|
||||
/* Check if we connected */
|
||||
if (!$Anope->Connected())
|
||||
{
|
||||
echo "Error connecting to MySQL database";
|
||||
}
|
||||
else
|
||||
{
|
||||
echo $Anope->Register($_POST['nick'], $_POST['password1'], $_POST['email']);
|
||||
}
|
||||
die;
|
||||
}
|
||||
}
|
||||
?>
|
||||
</br>
|
||||
<form method="post" action="Register.php">
|
||||
Nick: <input type="text" name="nick"></br>
|
||||
Password: <input type="password" name="password1"></br>
|
||||
Confirm Password: <input type="password" name="password2"></br>
|
||||
Email: <input type="text" name="email"></br>
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
|
||||
+386
@@ -0,0 +1,386 @@
|
||||
|
||||
-- If you need to create your db, uncomment the following lines.
|
||||
--
|
||||
-- CREATE DATABASE anope;
|
||||
-- USE anope;
|
||||
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_extra'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_extra;
|
||||
CREATE TABLE anope_extra (
|
||||
data text NOT NULL default ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_commands'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_commands;
|
||||
CREATE TABLE anope_commands (
|
||||
nick varchar(255) NOT NULL default '',
|
||||
service varchar(255) NOT NULL default '',
|
||||
command text NOT NULL default ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_ns_core'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_ns_core;
|
||||
CREATE TABLE anope_ns_core (
|
||||
display varchar(255) NOT NULL default '',
|
||||
pass text NOT NULL,
|
||||
email text NOT NULL default '',
|
||||
greet text NOT NULL default '',
|
||||
icq int(10) unsigned NOT NULL default '0',
|
||||
url text NOT NULL default '',
|
||||
flags text NOT NULL default '',
|
||||
language smallint(5) unsigned NOT NULL default '0',
|
||||
channelcount smallint(5) unsigned NOT NULL default '0',
|
||||
memomax smallint(5) unsigned NOT NULL default '0',
|
||||
PRIMARY KEY (display)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_ns_core_metadata'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_ns_core_metadata;
|
||||
CREATE TABLE anope_ns_core_metadata (
|
||||
nick varchar(255) NOT NULL default '',
|
||||
name varchar(255) NOT NULL default '',
|
||||
value text NOT NULL default '',
|
||||
PRIMARY KEY (name)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- ---------------------------------------------------------
|
||||
--
|
||||
-- Table structure for table 'anope_ns_alias'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_ns_alias;
|
||||
CREATE TABLE anope_ns_alias (
|
||||
nick varchar(255) NOT NULL default '',
|
||||
last_quit text NOT NULL,
|
||||
last_realname text NOT NULL,
|
||||
last_usermask text NOT NULL,
|
||||
time_registered int(10) unsigned NOT NULL default '0',
|
||||
last_seen int(10) unsigned NOT NULL default '0',
|
||||
flags text NOT NULL default '',
|
||||
display varchar(255) NOT NULL default '',
|
||||
PRIMARY KEY (nick)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_ns_alias_metadata'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_ns_alias_metadata;
|
||||
CREATE TABLE anope_ns_alias_metadata (
|
||||
nick varchar(255) NOT NULL default '',
|
||||
name varchar(255) NOT NULL default '',
|
||||
value text NOT NULL default '',
|
||||
PRIMARY KEY (name)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_ns_access'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_ns_access;
|
||||
CREATE TABLE anope_ns_access (
|
||||
display varchar(255) NOT NULL default '',
|
||||
access varchar(160) NOT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- ---------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_ns_request'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_ns_request;
|
||||
CREATE TABLE anope_ns_request (
|
||||
nick varchar(255) NOT NULL default '',
|
||||
passcode text NOT NULL,
|
||||
password text NOT NULL,
|
||||
email text NOT NULL,
|
||||
requested int(10) unsigned NOT NULL default '0',
|
||||
PRIMARY KEY (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 (
|
||||
level int(11) NOT NULL default '0',
|
||||
display varchar(255) NOT NULL default '',
|
||||
channel varchar(255) NOT NULL default '',
|
||||
last_seen int(10) unsigned NOT NULL default '0',
|
||||
creator varchar(255) NOT NULL default '',
|
||||
UNIQUE KEY (channel,display)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_cs_akick'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_cs_akick;
|
||||
CREATE TABLE anope_cs_akick (
|
||||
channel varchar(255) NOT NULL default '',
|
||||
flags varchar(255) NOT NULL default '',
|
||||
mask varchar(255) NOT NULL default '',
|
||||
reason text NOT NULL default '',
|
||||
creator varchar(255) NOT NULL default '',
|
||||
created int(10) unsigned NOT NULL default '0',
|
||||
last_used int(10) unsigned NOT NULL default '0',
|
||||
UNIQUE KEY channel (channel, mask)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_bs_badwords'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_bs_badwords;
|
||||
CREATE TABLE anope_bs_badwords (
|
||||
channel varchar(255) NOT NULL default '',
|
||||
word varchar(255) NOT NULL,
|
||||
type varchar(50) NOT NULL,
|
||||
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 (
|
||||
name varchar(255) NOT NULL default '',
|
||||
founder text NOT NULL,
|
||||
successor text 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 text NOT NULL default '',
|
||||
forbidby text NOT NULL,
|
||||
forbidreason text NOT NULL,
|
||||
bantype smallint(6) NOT NULL default '0',
|
||||
mlock_on text NOT NULL default '',
|
||||
mlock_off text NOT NULL default '',
|
||||
mlock_params text NOT NULL default '',
|
||||
entry_message text NOT NULL,
|
||||
memomax smallint(5) unsigned NOT NULL default '0',
|
||||
botnick varchar(255) NOT NULL default '',
|
||||
botflags text NOT NULL default '',
|
||||
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',
|
||||
PRIMARY KEY (name)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_cs_info_metadata'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_cs_info_metadata;
|
||||
CREATE TABLE anope_cs_info_metadata (
|
||||
channel varchar(255) NOT NULL default '',
|
||||
name varchar(255) NOT NULL default '',
|
||||
value text NOT NULL default ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_cs_levels'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_cs_levels;
|
||||
CREATE TABLE anope_cs_levels (
|
||||
channel varchar(255) NOT NULL default '',
|
||||
position int(11) NOT NULL default '0',
|
||||
level int(11) NOT NULL default '0',
|
||||
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 (
|
||||
channel varchar(255) NOT NULL default '',
|
||||
ttb_id int(11) NOT NULL default '0',
|
||||
value int(11) NOT NULL default '0',
|
||||
UNIQUE KEY channel (channel,ttb_id)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_bs_core'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_bs_core;
|
||||
CREATE TABLE anope_bs_core (
|
||||
nick varchar(255) NOT NULL default '',
|
||||
user varchar(255) NOT NULL default '',
|
||||
host text NOT NULL default '',
|
||||
rname text NOT NULL default '',
|
||||
flags text NOT NULL default '',
|
||||
created int(10) unsigned NOT NULL default '0',
|
||||
chancount int(11) NOT NULL default '0',
|
||||
PRIMARY KEY (nick)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_bs_info_metadata'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_bs_info_metadata;
|
||||
CREATE TABLE anope_bs_info_metadata (
|
||||
botname varchar(255) NOT NULL default '',
|
||||
name varchar(255) NOT NULL default '',
|
||||
value text NOT NULL default ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_ms_info'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_ms_info;
|
||||
CREATE TABLE anope_ms_info (
|
||||
receiver varchar(255) NOT NULL,
|
||||
number int(11) NOT NULL default '0',
|
||||
flags int(11) NOT NULL default '0',
|
||||
time int(10) unsigned NOT NULL default '0',
|
||||
sender text NOT NULL,
|
||||
text blob NOT NULL,
|
||||
serv enum('NICK','CHAN') NOT NULL default '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 (
|
||||
user varchar(255) NOT NULL,
|
||||
host varchar(255) NOT NULL,
|
||||
xby text NOT NULL,
|
||||
reason text NOT NULL,
|
||||
seton int(10) unsigned NOT NULL default '0',
|
||||
expire int(10) unsigned NOT NULL default '0'
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_os_core'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_os_core;
|
||||
CREATE TABLE anope_os_core (
|
||||
maxusercnt int(11) NOT NULL default '0',
|
||||
maxusertime int(10) unsigned 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'
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_os_exceptions'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_os_exceptions;
|
||||
CREATE TABLE anope_os_exceptions (
|
||||
mask varchar(255) NOT NULL,
|
||||
slimit int(11) NOT NULL default '0',
|
||||
who text NOT NULL,
|
||||
reason text NOT NULL,
|
||||
time int(10) unsigned NOT NULL default '0',
|
||||
expires int(10) unsigned NOT NULL default '0'
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_os_sxlines'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_os_sxlines;
|
||||
CREATE TABLE anope_os_sxlines (
|
||||
type varchar(20) NOT NULL,
|
||||
mask varchar(255) NOT NULL,
|
||||
xby text NOT NULL,
|
||||
reason text NOT NULL,
|
||||
seton int(10) unsigned NOT NULL default '0',
|
||||
expire int(10) unsigned NOT NULL default '0'
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table 'anope_metadata'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS anope_metadata;
|
||||
CREATE TABLE anope_metadata (
|
||||
name varchar(255) NOT NULL default '',
|
||||
value text NOT NULL default '',
|
||||
PRIMARY KEY (name)
|
||||
) 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;
|
||||
|
||||
+42
-1
@@ -1,7 +1,46 @@
|
||||
Anope Version 1.9.2
|
||||
--------------------
|
||||
A K alias to chanserv kick command
|
||||
A KB alias to chanserv ban command
|
||||
A The ability to register empty nonregistered channels
|
||||
A Flatfile plaintext databases and removed old binary ones
|
||||
A Added in live updating SQL and the ability to execute commands through SQL (see docs/MYSQL)
|
||||
A Added support for many more modes into Anope and the ability to have generic support for modes unknown to Anope
|
||||
A Added a mode stacker to combine many mode changes into fewer
|
||||
A Added in the CS SET PERSIST command which can be used to keep service bots in channels even when the channel is empty
|
||||
A Added AUTOOWNER OWNER and OWNERME into CS LEVELS
|
||||
A Added ns_resetpass module to the core
|
||||
A CS ACCESS VIEW which shows who added the access and last time used
|
||||
A Last used time to CS AKICK VIEW
|
||||
A Added a sha_256 encryption module
|
||||
A Added the ability to load multiple encryption modules, and the ability to seamlessly convert your database between diferent encryptions
|
||||
A Added configuration options to allow Anope to reconnect if it disconnects from the uplink instead of dieing
|
||||
A Added support for linking with IPv6
|
||||
F Unban command to accept an optional nick arg
|
||||
F Some typos in services.conf
|
||||
F Crash when users change their host that are identified to a group, but not a nick
|
||||
F Host length checking in HS SET(ALL) and HS REQUEST
|
||||
F Only show if a user is online in NS INFO if they are really identiifed for the group of the nick they are on
|
||||
F Crash when using BSSmartJoin
|
||||
F Converting access entries to access from xop when a users access is below voice
|
||||
F A bad pointer passed to the OnDelEvent which could cause some 3rd party modules to crash
|
||||
F CS FORBID allows to you forbid unregistered channels
|
||||
F The -nothird command line option to work
|
||||
F ms_rsend to really work
|
||||
F SQUITing juped servers on InspIRCd1.2+
|
||||
|
||||
Anope Version 1.9.1
|
||||
--------------------
|
||||
F Don't enforce akick/forbidden/etc.-restrictions on clients on ulined servers.
|
||||
|
||||
F Remove modules_unload_all fini + hack that goes with it.
|
||||
F Signal handling cleanup.
|
||||
A Seamless fantasy support on all ChanServ commands, instead of requiring bs_fantasy_*.
|
||||
F Allow fantasy to be disabled on some commands (e.g. FORBID).
|
||||
F Some commands (e.g. !help) need to strip the pre-provided channelname from them.
|
||||
D HelpServ removed
|
||||
F Command parser cleanup: mod_current_buffer removed and replaced with proper parser. Commands now indicate how they want the buffer split.
|
||||
F Make NS ENFORCE/RELEASE stuff more sane, redo timers.
|
||||
A Opertypes (similar to InspIRCd's opertypes)
|
||||
|
||||
Provided by Ankit <ankit@nevitus.com> - 2009
|
||||
F Segfault on shutdown
|
||||
@@ -28,6 +67,8 @@ F Fix two segfaults, noted by DukePyrolator. Thanks!
|
||||
F Fix part one of #1010, reported by DukePyrolator. (Language settings are not respected in message sending.) Thanks!
|
||||
F Memory leak on +beI modes.
|
||||
|
||||
Provided by Liber <Liber@jasonirc.net> - 2009
|
||||
F Support operoverride and such things (stop reversing changes from nonopped people where unnecessary)
|
||||
|
||||
Anope Version 1.9.0
|
||||
--------------------
|
||||
@@ -0,0 +1,52 @@
|
||||
Anope Version 1.9.2
|
||||
--------------------
|
||||
** ADDED CONFIGURATION DIRECTIVES **
|
||||
options:enablelogchannel added to auto turn on the logchannel on startup
|
||||
options:mlock added to configure the default mlock modes on new channels
|
||||
options:database added for the database modules
|
||||
options:botmodes added to configure modes BotServ bots should use
|
||||
options:userlen added to configure maxiumum ident length
|
||||
options:hostlen added to configure maximum hostname length
|
||||
options:database added to configure what database modules to use
|
||||
options:passlen added to specify the maximum length of passwords
|
||||
uplink:ipv6 added to enable IPv6 connectivity
|
||||
options:maxretries added to specify the number of reconnect attempts allowed
|
||||
options:retrywait added to specify how long to wait between reconnect attempts
|
||||
opertype command chanserv/aop/list removed as it was unnecessary, use chanserv/access/list instead
|
||||
|
||||
** MODIFIED CONFIGURATION DIRECTIVES **
|
||||
options:encryption added enc_sha256
|
||||
chanserv:modules added cs_unban
|
||||
nickserv:modules added ns_resetpass
|
||||
|
||||
** DELETED CONFIGURATION DIRECTIVES **
|
||||
nickserv:database deleted because of new database system
|
||||
nickserv:prenickdatabase deleted because of new database system
|
||||
chanserv:database deleted because of the new database system
|
||||
botserv:database deleted because of the new database system
|
||||
hostserv:database deleted because of the new database system
|
||||
operserv:database deleted because of the new database system
|
||||
operserv:newsdatabase deleted because of the new database system
|
||||
operserv:exceptiondatabase deleted because of the new database system
|
||||
hs_request:database deleted because of the new database system
|
||||
os_ignore:database deleted because of the new database system
|
||||
serverinfo:localport deleted
|
||||
|
||||
Anope Version 1.9.1
|
||||
-------------------
|
||||
** ADDED CONFIGURATION DIRECTIVES **
|
||||
Opertypes have been added, through the opertype blocks.
|
||||
Services Operators are now specified in the oper blocks.
|
||||
|
||||
** MODIFIED CONFIGURATION DIRECTIVES **
|
||||
botserv:modules no longer contains bs_fantasy* modules, fantasy is now seamless.
|
||||
operserv:modules has replaced os_logonnews, os_opernews, and os_randomnews with os_news.
|
||||
operserv:modules no longer contains os_admin and os_oper modules, removed in favor of oper blocks.
|
||||
operserv:notifications no longer contains osraw due to removal of OS RAW.
|
||||
|
||||
** DELETED CONFIGURATION DIRECTIVES **
|
||||
Nick tracking has been removed as an option.
|
||||
Restricting of NS GETPASS and CS GETPASS removed in favor of opertypes.
|
||||
Host Setters were removed in favor of opertypes.
|
||||
HelpServ has been removed entirely.
|
||||
operserv:disableraw removed due to removal of OS RAW.
|
||||
@@ -0,0 +1,255 @@
|
||||
Anope Version 1.9.2
|
||||
--------------------
|
||||
*** New Strings:
|
||||
CHAN_INVITE_OTHER_SUCCESS
|
||||
NICK_HELP_CONFIRM_OPER
|
||||
CHAN_QOP_DISABLED
|
||||
CHAN_QOP_NICKS_ONLY
|
||||
CHAN_QOP_ADDED
|
||||
CHAN_QOP_MOVED
|
||||
CHAN_QOP_NO_SUCH_ENTRY
|
||||
CHAN_QOP_NOT_FOUND
|
||||
CHAN_QOP_DELETED
|
||||
CHAN_QOP_DELETED_ONE
|
||||
CHAN_QOP_DELETED_SEVERAL
|
||||
CHAN_QOP_LIST_EMPTY
|
||||
CHAN_QOP_LIST_HEADER
|
||||
CHAN_QOP_CLEAR
|
||||
CHAN_HELP_QOP
|
||||
CHAN_QOP_SYNTAX
|
||||
CHAN_HELP_CMD_QOP
|
||||
CHAN_HELP_SET_PASSWORD
|
||||
CHAN_LEVEL_AUTOOWNER
|
||||
CHAN_LEVEL_OWNER
|
||||
CHAN_LEVEL_OWNERME
|
||||
CHAN_ACCESS_VIEW_XOP_FORMAT
|
||||
CHAN_ACCESS_VIEW_AXS_FORMAT
|
||||
CHAN_SET_PERSIST_SYNTAX
|
||||
CHAN_SET_PERSIST_ON
|
||||
CHAN_SET_PERSIST_OFF
|
||||
CHAN_INFO_OPT_PERSIST
|
||||
BOT_UNASSIGN_PERSISTANT_CHAN
|
||||
CHAN_HELP_SET_PERSIST
|
||||
NICK_RESETPASS_SYNTAX
|
||||
NICK_RESETPASS_SUBJECT
|
||||
NICK_RESETPASS_MESSAGE
|
||||
NICK_RESETPASS_COMPLETE
|
||||
NICK_CONFIRM_EXPIRED
|
||||
NICK_CONFIRM_SUCCESS
|
||||
NICK_HELP_CMD_RESETPASS
|
||||
NICK_HELP_RESETPASS
|
||||
CHAN_UNBANNED_OTHER
|
||||
OPER_HELP_SYNC
|
||||
OPER_HELP_CMD_SQLSYNC
|
||||
OPER_SYNC_UPDATING
|
||||
OPER_SYNC_UPDATED
|
||||
CHAN_LEVELS_CHANGED_FOUNDER
|
||||
|
||||
*** Mod Strings:
|
||||
CHAN_HELP_SET
|
||||
CHAN_REGISTER_SYNTAX
|
||||
CHAN_ACCESS_SYNTAX
|
||||
CHAN_HELP_ACCESS
|
||||
CHAN_HELP_SET
|
||||
NICK_HELP_CONFIRM
|
||||
CHAN_UNBAN_SYNTAX
|
||||
CHAN_HELP_CMD_UNBAN
|
||||
CHAN_HELP_UNBAN
|
||||
CHAN_HELP_REGISTER
|
||||
CHAN_HELP_DROP
|
||||
CHAN_HELP_LEVELS
|
||||
|
||||
*** Del Strings:
|
||||
CHAN_PASSWORD_IS
|
||||
CHAN_SET_PASSWORD_FAILED
|
||||
CHAN_PASSWORD_CHANGED
|
||||
CHAN_IDENTIFY_SUCCEEDED
|
||||
CHAN_IDENTIFY_FAILED
|
||||
CHAN_HELP_IDENTIFY
|
||||
CHAN_IDENTIFY_SYNTAX
|
||||
CHAN_HELP_CMD_IDENTIFY
|
||||
CHAN_LOGOUT_FOUNDER_FAILED
|
||||
CHAN_LOGOUT_SUCCEDED
|
||||
CHAN_LOGOUT_NOT_LOGGEDIN
|
||||
CHAN_LOGOUT_ALL_SUCCEEDED
|
||||
CHAN_SERVADMIN_HELP_LOGOUT
|
||||
CHAN_HELP_LOGOUT
|
||||
CHAN_LOGOUT_SERVADMIN_SYNTAX
|
||||
CHAN_LOGOUT_SYNTAX
|
||||
CHAN_HELP_CMD_LOGOUT
|
||||
CHAN_GETPASS_UNAVAILABLE
|
||||
CHAN_GETPASSWORD_IS
|
||||
CHAN_SERVADMIN_HELP_GETPASS
|
||||
CHAN_GETPASS_SYNTAX
|
||||
CHAN_HELP_CMD_GETPASS
|
||||
CHAN_SENDPASS_SUBJECT
|
||||
CHAN_SENDPASS_HEAD
|
||||
CHAN_SENDPASS_LINE_1
|
||||
CHAN_SENDPASS_LINE_2
|
||||
CHAN_SENDPASS_LINE_3
|
||||
CHAN_SENDPASS_LINE_4
|
||||
CHAN_SENDPASS_LINE_5
|
||||
CHAN_SENDPASS_OK
|
||||
CHAN_SENDPASS_UNAVAILABLE
|
||||
CHAN_HELP_SENDPASS
|
||||
CHAN_SENDPASS_SYNTAX
|
||||
CHAN_HELP_CMD_SENDPASS
|
||||
OPER_DEFCON_NO_CONF
|
||||
|
||||
Anope Version 1.9.1
|
||||
--------------------
|
||||
*** New Strings:
|
||||
COMMAND_REQUIRES_PERM
|
||||
COMMAND_IDENTIFY_REQUIRED
|
||||
COMMAND_CANNOT_USE
|
||||
COMMAND_CAN_USE
|
||||
NICK_STATUS_REPLY
|
||||
NICK_INFO_SERVICES_OPERTYPE
|
||||
CHAN_LOGOUT_NOT_LOGGEDIN
|
||||
CHAN_INVITE_ALREADY_IN
|
||||
CHAN_INVITE_SUCCESS
|
||||
CHAN_OP_SYNTAX
|
||||
CHAN_HALFOP_SYNTAX
|
||||
CHAN_VOICE_SYNTAX
|
||||
CHAN_PROTECT_SYNTAX
|
||||
CHAN_OWNER_SYNTAX
|
||||
CHAN_DEOP_SYNTAX
|
||||
CHAN_DEHALFOP_SYNTAX
|
||||
CHAN_DEVOICE_SYNTAX
|
||||
CHAN_DEPROTECT_SYNTAX
|
||||
CHAN_DEOWNER_SYNTAX
|
||||
CHAN_KICK_SYNTAX
|
||||
CHAN_BAN_SYNTAX
|
||||
MEMO_STAFF_SYNTAX
|
||||
OPER_JUPE_INVALID_SERVER
|
||||
|
||||
*** Mod Strings:
|
||||
NICK_LOGOUT_SERVICESADMIN
|
||||
CHAN_STATUS_SYNTAX
|
||||
CHAN_GETKEY_KEY
|
||||
MEMO_SET_NOTIFY_SYNTAX
|
||||
BOT_REASON_BADWORD
|
||||
BOT_BOTLIST_EMPTY
|
||||
OPER_IGNORE_SYNTAX
|
||||
OPER_DEFCON_SYNTAX
|
||||
OPER_HELP_EXCEPTION
|
||||
OPER_HELP_SESSION
|
||||
NEWS_LOGON_SYNTAX
|
||||
NEWS_OPER_SYNTAX
|
||||
NEWS_RANDOM_SYNTAX
|
||||
NEWS_HELP_LOGON
|
||||
NEWS_HELP_OPER
|
||||
NEWS_HELP_RANDOM
|
||||
NICK_HELP_STATUS
|
||||
NICK_HELP_SENDPASS
|
||||
NICK_SERVADMIN_HELP
|
||||
NICK_SERVADMIN_HELP_LOGOUT
|
||||
NICK_SERVADMIN_HELP_DROP
|
||||
NICK_SERVADMIN_HELP_INFO
|
||||
NICK_SERVADMIN_HELP_LIST
|
||||
NICK_SERVADMIN_HELP_ALIST
|
||||
NICK_SERVADMIN_HELP_GLIST
|
||||
CHAN_HELP_SET_RESTRICTED
|
||||
CHAN_HELP_OP
|
||||
CHAN_HELP_DEOP
|
||||
CHAN_HELP_VOICE
|
||||
CHAN_HELP_DEVOICE
|
||||
CHAN_HELP_HALFOP
|
||||
CHAN_HELP_DEHALFOP
|
||||
CHAN_HELP_PROTECT
|
||||
CHAN_HELP_DEPROTECT
|
||||
CHAN_HELP_OWNER
|
||||
CHAN_HELP_DEOWNER
|
||||
CHAN_HELP_KICK
|
||||
CHAN_HELP_CLEAR
|
||||
CHAN_HELP_GETKEY
|
||||
CHAN_HELP_SENDPASS
|
||||
CHAN_SERVADMIN_HELP
|
||||
CHAN_SERVADMIN_HELP_LOGOUT
|
||||
CHAN_SERVADMIN_HELP_DROP
|
||||
CHAN_SERVADMIN_HELP_SET
|
||||
CHAN_SERVADMIN_HELP_INFO
|
||||
CHAN_SERVADMIN_HELP_LIST
|
||||
MEMO_HELP_SET_NOTIFY
|
||||
MEMO_HELP_STAFF
|
||||
OPER_HELP_CMD_CHANKILL
|
||||
OPER_HELP_STATS
|
||||
OPER_HELP_IGNORE
|
||||
OPER_HELP_UMODE
|
||||
OPER_HELP_ULINE
|
||||
OPER_HELP_SVSNICK
|
||||
OPER_HELP_SET
|
||||
BOT_HELP
|
||||
BOT_SERVADMIN_HELP_BOT
|
||||
BOT_SERVADMIN_HELP_SET
|
||||
HOST_DELALL_SYNTAX
|
||||
HOST_SET_SYNTAX
|
||||
HOST_SETALL_SYNTAX
|
||||
HOST_DEL_SYNTAX
|
||||
|
||||
*** Del Strings:
|
||||
PERMISSION_DENIED
|
||||
RAW_DISABLED
|
||||
HELP_LIMIT_SERV_OPER
|
||||
HELP_LIMIT_SERV_ADMIN
|
||||
HELP_LIMIT_SERV_ROOT
|
||||
HELP_LIMIT_IRC_OPER
|
||||
HELP_LIMIT_HOST_SETTER
|
||||
HELP_LIMIT_HOST_REMOVER
|
||||
NICK_STATUS_0
|
||||
NICK_STATUS_1
|
||||
NICK_STATUS_2
|
||||
NICK_STATUS_3
|
||||
NICK_INFO_SERVICES_OPER
|
||||
NICK_INFO_SERVICES_ADMIN
|
||||
NICK_INFO_SERVICES_ROOT
|
||||
CHAN_MUST_REGISTER_NICK
|
||||
CHAN_MUST_IDENTIFY_NICK
|
||||
OPER_ADMIN_SYNTAX
|
||||
OPER_ADMIN_SKELETON
|
||||
OPER_ADMIN_EXISTS
|
||||
OPER_ADMIN_REACHED_LIMIT
|
||||
OPER_ADMIN_ADDED
|
||||
OPER_ADMIN_NOT_FOUND
|
||||
OPER_ADMIN_NO_MATCH
|
||||
OPER_ADMIN_DELETED
|
||||
OPER_ADMIN_DELETED_ONE
|
||||
OPER_ADMIN_DELETED_SEVERAL
|
||||
OPER_ADMIN_LIST_EMPTY
|
||||
OPER_ADMIN_LIST_HEADER
|
||||
OPER_ADMIN_LIST_FORMAT
|
||||
OPER_ADMIN_CLEAR
|
||||
OPER_ADMIN_MOVED
|
||||
OPER_OPER_SYNTAX
|
||||
OPER_OPER_SKELETON
|
||||
OPER_OPER_EXISTS
|
||||
OPER_OPER_REACHED_LIMIT
|
||||
OPER_OPER_ADDED
|
||||
OPER_OPER_NOT_FOUND
|
||||
OPER_OPER_NO_MATCH
|
||||
OPER_OPER_DELETED
|
||||
OPER_OPER_DELETED_ONE
|
||||
OPER_OPER_DELETED_SEVERAL
|
||||
OPER_OPER_LIST_EMPTY
|
||||
OPER_OPER_LIST_HEADER
|
||||
OPER_OPER_LIST_FORMAT
|
||||
OPER_OPER_CLEAR
|
||||
OPER_OPER_MOVED
|
||||
OPER_SET_SQL_ON
|
||||
OPER_SET_SQL_OFF
|
||||
OPER_SET_SQL_ERROR
|
||||
OPER_SET_SQL_ERROR_INIT
|
||||
OPER_SET_SQL_ERROR_DISABLED
|
||||
OPER_RAW_SYNTAX
|
||||
HELP_HELP
|
||||
HELP_HELP_BOT
|
||||
HELP_HELP_HOST
|
||||
OPER_HELP_CMD_OPER
|
||||
OPER_HELP_CMD_ADMIN
|
||||
OPER_HELP_OPER
|
||||
OPER_HELP_ADMIN
|
||||
OPER_HELP_SET_SQL
|
||||
OPER_HELP_RAW
|
||||
HOST_ID
|
||||
HOST_NOT_REGGED
|
||||
HOST_OFF_UNREAL
|
||||
+14
-35
@@ -32,8 +32,8 @@ Anope DefCon
|
||||
The DefCon system is part of Anope's core,
|
||||
|
||||
The DefCon system has to be configured on your services.conf file to
|
||||
be enabled. All directives are optional unless they depend on what
|
||||
options you enable for each level. Look for the "DefCon configuration"
|
||||
be enabled. The defcon module will not unload unless all non-optional
|
||||
directives are set. Look for the defcon block
|
||||
section on your services.conf file for more information.
|
||||
|
||||
Make sure you restart Anope after changing the DefCon configuration
|
||||
@@ -43,40 +43,19 @@ Anope DefCon
|
||||
|
||||
Pre-defined DefCon actions:
|
||||
|
||||
No new channel registrations 1
|
||||
No New Nick Registrations 2
|
||||
No MLOCK changes 4
|
||||
Force Chan Mode 8
|
||||
Use Reduced Session Limit 16
|
||||
KILL any new clients trying to connect 32
|
||||
Services will ignore everyone but opers 64
|
||||
Services will silently ignore everyone but opers 128
|
||||
AKILL all new clients trying to connect 256
|
||||
No new memos sent to block MemoServ attacks 512
|
||||
|
||||
These are the values used to determine each defcon setting, are set via:
|
||||
|
||||
DefCon1 XX
|
||||
DefCon2 XX
|
||||
DefCon3 XX
|
||||
DefCon4 XX
|
||||
|
||||
To set the desired value, you simply add the value of the numbers together
|
||||
and place that as your DefCon# setting. For instance:
|
||||
|
||||
Say you wish to set:
|
||||
|
||||
No Channel Registrations, No Nickname Registrations and Services Ignoring
|
||||
everyone except for Operators. You would do this by:
|
||||
|
||||
1 + 2 + 128 (Each value listed above is added together)
|
||||
Giving: 131
|
||||
|
||||
You would then place this as which ever Defcon setting you want:
|
||||
No new channel registrations
|
||||
No New Nick Registrations
|
||||
No MLOCK changes
|
||||
Force Chan Mode
|
||||
Use Reduced Session Limit
|
||||
KILL any new clients trying to connect
|
||||
Services will ignore everyone but opers
|
||||
Services will silently ignore everyone but opers
|
||||
AKILL all new clients trying to connect
|
||||
No new memos sent to block MemoServ attacks
|
||||
|
||||
DefCon1 131
|
||||
|
||||
The recommended default values are safe to use on any network.
|
||||
Information regarding how to enable this for specific defcon levels can
|
||||
be found in services.conf
|
||||
|
||||
4) Usage
|
||||
|
||||
|
||||
+21
-395
@@ -2,415 +2,41 @@ Anope Internal Events
|
||||
---------------------
|
||||
|
||||
1) Intro
|
||||
2) Complex Events
|
||||
3) Triggered Events
|
||||
4) Triggered Events List
|
||||
2) Using Events
|
||||
|
||||
1) Introduction to Internal Events
|
||||
|
||||
Internal Events are setup to give module developers more information
|
||||
about what the core is doing at different times. This information can
|
||||
be as complex as data we are feeding to the uplink, to simple triggered
|
||||
events such as the databases being saved. A list of triggered events
|
||||
can be found below. Additional there is a module included with the core
|
||||
events such as the databases being saved.
|
||||
|
||||
Additionally there is a module included with the core
|
||||
which can provide some clue as to how to use the code in your modules.
|
||||
The rest of this document assumes that you are used to writing modules.
|
||||
|
||||
2) Complex Events
|
||||
2) Using Events
|
||||
|
||||
This type of events are based around what happens when we talk to the
|
||||
IRCd, much like MESSAGE events that the IRCD sends to us. The events
|
||||
are triggered when Anope writes to the ircd. To watch for these events
|
||||
you must have some knowledge of how the IRCd command system works. In
|
||||
our example we will trap for NICK events.
|
||||
Anope is told about modules wanting to hook to events by the function
|
||||
ModuleManager::Attach(EventName, Module*);, eg:
|
||||
|
||||
A) All functions most be formatted as:
|
||||
ModuleManager::Attach(I_OnJoinChannel, this);
|
||||
|
||||
int functioname(char *source, int ac, char **av);
|
||||
You can also specifcy an array of events:
|
||||
|
||||
B) In AnopeInit you must declare EvtMessage in some fashion, it is into
|
||||
this variable that we will create the event handler. Here is what the
|
||||
base AnopeInit should look like at this point:
|
||||
|
||||
int AnopeInit(int argc, char **argv)
|
||||
{
|
||||
EvtMessage *msg = NULL;
|
||||
int status;
|
||||
Implementation i[] = { I_OnJoinChannel, I_OnPartChannel };
|
||||
ModuleManager::Attach(i, this, 2);
|
||||
Where 2 is the number of events in the list
|
||||
|
||||
moduleAddAuthor(AUTHOR);
|
||||
moduleAddVersion(VERSION);
|
||||
return MOD_CONT;
|
||||
}
|
||||
You must then overload these functions in your main modules class.
|
||||
The full list of functions and parameters are in modules.h. In this
|
||||
case, you would be overloading OnJoinChannel() and OnPartChannel() like so:
|
||||
|
||||
Note that AUTHOR and VERSION should be defined above the AnopeInit
|
||||
function, just like you should do with any module.
|
||||
void OnJoinChannel(User *u, Channel *c) { }
|
||||
void OnPartChannel(User *u, Channel *c) { }
|
||||
|
||||
C) Pass "createEventHandler" the name of the message in this case NICK,
|
||||
and the function that was created in Step A. At this point you should
|
||||
assign the return of "createEventHandler" to the EvtMessage variable.
|
||||
Some of these events can be used to prevent or allow things to happen that
|
||||
would normally not be allowed or denied. You can also use ModuleManager
|
||||
(not explained here) to set control which order the modules are queried
|
||||
(when multiple modules hook to the same event).
|
||||
|
||||
msg = createEventHandler("NICK", my_nick);
|
||||
|
||||
D) The Handler is not ready for use yet; now you must add it to the hash
|
||||
with "moduleAddEventHandler". You will want to pass to this function
|
||||
the return of "createEventHandler".
|
||||
|
||||
status = moduleAddEventHandler(msg);
|
||||
|
||||
It will return the same module error codes as adding a regular message,
|
||||
which you can use to confirm it was added correctly.
|
||||
|
||||
E) With that setup in your function you will be passed 3 items. The source
|
||||
most of the time this will be set to ServerName or NULL; consult our
|
||||
IRCd documentation about how messages are formatted. AC is the count of
|
||||
variables you will find in AV.
|
||||
|
||||
int my_nick(char *source, int ac, char **av)
|
||||
{
|
||||
alog("Internal Event - nick is %s",av[0]);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
3) Triggered Events
|
||||
|
||||
These events also known as "event hooks" are internal events such as
|
||||
expiring of nicks to the saving of databases.
|
||||
|
||||
A) All functions most be formatted as:
|
||||
|
||||
int functioname(int argc, char **argv);
|
||||
|
||||
B) In AnopeInit you must declare EvtHook in some fashion; it is into
|
||||
this variable that we will create the event handler. Here is what
|
||||
the base AnopeInit should look like at this point:
|
||||
|
||||
int AnopeInit(int argc, char **argv)
|
||||
{
|
||||
EvtHook *hook = NULL;
|
||||
int status;
|
||||
|
||||
moduleAddAuthor(AUTHOR);
|
||||
moduleAddVersion(VERSION);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
C) Pass "createEventHook" the name of the event. In this case we are
|
||||
going to hook to the saving of databases, "EVENT_DB_SAVING".
|
||||
|
||||
hook = createEventHook(EVENT_DB_SAVING, my_save);
|
||||
|
||||
D) The Handler is not ready for use yet; now you must add it to the hash
|
||||
with "moduleAddEventHook". You will want to pass to this function the
|
||||
return of "createEventHook"
|
||||
|
||||
status = moduleAddEventHook(hook);
|
||||
|
||||
It will return the same module error codes as adding a regular message,
|
||||
which you can use to confirm it was added correctly.
|
||||
|
||||
E) With that setup in your function you will be passed 1 item. The message
|
||||
is very simple; it could be as simple as a start, stop or message. In
|
||||
the case of saving it has a start and stop.
|
||||
|
||||
int my_save(int argc, char **argv)
|
||||
{
|
||||
if (argc < 1) {
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
if (!stricmp(argv[0], EVENT_START)) {
|
||||
alog("Saving the databases! has started");
|
||||
} else {
|
||||
alog("Saving the databases is complete");
|
||||
}
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
4) Triggered Events List
|
||||
|
||||
Here's a list of all event hooks we currently offer, with a description
|
||||
of what argument is being passed to the event functions for this type of
|
||||
event. All arguments are plain-text strings (char *). The list is sorted
|
||||
in alphabetical order.
|
||||
|
||||
Note that all events are emitted AFTER the action has taken place, so
|
||||
any deleted nick/channel/etc won't exist anymore and any created one will
|
||||
exist when your function is being run, unless noted otherwise.
|
||||
|
||||
Also note that EVENT_START and EVENT_STOP should not be matched with an
|
||||
equal sign, but with string comparision. See the bundled events module for
|
||||
an example on how to do this.
|
||||
|
||||
The arguments are given as av[0] for the first argument, av[1] for the
|
||||
second argument, and so on. If av[0] and av[1] are given, the event has
|
||||
two arguments, and argc should be 2.
|
||||
|
||||
EVENT_ACCESS_ADD
|
||||
An user has been added to a channel access list.
|
||||
av[0] Name of the channel the user has been added to.
|
||||
av[1] The nickname of the user that has just added an entry to the
|
||||
access list.
|
||||
av[2] The nickname of the user that has been added to the access
|
||||
list.
|
||||
av[3] The level number the user has been added with.
|
||||
|
||||
EVENT_ACCESS_CHANGE
|
||||
An user level has been changed on a channel access list.
|
||||
av[0] Name of the channel the access list has been modified which.
|
||||
av[1] The nickname of the user that has just modified the access
|
||||
list of the channel.
|
||||
av[2] The nickname of the user wich his access level has just been
|
||||
modified.
|
||||
av[3] The new access level for the user.
|
||||
|
||||
EVENT_ACCESS_CLEAR
|
||||
A channel access list has been cleared.
|
||||
av[0] Name of the channel the access list has been cleared of
|
||||
av[1] The nickname of the user that has cleared the access list
|
||||
|
||||
EVENT_ACCESS_DEL
|
||||
An user has been deleted of a channel access list.
|
||||
av[0] Name of the channel the access entry has been deleted which.
|
||||
av[1] The nickname of the user that has just deleted the access entry.
|
||||
av[2] [OPTIONAL] The nickname of the user wich his access level has just
|
||||
been removed. Not present if numbers were used (e.g. /cs access
|
||||
del 7).
|
||||
|
||||
EVENT_BOT_ASSIGN
|
||||
A BotServ bot has been assigned to a channel.
|
||||
av[0] Name of the channel the bot has been assigned to.
|
||||
av[1] The nickname of the bot that has been assigned to the channel.
|
||||
|
||||
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.
|
||||
|
||||
EVENT_BOT_CHANGE
|
||||
The properties of a BotServ bot have been changed.
|
||||
av[0] The nickname of the bot involved.
|
||||
|
||||
EVENT_BOT_CREATE
|
||||
A new BotServ bot has been created, and is ready to use.
|
||||
av[0] The nickname of the newly created bot.
|
||||
|
||||
EVENT_BOT_DEL
|
||||
A BotServ bot is being deleted from BotServ. This event is being sent
|
||||
just before the actual deletion is performed.
|
||||
av[0] The nickname of the bot being deleted.
|
||||
|
||||
EVENT_BOT_FANTASY
|
||||
A fantasy command of the bot has been triggered. This event should be
|
||||
used to create your own fantasy commands.
|
||||
av[0] The fantasy command that has been triggered without leading '!'.
|
||||
av[1] The nickname of the user that has triggered the fantasy
|
||||
command.
|
||||
av[2] The name of the channel the fantasy command has been triggered
|
||||
on.
|
||||
av[3] Contains any optional paramenters passed after the fantasy
|
||||
command. If none are present, this will not exist, and argc will
|
||||
will be 3.
|
||||
|
||||
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.
|
||||
av[0] The fantasy command that has been triggered without leading '!'.
|
||||
av[1] The nickname of the user that has triggered the fantasy
|
||||
command.
|
||||
av[2] The name of the channel the fantasy command has been triggered
|
||||
on.
|
||||
av[3] Contains any optional paramenters passed after the fantasy
|
||||
command. If none are present, this will not exist, and argc will
|
||||
will be 3.
|
||||
|
||||
EVENT_BOT_JOIN
|
||||
A BotServ bot has joined a channel and opped itself.
|
||||
av[0] The channel name the bot has just joined.
|
||||
av[1] The nickname of the bot that has joined the channel.
|
||||
|
||||
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.
|
||||
|
||||
EVENT_BOT_UNASSIGN
|
||||
A BotServ bot is being unassigned from a channel. This event is being
|
||||
sent before the actual removing of the bot is done.
|
||||
av[0] The channel name the bot has been unassigned from.
|
||||
av[1] The nickname of the bot that has been unassigned.
|
||||
|
||||
EVENT_CHAN_DROP
|
||||
A channel has been dropped and deleted.
|
||||
av[0] The name of the channel that has been dropped.
|
||||
|
||||
EVENT_CHAN_EXPIRE
|
||||
A channel has been expired and will be deleted. The event will be
|
||||
emitted just before the actual channel deletion happens.
|
||||
av[0] The name of the channel that has been expired.
|
||||
|
||||
EVENT_CHAN_FORBIDDEN
|
||||
A channel has been forbidden (ChanServ FORBID).
|
||||
av[0] The name of the channel that has been forbidden.
|
||||
|
||||
EVENT_CHAN_KICK
|
||||
Someone has just been kicked from a channel.
|
||||
av[0] The nick of the user that has been kicked.
|
||||
av[1] The channel the user has been kicked from.
|
||||
|
||||
EVENT_CHAN_REGISTERED
|
||||
A new channel has been registered.
|
||||
av[0] The name of the channel that has been registered.
|
||||
|
||||
EVENT_CHAN_SUSPENDED
|
||||
A channel has been suspended (ChanServ SUSPEND).
|
||||
av[0] The name of the channel that has been suspended.
|
||||
|
||||
EVENT_CHAN_UNSUSPEND
|
||||
A channel has been unsuspended (ChanServ UNSUSPEND).
|
||||
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.
|
||||
|
||||
EVENT_CONNECT
|
||||
This event is emitted when the connection to our uplink hub is being
|
||||
made.
|
||||
av[0] EVENT_START or EVENT_STOP, to indicate if it's emitted before
|
||||
or after the connection has been made. EVENT_STOP is emitted
|
||||
before our burst is being sent over the link.
|
||||
|
||||
EVENT_DB_EXPIRE
|
||||
This event is emitted when the expiry routines for all things that can
|
||||
expire in Anope are being run.
|
||||
av[0] EVENT_START or EVENT_STOP, to indicate if it's being emitted
|
||||
before or after the expiry routines have been run.
|
||||
|
||||
EVENT_DB_SAVING
|
||||
This event is emitted when the databases are being saved.
|
||||
av[0] EVENT_START or EVENT_STOP, to indicate if it's emitted before
|
||||
or after the saving routines have been run.
|
||||
|
||||
EVENT_DB_BACKUP
|
||||
This event is emitted when the databases are backed up.
|
||||
av[0] EVENT_START when the backup commences, and EVENT_STOP when it
|
||||
finishes.
|
||||
|
||||
EVENT_DEFCON_LEVEL
|
||||
The DefCon level has just been changed. This event is emitted before
|
||||
any DefCon-related action is taken. The internal DefConLevel has
|
||||
already been raised at this point.
|
||||
av[0] The new level of DefCon being invoked.
|
||||
|
||||
EVENT_GROUP
|
||||
A user has grouped it's nickname to another user group.
|
||||
av[0] The nickname of the user that joined the group.
|
||||
|
||||
EVENT_JOIN_CHANNEL
|
||||
A user joins a channel.
|
||||
av[0] EVENT_START or EVENT_STOP. EVENT_START when the user has passed
|
||||
all access checks and is allowed to join, but has not yet
|
||||
joined the channel. EVENT_STOP when the user has joined and all
|
||||
needed modes are set etc.
|
||||
av[1] The nickname of the user joining the channel.
|
||||
av[2] The name of the channel the user has joined.
|
||||
|
||||
EVENT_NEWNICK
|
||||
A new user has been introduced on the network.
|
||||
av[0] The nickname of the newly introduced user.
|
||||
|
||||
EVENT_NICK_DROPPED
|
||||
A user's nick has just been dropped. Note that the nickname information
|
||||
has already been deleted!
|
||||
av[0] The nickname of the user that has just been dropped.
|
||||
|
||||
EVENT_NICK_EXPIRE
|
||||
A user's nick has just expired. Note that, as with EVENT_NICK_DROPPED,
|
||||
the nickname information has already been deleted!
|
||||
av[0] The nickname of the user that has just expired.
|
||||
|
||||
EVENT_NICK_FORBIDDEN
|
||||
A user's nick has just been forbidden.
|
||||
av[0] The nickname that has just been forbidden.
|
||||
|
||||
EVENT_NICK_IDENTIFY
|
||||
A user has just identified for it's 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_REGISTERED
|
||||
A new user has just registered it's 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.
|
||||
|
||||
EVENT_NICK_SUSPENDED
|
||||
A user's nick has just been suspended.
|
||||
av[0] The nickname that has just been suspended.
|
||||
|
||||
EVENT_NICK_UNSUSPEND
|
||||
A user's nick has just been unsuspended.
|
||||
av[0] The nickname that has just been unsuspended.
|
||||
|
||||
EVENT_PART_CHANNEL
|
||||
A user parts a channel.
|
||||
av[0] EVENT_START or EVENT_STOP. EVENT_START when the user is about
|
||||
to be removed from the channel internally, EVENT_STOP when
|
||||
this has been done.
|
||||
av[1] The nickname of the user parting the channel.
|
||||
av[2] The name of the channel the user has parted.
|
||||
av[3] The reason the user parted the channel, this is not always sent
|
||||
so check the count to make sure it was passed. (ac == 4)
|
||||
|
||||
EVENT_RELOAD
|
||||
This event is emitted after the configuration file has been reloaded.
|
||||
av[0] Always EVENT_START.
|
||||
|
||||
EVENT_RESTART
|
||||
This event is emitted before the services are being restarted.
|
||||
av[0] Always EVENT_START.
|
||||
|
||||
EVENT_SERVER_CONNECT
|
||||
A new server has just connected to the network.
|
||||
av[0] The name of the new server.
|
||||
|
||||
EVENT_SERVER_SQUIT
|
||||
A server has sent an SQUIT and is about to be removed from the
|
||||
network. This event is being sent before the server is actually
|
||||
removed from the network.
|
||||
av[0] The name of the server that is being removed.
|
||||
|
||||
EVENT_SHUTDOWN
|
||||
This event is emitted when Anope is being shut down.
|
||||
av[0] EVENT_START or EVENT_STOP, to indicate where in the process of
|
||||
restarting the core is. With EVENT_START, services are still
|
||||
fully online and operating. With EVENT_STOP, every internal
|
||||
clean up has been done already, and the SQUIT has been sent;
|
||||
the only thing done after emitting the event is closing the
|
||||
socket to the uplink hub.
|
||||
|
||||
EVENT_SIGNAL
|
||||
This event is emitted when Anope is quitting because of a signal it
|
||||
received.
|
||||
av[0] The quit message that will be sent with the SQUIT for this
|
||||
shutdown.
|
||||
|
||||
EVENT_TOPIC_UPDATED
|
||||
A channel topic has been succesfully updated. Note that this event is
|
||||
only emitted if the new topic has been fully accepted and set by the
|
||||
Anope core.
|
||||
av[0] The name of the channel involved.
|
||||
av[1] The new topic set on the channel.
|
||||
|
||||
EVENT_USER_LOGOFF
|
||||
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.
|
||||
|
||||
@@ -1,601 +1,378 @@
|
||||
How To Add IRCd Support
|
||||
-----------------------
|
||||
|
||||
1) Files to Edit
|
||||
2) Modifing the Header File
|
||||
3) The Code
|
||||
4) Modes
|
||||
5) Functions / Events
|
||||
6) CAPAB/PROTOCTL
|
||||
|
||||
1) Files to Edit
|
||||
|
||||
When preparing to add support to Anope for your ircd, you need to edit
|
||||
the following files.
|
||||
|
||||
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
|
||||
|
||||
Now that you have gotten past the first part of the creation process, you
|
||||
are into the code. This part is the harder and more complex part. You
|
||||
will need a general understanding of C code to continue. Here are the
|
||||
step by step instructions required to make this work.
|
||||
|
||||
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"
|
||||
|
||||
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
|
||||
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
|
||||
to 0x8000000. In most cases you want to list all modes. If you run out of
|
||||
values look at removing any modes that do not impact services.
|
||||
|
||||
Channel modes are done much like user modes, with the exception that
|
||||
bans, exceptions, invites, and modes that are applied to a user such as
|
||||
op and voice are not defined here. All other modes are defined in here.
|
||||
Again be clear and use the correct case and use hex values as done with
|
||||
user modes.
|
||||
|
||||
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"
|
||||
|
||||
3) The Code
|
||||
|
||||
Here is where the code of the .c file comes in. Be prepared to spend at
|
||||
least an hour, if not longer, going over the code and getting it right;
|
||||
Especially if you are setting up an ircd that is completely different
|
||||
than the one you used as a base. This section covers the majority of the
|
||||
code that is in use.
|
||||
|
||||
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
|
||||
the list of all available variables; note that you should not swap any
|
||||
around, or you will break stuff. Here is a brief description of the usage
|
||||
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
|
||||
build on startup.
|
||||
|
||||
2) NickServ Mode: This is the user mode set by Anope on NickServ.
|
||||
Normally you want this to be some form of oper flag,
|
||||
or a services flag.
|
||||
|
||||
3) ChanServ Mode: This is the user mode set by Anope on ChanServ.
|
||||
Normally you want this to be some form of oper flag,
|
||||
or a services flag.
|
||||
|
||||
4) MemoServ Mode: This is the user mode set by Anope on MemoServ.
|
||||
Normally you want this to be some form of oper flag,
|
||||
or a services flag.
|
||||
|
||||
5) HostServ Mode: This is the user mode set by Anope on HostServ.
|
||||
Normally you want this to be some form of oper flag,
|
||||
or a services flag. Note that if your ircd does not
|
||||
support HostServ, you can safely make this NULL or +,
|
||||
as there is a check before bringing HostServ online.
|
||||
|
||||
6) OperServ Mode: This is the user mode set by Anope on OperServ.
|
||||
Normally you want this to be some form of oper flag,
|
||||
or a services flag.
|
||||
|
||||
7) BotServ Mode: This is the user mode set by Anope on BotServ.
|
||||
Normally you want this to be some form of oper flag,
|
||||
or a services flag.
|
||||
|
||||
8) HelpServ Mode: This is the user mode set by Anope on HelpServ.
|
||||
Normally you want this to be some form of oper flag,
|
||||
or a services flag.
|
||||
|
||||
9) DevNull Mode: This is the user mode set by Anope on DevNull.
|
||||
Normally you want this to be some form of oper flag,
|
||||
or a services flag.
|
||||
|
||||
10) Global Mode: This is the user mode set by Anope on Global.
|
||||
Normally you want this to be some form of oper flag,
|
||||
or a services flag.
|
||||
|
||||
11) NickServ Alias Mode: This is the user mode set by Anope on the alias
|
||||
of NickServ. Normally you want this to be some
|
||||
form of oper flag, or a services flag.
|
||||
|
||||
12) ChanServ Alias Mode: This is the user mode set by Anope on the alias
|
||||
of ChanServ. Normally you want this to be some
|
||||
form of oper flag, or a services flag.
|
||||
|
||||
13) MemoServ Alias Mode: This is the user mode set by Anope on the alias
|
||||
of MemoServ. Normally you want this to be some
|
||||
form of oper flag, or a services flag.
|
||||
|
||||
14) HostServ Alias Mode: This is the user mode set by Anope on the alias
|
||||
of MemoServ. Normally you want this to be some
|
||||
form of oper flag, or a services flag. Note that
|
||||
if your ircd does not support HostServ, you can
|
||||
safely make this NULL or +, as there is a check
|
||||
before bringing HostServ online.
|
||||
|
||||
15) OperServ Alias Mode: This is the user mode set by Anope on the alias
|
||||
of OperServ. Normally you want this to be some
|
||||
form of oper flag, or a services flag.
|
||||
|
||||
16) BotServ Alias Mode: This is the user mode set by Anope on the alias
|
||||
of BotServ. Normally you want this to be some
|
||||
form of oper flag, or a services flag.
|
||||
|
||||
17) HelpServ Alias Mode: This is the user mode set by Anope on the alias
|
||||
of HelpServ. Normally you want this to be some
|
||||
form of oper flag, or a services flag.
|
||||
|
||||
18) DevNull Alias Mode: This is the user mode set by Anope on the alias
|
||||
of DevNull. Normally you want this to be some
|
||||
form of oper flag, or a services flag.
|
||||
|
||||
19) Global Alias Mode: This is the user mode set by Anope on the alias
|
||||
of Global. Normally you want this to be some form
|
||||
of oper flag, or a services flag.
|
||||
|
||||
20) BotServ Bots Mode: This is the user mode set by Anope on all BotServ
|
||||
bots. Normally you want this to be a some form of
|
||||
service or bot flag; you can use + for no mode at
|
||||
all.
|
||||
|
||||
21) Max Channelmode Symbols: This is the total number of possible channel
|
||||
modes that can appear before a nick. Do
|
||||
remember to count each possible mode, so +ov
|
||||
is 2.
|
||||
|
||||
22) Modes to Remove: This is every mode that Anope should remove when
|
||||
stripping channel modes.
|
||||
|
||||
23) Channelmode for bots: When a BotServ bot joins a channel, this is the
|
||||
mode set on them. Normally you will want them
|
||||
opped (+o), and protected (+a) on IRCd's that
|
||||
support it.
|
||||
|
||||
24) SVSNICK: Can the ircd use SVSNICK to change some ones nick? Otherwise,
|
||||
KILL is used. Use 1 for yes, 0 for no.
|
||||
|
||||
25) VHOST: Can a user's host be changed on the fly? Enabling this allow
|
||||
HostServ online. Use 1 for yes, 0 for no.
|
||||
|
||||
26) OWNER: Has a channel umode for being the channel owner. For example,
|
||||
UnrealIRCd has mode +q. Use 1 for yes, 0 for no.
|
||||
|
||||
27) OWNER MODE SET: What mode to set to make someone the owner. If the
|
||||
IRCd doesn't support owners, set this to NULL.
|
||||
|
||||
28) OWNER MODE UNSET: What mode to unset to take away someone's channel
|
||||
owner status. If the IRCd doesn't support owners,
|
||||
set this to NULL.
|
||||
|
||||
29) ADMIN MODE SET: What mode to set to make someone a channel admin.
|
||||
If the IRCd dosn't support admins, set to NULL.
|
||||
|
||||
30) ADMIN MODE UNSET: What mode to unset to take away channel admin.
|
||||
If the IRCd dosn't support admins, set to NULL.
|
||||
|
||||
31) Mode on Nick Register: What mode to give users when they register
|
||||
with NickServ. If your ircd doesn't set expect
|
||||
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
|
||||
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
|
||||
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,
|
||||
0 for no.
|
||||
|
||||
35) 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.
|
||||
|
||||
37) 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
|
||||
parameters that are passed.
|
||||
|
||||
39) 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
|
||||
that channel (cannot override +n). Use 1 for yes,
|
||||
0 for no.
|
||||
|
||||
41) 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
|
||||
set forward by +1. Use 1 for yes, 0 for no.
|
||||
|
||||
43) 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.
|
||||
Use 0 for no support, or enter the UMODE_ define.
|
||||
|
||||
45) 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
|
||||
SQLINES. Use 1 for yes, 0 for no.
|
||||
|
||||
47) 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
|
||||
1 for yes, 0 for no.
|
||||
|
||||
49) 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
|
||||
DreamForge based IRCd's. Use 1 for yes, 0 for no.
|
||||
|
||||
51) 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
|
||||
option above. Use 1 for yes, 0 for no.
|
||||
|
||||
53) 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
|
||||
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.
|
||||
Use 1 for yes, 0 for no.
|
||||
|
||||
56) 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,
|
||||
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,
|
||||
0 for no.
|
||||
|
||||
60) 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.
|
||||
|
||||
62) No Knock: CMODE_ that defines NO KNOCK. Use 0 for no support.
|
||||
|
||||
63) Admin Only: CMODE_ that defines Admin Only. Use 0 for no support.
|
||||
|
||||
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.
|
||||
Use 0 for no support.
|
||||
|
||||
66) 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
|
||||
other channel. Use 1 for yes, 0 for no.
|
||||
|
||||
68) 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.
|
||||
|
||||
70) 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
|
||||
only channels? Use 1 for yes, 0 for no.
|
||||
|
||||
72) 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,
|
||||
0 for no.
|
||||
|
||||
74) 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
|
||||
1 for yes, 0 for no.
|
||||
|
||||
76) 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 ''.
|
||||
|
||||
78) SJOIN Except Char: Character used to identify exceptions. use ''.
|
||||
|
||||
79) 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
|
||||
do so? Use 1 for yes, 0 for no.
|
||||
|
||||
81) 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.
|
||||
|
||||
83) 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.
|
||||
|
||||
85) 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,
|
||||
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
|
||||
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)
|
||||
will need a custom implementation in the core.
|
||||
Contact the anope Dev Team if this is the case.
|
||||
Set to 0 if CIDR's are not supported by your IRCd.
|
||||
|
||||
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.
|
||||
|
||||
IRCDCAPAB ircdcap[] = { }
|
||||
|
||||
This struct is based on the CAPAB defines. You should review the CAPAB
|
||||
table below to see how this should be done.
|
||||
|
||||
Define Table
|
||||
--------------------------------------------------------------------------
|
||||
Define | Value | Token | Description
|
||||
----------------|------------|-----------|--------------------------------
|
||||
CAPAB_NOQUIT | 0x00000001 | NOQUIT | NOQUIT protocol support
|
||||
CAPAB_TSMODE | 0x00000002 | TS | Chanmodes are timestamped
|
||||
CAPAB_UNCONNECT | 0x00000004 | UNCONNECT | UNCONNECT protocol support
|
||||
CAPAB_NICKIP | 0x00000008 | NICKIP | IP sent in the NICK line
|
||||
CAPAB_NSJOIN | 0x00000010 | SSJOIN | Smart SJOIN support
|
||||
CAPAB_ZIP | 0x00000020 | ZIP | Support for gzipped links
|
||||
CAPAB_BURST | 0x00000040 | BURST | Supports BURST command
|
||||
CAPAB_TS3 | 0x00000080 | TS3 | Support for TS3 protocol
|
||||
CAPAB_TS5 | 0x00000100 | TS5 | Support for TS5 protocol
|
||||
CAPAB_DKEY | 0x00000200 | DKEY | DH-Key exchange using DKEY
|
||||
CAPAB_DOZIP | 0x00000400 | ZIP | Link traffic will be gzipped
|
||||
CAPAB_DODKEY | 0x00000800 | DKEY | Do DKEY with this link
|
||||
CAPAB_QS | 0x00001000 | QS | Supports quit storm removal
|
||||
CAPAB_SCS | 0x00002000 | SCS | String Cache System support
|
||||
CAPAB_PT4 | 0x00004000 | PT4 | Support for PT4 protocol
|
||||
CAPAB_UID | 0x00008000 | UID | Support for UIDs
|
||||
CAPAB_KNOCK | 0x00010000 | KNOCK | Supports KNOCK
|
||||
CAPAB_CLIENT | 0x00020000 | CLIENT | Supports CLIENT
|
||||
CAPAB_IPV6 | 0x00040000 | IPV6 | Support for IPv6 addresses
|
||||
CAPAB_SSJ5 | 0x00080000 | SSJ5 | Smart Join protocol 5 support
|
||||
CAPAB_SN2 | 0x00100000 | SN2 | Support for SN2 protocol
|
||||
CAPAB_VHOST | 0x00200000 | VHOST | Supports VHOST protocol
|
||||
CAPAB_TOKEN | 0x00400000 | TOKEN | Supports s2s tokens
|
||||
CAPAB_SSJ3 | 0x00800000 | SSJ3 | Smart Join protocol 3 support
|
||||
CAPAB_NICK2 | 0x01000000 | NICK2 | Support for extended NICK (v2)
|
||||
CAPAB_UMODE2 | 0x02000000 | UMODE2 | Supports UMODE2 command
|
||||
CAPAB_VL | 0x04000000 | VL | VLine information in info field
|
||||
CAPAB_TLKEXT | 0x08000000 | TLKEXT | Not 8, but 10 params in TKL's
|
||||
CAPAB_CHANMODE | 0x10000000 | CHANMODE | Channel modes are passed here
|
||||
CAPAB_SJB64 | 0x20000000 | SJB64 | SJOIN timestamps are base64 encoded
|
||||
CAPAB_NICKCHARS | 0x40000000 | NICKCHARS | Character set used by the IRCD for nicks
|
||||
|
||||
|
||||
4) Modes
|
||||
|
||||
The next thing you should do is defining the user modes. You will want to
|
||||
have your .h file handy for this part.
|
||||
|
||||
unsigned long umodes[128] = { }
|
||||
|
||||
This array goes from 0 to 127 in the ASCII character set. Insert the user
|
||||
modes at the slot where the mode fits. If you are adding a the user mode
|
||||
of +i find the 105th (ASCII code of 'i') character slot in the array, and
|
||||
place the UMODE_i into this slot. Your base .c file should contain a good
|
||||
start for this, as well as a little help locating the characters.
|
||||
|
||||
The following mode set is for the channel symbols. During a SJOIN event
|
||||
the modes are sent usually before the nick. These normally are @, +, %
|
||||
etc.. depending on the ircd. Starting at ASCII 0 and running to 127.
|
||||
Replace the 0 with the character (o = @, h = %) for the given mode. In the
|
||||
case of halfop which is usually sent as % replace the 37th character with
|
||||
'h', do this until all modes that are possible be received in this manor
|
||||
have been inserted into the array.
|
||||
|
||||
Now that you have that complete, the following array is ready to be dealt
|
||||
with. This is the cmmodes array, like the others it is a ASCII array
|
||||
starting at 0 and going to 127. However at the given letter you will want
|
||||
to enter the add, and delete function for the given mode. In the case of
|
||||
bans (+b) there is add_ban, and del_ban. Anope provides functions for
|
||||
bans, exceptions and invites, should your ircd have more then these please
|
||||
contact Anope to discuss what can be done to add this mode.
|
||||
|
||||
5) Functions and Events
|
||||
|
||||
A brief word about functions and events. All events are captured using:
|
||||
|
||||
void moduleAddIRCDMsgs(void)
|
||||
{
|
||||
m = createMessage("NICK", anope_event_nick);
|
||||
addCoreMessage(IRCD,m);
|
||||
}
|
||||
|
||||
Each event should have a event handler if its important enough to be
|
||||
processed by services. All event functions should be formed like this:
|
||||
|
||||
int anope_event_capab(char *source, int ac, char **av)
|
||||
{
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
They will receive the source; this can be NULL at times depending on the
|
||||
event. Next, ac is the number of arguments that are in the event, and av
|
||||
holds the values for each; so av[0] is the first variable, av[1] will be
|
||||
the second one, and so on. Events are likely to pass to various upper
|
||||
level event handlers; see the previous ircd source for how they handle
|
||||
these events.
|
||||
|
||||
All commands are formed like this:
|
||||
|
||||
void anope_cmd_svsnoop(char *server, int set)
|
||||
{
|
||||
send_cmd(NULL, "SVSNOOP %s %s", server, (set ? "+" : "-"));
|
||||
}
|
||||
|
||||
They may take any number of arguments, depending on the command. They
|
||||
should eventually come to a send_cmd(); this root function is how
|
||||
commands are sent to the IRCd.
|
||||
|
||||
6) CAPAB/PROTOCTL
|
||||
|
||||
Most IRCD send a CAPAB or PROTOCTL line so that they can work out what
|
||||
the other end of the connection is capable of doing. Anope has a function
|
||||
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
|
||||
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.
|
||||
|
||||
A) In the function "moduleAddIRCDMsgs" making sure that you have the
|
||||
following two lines:
|
||||
|
||||
m = createMessage("CAPAB", anope_event_capab);
|
||||
addCoreMessage(IRCD,m);
|
||||
|
||||
B) Add the function to handle the event
|
||||
|
||||
int anope_event_capab(char *source, int ac, char **av)
|
||||
{
|
||||
capab_parse(ac, av);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
This function should call the capab_parse function which parses
|
||||
the received CAPAB/PROTOCTL line.
|
||||
How To Add IRCd Support
|
||||
-----------------------
|
||||
|
||||
1) Files to Edit
|
||||
2) The Code
|
||||
3) The IRCDVar struct
|
||||
4) Modes
|
||||
5) Functions / Events
|
||||
6) CAPAB/PROTOCTL
|
||||
7) IRCDProto Class
|
||||
|
||||
1) Files to Edit
|
||||
|
||||
When preparing to add supprt to Anope for your IRCd, you need to edit
|
||||
the following files
|
||||
|
||||
A) Make a copy of the .cpp file of the IRCd that matches the IRCd that
|
||||
you are attempting to add support for best.
|
||||
B) Add your IRCd into the supported IRCds in example.conf
|
||||
|
||||
2) The Code
|
||||
|
||||
Here is where the code of the .cpp file comes in. Be prepared to spend at
|
||||
least an hour, if not longer, going over the code and getting it right;
|
||||
Especially if you are setting up an ircd that is completely different
|
||||
than the one you used as a base. This section covers the majority of the
|
||||
code that is in use.
|
||||
|
||||
The first bit of code you will face is the IRCDVar structure, which is
|
||||
explained in depth in the next section.
|
||||
|
||||
Scroll down to the bottom and find the class for this module and rename it
|
||||
to something reflecting your IRCd name. Find the function:
|
||||
|
||||
pmodule_ircd_version("Unreal 3.2+");
|
||||
|
||||
This is 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.
|
||||
|
||||
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.
|
||||
|
||||
pmodule_ircd_useTSMode(0);
|
||||
|
||||
3) The IRCDVar struct
|
||||
|
||||
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 myIrcd[] = { };
|
||||
|
||||
This struct contains your basic IRCd functions. Your base source file has
|
||||
the list of all available variables; note that you should not swap any
|
||||
around, or you will break stuff. Here is a brief description of the usage
|
||||
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
|
||||
build on startup.
|
||||
|
||||
2) Pseudo Client Mode: This is the user mode set by Anope on all BotServ
|
||||
bots. Normally you want this to be a some form of
|
||||
service or bot flag; you can use + for no mode at
|
||||
all.
|
||||
|
||||
3) Max Channelmode Symbols: This is the total number of possible channel
|
||||
modes that can appear before a nick. Do
|
||||
remember to count each possible mode, so +ov
|
||||
is 2.
|
||||
|
||||
4) Channelmode for bots: When a BotServ bot joins a channel, this is the
|
||||
mode set on them. Normally you will want them
|
||||
opped (+o), and protected (+a) on IRCd's that
|
||||
support it.
|
||||
|
||||
5) SVSNICK: Can the ircd use SVSNICK to change some ones nick? Otherwise,
|
||||
KILL is used. Use 1 for yes, 0 for no.
|
||||
|
||||
6) VHOST: Can a user's host be changed on the fly? Enabling this allow
|
||||
HostServ online. Use 1 for yes, 0 for no.
|
||||
|
||||
7) SGLINE: Does the IRCd support realname (geocs) bans? Use 1 for yes,
|
||||
0 for no.
|
||||
|
||||
8) SQLINE: Does the IRCd support nick bans? Use 1 for yes, 0 for no.
|
||||
|
||||
9) SZLINE: Does the IRCd support SZLINES? Use 1 for yes, 0 for no.
|
||||
|
||||
10) Number of Server Args: When an IRCd connects, this is the number of
|
||||
parameters that are passed.
|
||||
|
||||
11) Join to Set: Services must join a channel to set any modes on that
|
||||
channel. Use 1 for yes, 0 for no.
|
||||
|
||||
12) 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.
|
||||
|
||||
13) TS Topic Forward: Some IRCd's (like UnrealIRCd) like their topic TS
|
||||
set forward by +1. Use 1 for yes, 0 for no.
|
||||
|
||||
14) 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.
|
||||
|
||||
15) SQline Channels: The IRCd's supports banning channel names via
|
||||
SQLINES. Use 1 for yes, 0 for no.
|
||||
|
||||
16) 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.
|
||||
|
||||
17) SVSMODE -b: We can use SVSMODE to unban hosts from a channel. Use
|
||||
1 for yes, 0 for no.
|
||||
|
||||
18) Reverse: We can do a reverse check when unbanning. For use with
|
||||
DreamForge based IRCd's. Use 1 for yes, 0 for no.
|
||||
|
||||
19) vIdent: Support for including a user's ident in their vHost. Use
|
||||
1 for yes, 0 for no.
|
||||
|
||||
20) SVSHOLD: Support for temporarily 'holding' a nick, instead of using
|
||||
a nick enforcer client. Use 1 for yes, 0 for no.
|
||||
|
||||
21) TS on MODE: We need to send a timestamp when modes are being changed.
|
||||
Use 1 for yes, 0 for no.
|
||||
|
||||
22) 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.
|
||||
|
||||
23) OMODE: We can use OperServ to give some user a temporary O:LINE.
|
||||
Use 1 for yes, 0 for no.
|
||||
|
||||
24) Umode: We can use OperServ to change a user's mode. Use 1 for yes,
|
||||
0 for no.
|
||||
|
||||
25) Vhost On Nick: On NICK the IRCd sends the VHOST. Use 1 for yes,
|
||||
0 for no.
|
||||
|
||||
26) Change Realname: Change real name. Use 1 for yes, 0 for no.
|
||||
|
||||
27) 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.
|
||||
|
||||
28) No Knock Requires +i: Does the No Knock channel mode require invite
|
||||
only channels? Use 1 for yes, 0 for no.
|
||||
|
||||
29) Chan Modes: If sent in CAPAB/PROTOCOL, we store it in here. This is
|
||||
NULL by default.
|
||||
|
||||
30) Tokens: Can we use tokens to talk to the IRCd? Use 1 for yes,
|
||||
0 for no.
|
||||
|
||||
31) base64 SJOIN TS: Are the timestamps sent with a SJOIN in base64? Use
|
||||
1 for yes, 0 for no.
|
||||
|
||||
32) SJOIN Ban Char: Character used to identify bans. Use ''.
|
||||
|
||||
33) SJOIN Except Char: Character used to identify exceptions. Use ''.
|
||||
|
||||
34) SJOIN Invite char: Character used to idenfity invexs. Use ''.
|
||||
|
||||
35) SVSMODE UCMODE: Can we clear user channel modes with SVSMODE? Use
|
||||
1 for yes, 0 for no.
|
||||
|
||||
36) SGline Enforce: Does the IRCd enforce SGLINES for us or do we need to
|
||||
do so? Use 1 for yes, 0 for no.
|
||||
|
||||
37) Vhost Character: The character used to represent the vHost mode, if
|
||||
this is supported by the IRCd.
|
||||
|
||||
38) TS6: Does the IRCd support TS6? Use 1 for yes, 0 for no.
|
||||
|
||||
39) P10: Is this IRCd a P10-style IRCd? Use 1 for yes, 0 for no.
|
||||
|
||||
40) Character Set: Unreal passes the character set during PROTOCTL,
|
||||
the value is stored here. Set this NULL to start.
|
||||
|
||||
41) 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)
|
||||
will need a custom implementation in the core.
|
||||
Contact the anope Dev Team if this is the case.
|
||||
Set to 0 if CIDR's are not supported by your IRCd.
|
||||
|
||||
42) Global TLD Prefix: Prefix used to send global messages, should probably
|
||||
be "$"
|
||||
|
||||
43) Max Modes: The max number of mode changes we can send in one line
|
||||
|
||||
4) Modes
|
||||
|
||||
Anope is told about modes in the moduleAddModes() function.
|
||||
For the most part, the syntax for adding channel and user modes are:
|
||||
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_NETADMIN, 'N'));
|
||||
Where 'N' is the char for the mode, and UMODE_NETADMIN shows what the
|
||||
mode does. Or:
|
||||
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_BLOCKCOLOR, 'c'));
|
||||
Where 'c' is the char for the mode and CMODE_BLOCKCOLOR shows what
|
||||
the mode does
|
||||
|
||||
A full list of valid mode names for the second param can be found
|
||||
in services.h in the enum for ChannelModeName and UserModeName
|
||||
If necessary, you can add additional modes to this list.
|
||||
|
||||
Adding simple modes with parameters is similar, instead adding a
|
||||
'new ChannelMode', use 'new ChannelModeParam', set the third optional
|
||||
arg of ChannelModeParam to false if the param should NOT be sent when unsetting
|
||||
it. Eg:
|
||||
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_JOINFLOOD, 'j', true));
|
||||
|
||||
Anope will internally track the params, and they can be retrieved through
|
||||
Channel::GetParam();
|
||||
|
||||
If you want to make param validity checking for a mode, you must create a new
|
||||
class which inherits from ChannelModeParam and overload the IsValid function.
|
||||
Modes CMODE_OPERONLY, CMODE_ADMINONLY, and CMODE_REGISTERED already exist
|
||||
internally as classes, to overload the CanSet function to disable non opers
|
||||
from mlocking (or in CMODE_REGISTERED's case, anyone) from setting them.
|
||||
This should be added like:
|
||||
|
||||
ModeManager::AddChannelMode(new ChannelModeOper('O'));
|
||||
|
||||
The CMODE_FLOOD param also has its own class, but due to the wide range of
|
||||
valid parameters accepted across IRCds, your protocol module MUST have the
|
||||
IsValid function for this.
|
||||
|
||||
bool ChannelModeFlood::IsValid(const std::string &value) { }
|
||||
|
||||
5) Functions and Events
|
||||
|
||||
A brief word about functions and events. All events are captured using:
|
||||
|
||||
void moduleAddIRCDMsgs(void)
|
||||
{
|
||||
m = createMessage("NICK", anope_event_nick);
|
||||
addCoreMessage(IRCD,m);
|
||||
}
|
||||
|
||||
Each event should have a event handler if its important enough to be
|
||||
processed by services. All event functions should be formed like this:
|
||||
|
||||
int anope_event_capab(char *source, int ac, char **av)
|
||||
{
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
They will receive the source; this can be NULL at times depending on the
|
||||
event. Next, ac is the number of arguments that are in the event, and av
|
||||
holds the values for each; so av[0] is the first variable, av[1] will be
|
||||
the second one, and so on. Events are likely to pass to various upper
|
||||
level event handlers; see the previous ircd source for how they handle
|
||||
these events.
|
||||
|
||||
All commands are formed like this:
|
||||
|
||||
void anope_cmd_svsnoop(char *server, int set)
|
||||
{
|
||||
send_cmd(NULL, "SVSNOOP %s %s", server, (set ? "+" : "-"));
|
||||
}
|
||||
|
||||
They may take any number of arguments, depending on the command. They
|
||||
should eventually come to a send_cmd(); this root function is how
|
||||
commands are sent to the IRCd.
|
||||
|
||||
6) CAPAB/PROTOCTL
|
||||
|
||||
Most IRCD send a CAPAB or PROTOCTL line so that they can work out what
|
||||
the other end of the connection is capable of doing. Anope has a function
|
||||
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 module constructor you must tell Anope what the uplink is capable of that
|
||||
isn't already passed in the CAPAB/PROTOCTL, you do this by something similar to:
|
||||
|
||||
CapabType c[] = { CAPAB_NOQUIT, CAPAB_NICKIP, CAPAB_ZIP, CAPAB_TOKEN, CAPAB_SSJ3, CAPAB_NICK2, CAPAB_VL, CAPAB_TLKEXT, CAPAB_CHANMODE, CAPAB_SJB64, CAPAB_NICKCHARS };
|
||||
for (unsigned i = 0; i < 11; ++i)
|
||||
Capab.SetFlag(c[i]);
|
||||
|
||||
Anything else given to Anope in the CAPAB/PROTOCTL message will be handled later by CapabParse.
|
||||
|
||||
The available CAPAB options are:
|
||||
|
||||
--------------------------------------------------------------------------
|
||||
Define | Description
|
||||
----------------|------------|-----------|--------------------------------
|
||||
CAPAB_NOQUIT | NOQUIT protocol support
|
||||
CAPAB_TSMODE | Chanmodes are timestamped
|
||||
CAPAB_UNCONNECT | UNCONNECT protocol support
|
||||
CAPAB_NICKIP | IP sent in the NICK line
|
||||
CAPAB_NSJOIN | Smart SJOIN support
|
||||
CAPAB_ZIP | Support for gzipped links
|
||||
CAPAB_BURST | Supports BURST command
|
||||
CAPAB_TS3 | Support for TS3 protocol
|
||||
CAPAB_TS5 | Support for TS5 protocol
|
||||
CAPAB_DKEY | DH-Key exchange using DKEY
|
||||
CAPAB_DOZIP | Link traffic will be gzipped
|
||||
CAPAB_DODKEY | Do DKEY with this link
|
||||
CAPAB_QS | Supports quit storm removal
|
||||
CAPAB_SCS | String Cache System support
|
||||
CAPAB_PT4 | Support for PT4 protocol
|
||||
CAPAB_UID | Support for UIDs
|
||||
CAPAB_KNOCK | Supports KNOCK
|
||||
CAPAB_CLIENT | Supports CLIENT
|
||||
CAPAB_IPV6 | Support for IPv6 addresses
|
||||
CAPAB_SSJ5 | Smart Join protocol 5 support
|
||||
CAPAB_SN2 | Support for SN2 protocol
|
||||
CAPAB_VHOST | Supports VHOST protocol
|
||||
CAPAB_TOKEN | Supports s2s tokens
|
||||
CAPAB_SSJ3 | Smart Join protocol 3 support
|
||||
CAPAB_NICK2 | Support for extended NICK (v2)
|
||||
CAPAB_UMODE2 | Supports UMODE2 command
|
||||
CAPAB_VL | VLine information in info field
|
||||
CAPAB_TLKEXT | Not 8, but 10 params in TKL's
|
||||
CAPAB_CHANMODE | Channel modes are passed here
|
||||
CAPAB_SJB64 | SJOIN timestamps are base64 encoded
|
||||
CAPAB_NICKCHARS | Character set used by the IRCD for nicks
|
||||
|
||||
2) 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");
|
||||
}
|
||||
|
||||
3) Ensure that the CAPAB/PROTOCTL event his handled correctly.
|
||||
|
||||
A) In the function module constructor make sure that you have the
|
||||
following two lines:
|
||||
|
||||
m = createMessage("CAPAB", anope_event_capab);
|
||||
addCoreMessage(IRCD,m);
|
||||
|
||||
B) Add the function to handle the event
|
||||
|
||||
int anope_event_capab(char *source, int ac, char **av)
|
||||
{
|
||||
CapabParse(ac, av);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
This function should call the CapabParse function which parses
|
||||
the received CAPAB/PROTOCTL line.
|
||||
|
||||
7) IRCDProto Class
|
||||
|
||||
The IRCDProto class is set up like:
|
||||
|
||||
class MyIRCdProto : public IRCDProto { } ircdproto;
|
||||
|
||||
And told to Anope through the
|
||||
|
||||
pmodule_ircd_proto(&ircd_proto);
|
||||
|
||||
function.
|
||||
|
||||
This is used for sending out specific messages from Anope to your IRCd.
|
||||
A list of all of the valid function names to overload and their args
|
||||
are in services.h. If the protocol module you are editing is similar enough
|
||||
to the IRCd you are adding support for, many of these probably won't need to
|
||||
be changed.
|
||||
|
||||
+22
-1
@@ -1,6 +1,27 @@
|
||||
Anope MySQL Support
|
||||
-------------------
|
||||
|
||||
MySQL Support was removed in 1.9.0 until it can be better implemented moving forward.
|
||||
MySQL support was readded in version 1.9.2 In the form of three modules.
|
||||
|
||||
db_mysql_read - Allows you to load your databases from MySQL.
|
||||
db_mysql_write - Allows live updating of SQL tables whenever something is executed in Anope.
|
||||
db_mysql_execute - Allows executing of Anope commands via SQL.
|
||||
|
||||
To execute commands via SQL, you must insert the command into the anope_commands table, an example is as follows:
|
||||
|
||||
INSERT INTO `anope_commands` (nick, service, command) VALUES('Adam', 'NickServ', 'REGISTER qwerty Adam@anope.org');
|
||||
|
||||
By default, every 60 seconds Anope checks this table for commands to execute. When Anope sees a new command to execute, it checks the following.
|
||||
|
||||
If the nick given is -SQLUser, then the command gets executed by a special fake user within Anope called -SQLUser. -SQLUser has every permission and command available, there are no permission checks at all for this user, it can do anything.
|
||||
|
||||
If the nick is not -SQLUser, it checks to see if it is a registered nick. If it is, it sees if there are any users online using the NickCore of that nick.
|
||||
If there is a user online with that core the command gets executed as if that user executed it, and the reply goes to that user.
|
||||
If there isn't a user online with the core, it creates a fake user as the nick given to it, and gives to it the permissions the user would have if they were online and identified.
|
||||
If the nick is not registered, it checks to see if there is a user currently on that nick. If there is, it executes the command as that user, and the reply goes to that user.
|
||||
If the nick is not registered and no one is using the nick, it creates a fake user of the nick given to it, and gives it regular nonidentified user access.
|
||||
|
||||
Currently there is no way to check to see if a command was executed successfully within Anope from SQL (even if there was, the possibly update delay would be a problem).
|
||||
|
||||
IMPORTANT: When using db_mysql_write when you already have a database, you need to do an initial import of the data to SQL (as db_mysql_write only updates it when it is changed, it never actually mass-dumps all of your data into SQL). To do this, start Anope and execute /OperServ SQLSYNC.
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
Highlighted News in Anope 1.9
|
||||
=============================
|
||||
|
||||
* Removed MySQL Support (pending better implementation)
|
||||
* Added in live updating SQL and the ability to execute commands through SQL
|
||||
* Re-designed configuration file
|
||||
* Code refresh / rewrite into C++
|
||||
|
||||
|
||||
|
||||
+2
-4
@@ -1,7 +1,7 @@
|
||||
Anope -- a set of IRC services for IRC networks
|
||||
-----------------------------------------------
|
||||
|
||||
Anope is 2003-2009 Anope Team <team@anope.org>.
|
||||
Anope is 2003-2010 Anope Team <team@anope.org>.
|
||||
Based on Epona 2000-2002 PegSoft <epona@pegsoft.net>.
|
||||
Based on Services 1996-1999 Andrew Church <achurch@achurch.org>.
|
||||
|
||||
@@ -188,12 +188,10 @@ Table of Contents
|
||||
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)
|
||||
* InspIRCd 1.1 or later (including 1.2)
|
||||
* InspIRCd 1.1, 1.2, or 2.0
|
||||
* Ratbox 2.0.6 or later
|
||||
* UnrealIRCd 3.2 or later
|
||||
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
Legend:
|
||||
x = done
|
||||
? = unsure
|
||||
+ = in progress
|
||||
|
||||
1.9.2
|
||||
-----
|
||||
[x] Redo database insanity.
|
||||
[x] Move database load/save to a module
|
||||
[x] realtime SQL/whatever module using events (possibly ongoing)
|
||||
[x] flatfile save on a periodic timer
|
||||
[x] SANE password encryption - prefix password with the method it was encrypted with, allowing for *seamless* upgrading to different methods
|
||||
[x] Salted SHA256 (contact Special for this)
|
||||
[x] New database format (text, not binary - works very well for merging and so on)
|
||||
[x] generic database routines modules can use to create their own database
|
||||
[?] IRCd capability support: don't rely on CAPAB, provide an interface to turn capabilities on specifically
|
||||
[x] Socket subsystem needs some serious loving
|
||||
[x] Multiple sockets
|
||||
[x] Asynchronous, using select() (multiple engines? not really needed..)
|
||||
[x] Callbacks, event style, see also inspircd
|
||||
[x] generic way to check which modes a user has set (u->HasUmode(UMODE_OPER))
|
||||
[x] 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?)
|
||||
[x] Last used time on AKICK/access entries
|
||||
[x] Channel passwords seem to be of limited use, think of a more appropriate way to handle this
|
||||
[+] General options block, ability to turn LOGCHAN on from the config file..
|
||||
[x] Docs directory cleanup
|
||||
[x] Fix permanent channels support properly
|
||||
[x] CS SET INHABIT to keep pseudoclient in a channel after it empties to maintain banlists and such
|
||||
[x] Set forbidden channels +s
|
||||
[x] SendAkill should just take a pointer to the Akill class instead of millions of fields (same for some other stuff)
|
||||
[x] burn do_sjoin with fire
|
||||
[x] Channel access additions
|
||||
[x] Setter
|
||||
[x] Last used
|
||||
|
||||
Future
|
||||
------
|
||||
[ ] Asynchronous DNS
|
||||
[ ] CIDR Akills, session exceptions, etc
|
||||
[ ] Hashing system for storing just about everything needs to die
|
||||
[ ] Move a (lot) of stuff to class members as a defined interface rather than copypasta everywhere (ns_set, ns_saset!)
|
||||
[?] Remote identification (1.9.1? will this break stuff?)
|
||||
[ ] Language charset stuff, including collation (1.9.1? phoenix?)
|
||||
[ ] Add support for +k, +q, etc type umodes
|
||||
[ ] fantasy: allow replies/notifications to fantasy commands to go to the channel via notice
|
||||
[?] a way for a module to queue itself (or even another module) for unloading
|
||||
[ ] 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").
|
||||
[?] Update help to reflect the fact /msg memoserv set notify mail - works just fine ;)
|
||||
[ ] Useful/common "third party" modules to core distro
|
||||
[ ] NS AJOIN
|
||||
[+] Method to store listmodes (more generically than AKICK, too) for e.g. +beI and extbans, etc.
|
||||
[ ] Channel access additions
|
||||
[ ] Time added
|
||||
[ ] Time modified
|
||||
[ ] Expiry (useful?)
|
||||
[ ] 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)
|
||||
[ ] Merge NS INFO blah ALL with NS INFO blah, if you're requesting info, you really want the info anyway.
|
||||
[?] 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
|
||||
[x] AKILL/SGLINE/etc..
|
||||
[x] Setter
|
||||
[x] Time added
|
||||
[+] Time modified (can they be modified?)
|
||||
[ ] Time until expiry/expiry time (YES, time until expiry *instead of* expiry time, more human)
|
||||
[x] 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)
|
||||
[?] NS MARK, CS MARK. Allow multiple marks. Combine into OS MARK? (AKA os_info)
|
||||
[?] 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)")
|
||||
[?] OS INJECT
|
||||
[?] Drop CS SET ENTRYMSG, replace with a 'news' type system? (limited to a configured number of items, default 3)
|
||||
+1
-1
@@ -10,7 +10,7 @@ services.h: sysconf.h config.h extern.h
|
||||
extern.h: slist.h
|
||||
touch $@
|
||||
|
||||
pseudo.h: commands.h timers.h datafiles.h slist.h
|
||||
pseudo.h: commands.h timers.h slist.h
|
||||
touch $@
|
||||
|
||||
clean:
|
||||
|
||||
+113
-20
@@ -1,22 +1,87 @@
|
||||
|
||||
/* NickServ nickname structures. */
|
||||
|
||||
/** Flags set on NickAliases
|
||||
*/
|
||||
enum NickNameFlag
|
||||
{
|
||||
NS_BEGIN,
|
||||
|
||||
/* Nick may not be registered or used */
|
||||
NS_FORBIDDEN,
|
||||
/* Nick never expires */
|
||||
NS_NO_EXPIRE,
|
||||
/* This nick is being held after a kill by an enforcer client
|
||||
* or is being SVSHeld. Used by ns_release to determin if something
|
||||
* should be allowed to be released
|
||||
*/
|
||||
NS_HELD,
|
||||
/* We are taking over this nick, either by SVSNICK or KILL.
|
||||
* We are waiting for the confirmation of either of these actions to
|
||||
* proceed. This is checked in NickAlias::OnCancel
|
||||
*/
|
||||
NS_COLLIDED,
|
||||
|
||||
NS_END
|
||||
};
|
||||
|
||||
/** Flags set on NickCores
|
||||
*/
|
||||
enum NickCoreFlag
|
||||
{
|
||||
NI_BEGIN,
|
||||
|
||||
/* Kill others who take this nick */
|
||||
NI_KILLPROTECT,
|
||||
/* Dont recognize unless IDENTIFIED */
|
||||
NI_SECURE,
|
||||
/* Use PRIVMSG instead of NOTICE */
|
||||
NI_MSG,
|
||||
/* Don't allow user to change memo limit */
|
||||
NI_MEMO_HARDMAX,
|
||||
/* Notify of memos at signon and un-away */
|
||||
NI_MEMO_SIGNON,
|
||||
/* Notify of new memos when sent */
|
||||
NI_MEMO_RECEIVE,
|
||||
/* Don't show in LIST to non-servadmins */
|
||||
NI_PRIVATE,
|
||||
/* Don't show email in INFO */
|
||||
NI_HIDE_EMAIL,
|
||||
/* Don't show last seen address in INFO */
|
||||
NI_HIDE_MASK,
|
||||
/* Don't show last quit message in INFO */
|
||||
NI_HIDE_QUIT,
|
||||
/* Kill in 20 seconds instead of in 60 */
|
||||
NI_KILL_QUICK,
|
||||
/* Kill immediatly */
|
||||
NI_KILL_IMMED,
|
||||
/* User gets email on memo */
|
||||
NI_MEMO_MAIL,
|
||||
/* Don't show services access status */
|
||||
NI_HIDE_STATUS,
|
||||
/* Nickname is suspended */
|
||||
NI_SUSPENDED,
|
||||
/* Autoop nickname in channels */
|
||||
NI_AUTOOP,
|
||||
/* This nickcore is forbidden, which means the nickalias for it is aswell */
|
||||
NI_FORBIDDEN,
|
||||
|
||||
NI_END
|
||||
};
|
||||
|
||||
/** XXX: this really needs to die with fire and be merged with metadata into NickCore or something.
|
||||
*/
|
||||
class NickRequest
|
||||
class CoreExport NickRequest
|
||||
{
|
||||
public:
|
||||
NickRequest()
|
||||
{
|
||||
next = prev = NULL;
|
||||
nick = passcode = email = NULL;
|
||||
*password = 0;
|
||||
requested = lastmail = 0;
|
||||
}
|
||||
NickRequest(const std::string &nickname);
|
||||
|
||||
~NickRequest();
|
||||
|
||||
NickRequest *next, *prev;
|
||||
char *nick;
|
||||
char *passcode;
|
||||
char password[PASSMAX];
|
||||
std::string passcode;
|
||||
std::string password;
|
||||
char *email;
|
||||
time_t requested;
|
||||
time_t lastmail; /* Unsaved */
|
||||
@@ -24,10 +89,18 @@ class NickRequest
|
||||
|
||||
class NickCore;
|
||||
|
||||
class CoreExport NickAlias : public Extensible
|
||||
class CoreExport NickAlias : public Extensible, public Flags<NickNameFlag>
|
||||
{
|
||||
public:
|
||||
NickAlias();
|
||||
/** Default constructor
|
||||
* @param nickname The nick
|
||||
* @param nickcore The nickcofe for this nick
|
||||
*/
|
||||
NickAlias(const std::string &nickname, NickCore *nickcore);
|
||||
|
||||
/** Default destructor
|
||||
*/
|
||||
~NickAlias();
|
||||
|
||||
NickAlias *next, *prev;
|
||||
char *nick; /* Nickname */
|
||||
@@ -36,24 +109,44 @@ class CoreExport NickAlias : public Extensible
|
||||
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 */
|
||||
HostInfo hostinfo;
|
||||
|
||||
/** Release a nick
|
||||
* See the comment in users.cpp
|
||||
*/
|
||||
void Release();
|
||||
|
||||
/** This function is called when a user on this nick either disconnects or changes nick.
|
||||
* Note that the user isnt necessarially identified to this nick
|
||||
* See the comment in users.cpp
|
||||
* @param u The user
|
||||
*/
|
||||
void OnCancel(User *u);
|
||||
};
|
||||
|
||||
class CoreExport NickCore : public Extensible
|
||||
class CoreExport NickCore : public Extensible, public Flags<NickCoreFlag>
|
||||
{
|
||||
public:
|
||||
NickCore();
|
||||
/** Default constructor
|
||||
* @param display The display nick
|
||||
*/
|
||||
NickCore(const std::string &nickdisplay);
|
||||
|
||||
/** Default destructor
|
||||
*/
|
||||
~NickCore();
|
||||
|
||||
NickCore *next, *prev;
|
||||
|
||||
std::list<User *> Users;
|
||||
|
||||
char *display; /* How the nick is displayed */
|
||||
char pass[PASSMAX]; /* Password of the nicks */
|
||||
std::string pass; /* 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_*) */
|
||||
std::vector<std::string> access; /* Access list, vector of strings */
|
||||
MemoInfo memos;
|
||||
@@ -69,18 +162,18 @@ class CoreExport NickCore : public Extensible
|
||||
* @param cmdstr The string to check, e.g. botserv/set/private.
|
||||
* @return True if this opertype may run the specified command, false otherwise.
|
||||
*/
|
||||
bool HasCommand(const std::string &cmdstr) const;
|
||||
virtual bool HasCommand(const std::string &cmdstr) const;
|
||||
|
||||
/** Checks whether this account is a services oper or not.
|
||||
* @return True if this account is a services oper, false otherwise.
|
||||
*/
|
||||
bool IsServicesOper() const;
|
||||
virtual bool IsServicesOper() const;
|
||||
|
||||
/** Check whether this opertype has access to the given special permission.
|
||||
* @param privstr The priv to check for, e.g. users/auspex.
|
||||
* @return True if this opertype has the specified priv, false otherwise.
|
||||
*/
|
||||
bool HasPriv(const std::string &privstr) const;
|
||||
virtual bool HasPriv(const std::string &privstr) const;
|
||||
|
||||
/** Add an entry to the nick's access list
|
||||
*
|
||||
|
||||
+31
-15
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2008-2009 Robin Burchell <w00t@inspircd.org>
|
||||
* Copyright (C) 2008-2009 Anope Team <team@anope.org>
|
||||
* Copyright (C) 2008-2010 Robin Burchell <w00t@inspircd.org>
|
||||
* Copyright (C) 2008-2010 Anope Team <team@anope.org>
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
@@ -9,38 +9,55 @@
|
||||
*
|
||||
*/
|
||||
|
||||
/** Flags settable on a bot
|
||||
*/
|
||||
enum BotFlag
|
||||
{
|
||||
BI_BEGIN,
|
||||
|
||||
/* This bot can only be assigned by IRCops */
|
||||
BI_PRIVATE,
|
||||
/* The following flags are used to determin what bot really is what.
|
||||
* Since you *could* have ChanServ really named BotServ or something stupid,
|
||||
* this keeps track of them and allows them to be renamed in the config
|
||||
* at any time, even if they already exist in the database
|
||||
*/
|
||||
BI_CHANSERV,
|
||||
BI_BOTSERV,
|
||||
BI_HOSTSERV,
|
||||
BI_OPERSERV,
|
||||
BI_MEMOSERV,
|
||||
BI_NICKSERV,
|
||||
BI_GLOBAL,
|
||||
|
||||
BI_END
|
||||
};
|
||||
|
||||
struct CommandHash;
|
||||
|
||||
class CoreExport BotInfo
|
||||
class CoreExport BotInfo : public Extensible, public Flags<BotFlag>
|
||||
{
|
||||
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 */
|
||||
std::string nick; /* Nickname of the bot */
|
||||
std::string user; /* Its user name */
|
||||
std::string host; /* Its hostname */
|
||||
std::string real; /* Its real name */
|
||||
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);
|
||||
BotInfo(const std::string &nick, const std::string &user = "", const std::string &host = "", const std::string &real = "");
|
||||
|
||||
/** Destroy a bot, clearing up appropriately.
|
||||
*/
|
||||
@@ -68,4 +85,3 @@ class CoreExport BotInfo
|
||||
*/
|
||||
void UnAssign(User *u, ChannelInfo *ci);
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,264 @@
|
||||
/* Channel support
|
||||
*
|
||||
* (C) 2008-2010 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
struct UserData
|
||||
{
|
||||
UserData()
|
||||
{
|
||||
lastline = NULL;
|
||||
last_use = last_start = time(NULL);
|
||||
lines = times = 0;
|
||||
}
|
||||
|
||||
virtual ~UserData() { delete [] lastline; }
|
||||
|
||||
/* Data validity */
|
||||
time_t last_use;
|
||||
|
||||
/* for flood kicker */
|
||||
int16 lines;
|
||||
time_t last_start;
|
||||
|
||||
/* for repeat kicker */
|
||||
char *lastline;
|
||||
int16 times;
|
||||
};
|
||||
|
||||
struct UserContainer
|
||||
{
|
||||
User *user;
|
||||
UserData ud;
|
||||
Flags<ChannelModeName> *Status;
|
||||
|
||||
UserContainer(User *u) : user(u) { }
|
||||
virtual ~UserContainer() { }
|
||||
};
|
||||
|
||||
typedef std::list<UserContainer *> CUserList;
|
||||
|
||||
enum ChannelFlags
|
||||
{
|
||||
/* Channel still exists when emptied */
|
||||
CH_PERSIST,
|
||||
/* If set the channel is syncing users (channel was just created) and it should not be deleted */
|
||||
CH_SYNCING
|
||||
};
|
||||
|
||||
class CoreExport Channel : public Extensible, public Flags<ChannelFlags>
|
||||
{
|
||||
private:
|
||||
/** A map of channel modes with their parameters set on this channel
|
||||
*/
|
||||
std::map<ChannelModeName, std::string> Params;
|
||||
|
||||
/* Modes set on the channel */
|
||||
std::bitset<128> modes;
|
||||
|
||||
public:
|
||||
/** Default constructor
|
||||
* @param name The channel name
|
||||
* @param ts The time the channel was created
|
||||
*/
|
||||
Channel(const std::string &name, time_t ts = time(NULL));
|
||||
|
||||
/** Default destructor
|
||||
*/
|
||||
~Channel();
|
||||
|
||||
Channel *next, *prev;
|
||||
std::string name; /* Channel name */
|
||||
ChannelInfo *ci; /* Corresponding ChannelInfo */
|
||||
time_t creation_time; /* When channel was created */
|
||||
char *topic;
|
||||
std::string topic_setter;
|
||||
time_t topic_time; /* When topic was set */
|
||||
|
||||
EList *bans;
|
||||
EList *excepts;
|
||||
EList *invites;
|
||||
|
||||
/* List of users in the channel */
|
||||
CUserList users;
|
||||
|
||||
BanData *bd;
|
||||
|
||||
time_t server_modetime; /* Time of last server MODE */
|
||||
time_t chanserv_modetime; /* Time of last check_modes() */
|
||||
int16 server_modecount; /* Number of server MODEs this second */
|
||||
int16 chanserv_modecount; /* Number of check_mode()'s this sec */
|
||||
int16 bouncy_modes; /* Did we fail to set modes here? */
|
||||
int16 topic_sync; /* Is the topic in sync? */
|
||||
|
||||
/** Restore the channel topic, set mlock (key), set stickied bans, etc
|
||||
*/
|
||||
void Sync();
|
||||
|
||||
/** Join a user internally to the channel
|
||||
* @param u The user
|
||||
*/
|
||||
void JoinUser(User *u);
|
||||
|
||||
/** Remove a user internally from the channel
|
||||
* @param u The user
|
||||
*/
|
||||
void DeleteUser(User *u);
|
||||
|
||||
/** Check if the user is on the channel
|
||||
* @param u The user
|
||||
* @return A user container if found, else NULL
|
||||
*/
|
||||
UserContainer *FindUser(User *u);
|
||||
|
||||
/** Check if a user has a status on a channel
|
||||
* @param u The user
|
||||
* @param cms The status mode, or NULL to represent no status
|
||||
* @return true or false
|
||||
*/
|
||||
bool HasUserStatus(User *u, ChannelModeStatus *cms);
|
||||
|
||||
/** Check if a user has a status on a channel
|
||||
* Use the overloaded function for ChannelModeStatus* to check for no status
|
||||
* @param u The user
|
||||
* @param Name The Mode name, eg CMODE_OP, CMODE_VOICE
|
||||
* @return true or false
|
||||
*/
|
||||
bool HasUserStatus(User *u, ChannelModeName Name);
|
||||
|
||||
/** See if the channel has any modes at all
|
||||
* @return true or false
|
||||
*/
|
||||
inline const bool HasModes() const { return modes.count(); }
|
||||
|
||||
/** See if a channel has a mode
|
||||
* @param Name The mode name
|
||||
* @return true or false
|
||||
*/
|
||||
bool HasMode(ChannelModeName Name);
|
||||
|
||||
/** Set a mode internally on a channel, this is not sent out to the IRCd
|
||||
* @param cm The mode
|
||||
* @param param The param
|
||||
* @param EnforceMLock true if mlocks should be enforced, false to override mlock
|
||||
*/
|
||||
void SetModeInternal(ChannelMode *cm, const std::string ¶m = "", bool EnforceMLock = true);
|
||||
|
||||
/** Remove a mode internally on a channel, this is not sent out to the IRCd
|
||||
* @param cm The mode
|
||||
* @param param The param
|
||||
* @param EnforceMLock true if mlocks should be enforced, false to override mlock
|
||||
*/
|
||||
void RemoveModeInternal(ChannelMode *cm, const std::string ¶m = "", bool EnforceMLock = true);
|
||||
|
||||
/** Set a mode on a channel
|
||||
* @param bi The client setting the modes
|
||||
* @param cm The mode
|
||||
* @param param Optional param arg for the mode
|
||||
* @param EnforceMLock true if mlocks should be enforced, false to override mlock
|
||||
*/
|
||||
void SetMode(BotInfo *bi, ChannelMode *cm, const std::string ¶m = "", bool EnforceMLock = true);
|
||||
|
||||
/**
|
||||
* Set a mode on a channel
|
||||
* @param bi The client setting the modes
|
||||
* @param Name The mode name
|
||||
* @param param Optional param arg for the mode
|
||||
* @param EnforceMLock true if mlocks should be enforced, false to override mlock
|
||||
*/
|
||||
void SetMode(BotInfo *bi, ChannelModeName Name, const std::string ¶m = "", bool EnforceMLock = true);
|
||||
|
||||
/**
|
||||
* Set a mode on a channel
|
||||
* @param bi The client setting the modes
|
||||
* @param Mode The mode
|
||||
* @param param Optional param arg for the mode
|
||||
* @param EnforceMLock true if mlocks should be enforced, false to override mlock
|
||||
*/
|
||||
void SetMode(BotInfo *bi, char Mode, const std::string ¶m = "", bool EnforceMLock = true);
|
||||
|
||||
/** Remove a mode from a channel
|
||||
* @param bi The client setting the modes
|
||||
* @param cm The mode
|
||||
* @param param Optional param arg for the mode
|
||||
* @param EnforceMLock true if mlocks should be enforced, false to override mlock
|
||||
*/
|
||||
void RemoveMode(BotInfo *bi, ChannelMode *cm, const std::string ¶m = "", bool EnforceMLock = true);
|
||||
|
||||
/**
|
||||
* Remove a mode from a channel
|
||||
* @param bi The client setting the modes
|
||||
* @param Name The mode name
|
||||
* @param param Optional param arg for the mode
|
||||
* @param EnforceMLock true if mlocks should be enforced, false to override mlock
|
||||
*/
|
||||
void RemoveMode(BotInfo *bi, ChannelModeName Name, const std::string ¶m = "", bool EnforceMLock = true);
|
||||
/**
|
||||
* Remove a mode from a channel
|
||||
* @param bi The client setting the modes
|
||||
* @param Mode The mode
|
||||
* @param param Optional param arg for the mode
|
||||
* @param EnforceMLock true if mlocks should be enforced, false to override mlock
|
||||
*/
|
||||
void RemoveMode(BotInfo *bi, char Mode, const std::string ¶m = "", bool EnforceMLock = true);
|
||||
|
||||
/** Clear all the modes from the channel
|
||||
* @param bi The client unsetting the modes
|
||||
*/
|
||||
void ClearModes(BotInfo *bi = NULL);
|
||||
|
||||
/** Clear all the bans from the channel
|
||||
* @param bi The client unsetting the modes
|
||||
*/
|
||||
void ClearBans(BotInfo *bi = NULL);
|
||||
|
||||
/** Clear all the excepts from the channel
|
||||
* @param bi The client unsetting the modes
|
||||
*/
|
||||
void ClearExcepts(BotInfo *bi = NULL);
|
||||
|
||||
/** Clear all the invites from the channel
|
||||
* @param bi The client unsetting the modes
|
||||
*/
|
||||
void ClearInvites(BotInfo *bi = NULL);
|
||||
|
||||
/** Get a param from the channel
|
||||
* @param Name The mode
|
||||
* @param Target a string to put the param into
|
||||
* @return true on success
|
||||
*/
|
||||
const bool GetParam(ChannelModeName Name, std::string &Target);
|
||||
|
||||
/** Check if a mode is set and has a param
|
||||
* @param Name The mode
|
||||
*/
|
||||
const bool HasParam(ChannelModeName Name);
|
||||
/** Set a string of modes on the channel
|
||||
* @param bi The client setting the modes
|
||||
* @param EnforceMLock Should mlock be enforced on this mode change
|
||||
* @param cmodes The modes to set
|
||||
*/
|
||||
void SetModes(BotInfo *bi, bool EnforceMLock, const char *cmodes, ...);
|
||||
|
||||
/** Kick a user from a channel internally
|
||||
* @param source The sender of the kick
|
||||
* @param nick The nick being kicked
|
||||
* @param reason The reason for the kick
|
||||
*/
|
||||
void KickInternal(const std::string &source, const std::string &nick, const std::string &reason);
|
||||
|
||||
/** Kick a user from the channel
|
||||
* @param bi The sender, can be NULL for the service bot for this channel
|
||||
* @param u The user being kicked
|
||||
* @param reason The reason for the kick
|
||||
* @return true if the kick was scucessful, false if a module blocked the kick
|
||||
*/
|
||||
bool Kick(BotInfo *bi, User *u, const char *reason = NULL, ...);
|
||||
};
|
||||
|
||||
+3
-3
@@ -1,6 +1,6 @@
|
||||
/* Declarations for command data.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2010 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
@@ -21,8 +21,8 @@
|
||||
*/
|
||||
|
||||
extern MDE Command *lookup_cmd(Command *list, char *name);
|
||||
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 mod_help_cmd(char *service, User *u, CommandHash *cmdTable[], const char *cmd);
|
||||
extern MDE void mod_run_cmd(const std::string &service, User *u, CommandHash *cmdTable[], const char *cmd);
|
||||
//extern MDE void do_help_limited(char *service, User * u, Command * c);
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
+3
-35
@@ -1,6 +1,6 @@
|
||||
/* Services configuration.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2010 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
@@ -22,20 +22,9 @@
|
||||
|
||||
/******* General configuration *******/
|
||||
|
||||
/* Name of configuration file (in Services directory) */
|
||||
#define SERVICES_CONF "services.conf"
|
||||
|
||||
/* Name of log file (in Services directory) */
|
||||
#define LOG_FILENAME "services.log"
|
||||
|
||||
/* Maximum amount of data from/to the network to buffer (bytes). */
|
||||
#define NET_BUFSIZE 65536
|
||||
|
||||
/******* OperServ configuration *******/
|
||||
|
||||
/* Define this to enable OperServ's svs commands (superadmin only). */
|
||||
#define USE_OSSVS
|
||||
|
||||
/******************* END OF USER-CONFIGURABLE SECTION ********************/
|
||||
|
||||
/* Size of input buffer (note: this is different from BUFSIZ)
|
||||
@@ -43,29 +32,8 @@
|
||||
* things will happen. */
|
||||
#define BUFSIZE 1024
|
||||
|
||||
/* Extra warning: If you change CHANMAX, your ChanServ database will be
|
||||
* unusable.
|
||||
*/
|
||||
|
||||
/* Maximum length of a channel name, including the trailing null. Any
|
||||
* channels with a length longer than (CHANMAX-1) including the leading #
|
||||
* will not be usable with ChanServ. */
|
||||
#define CHANMAX 64
|
||||
|
||||
/* Maximum length of a nickname, including the trailing null. This MUST be
|
||||
* at least one greater than the maximum allowable nickname length on your
|
||||
* network, or people will run into problems using Services! The default
|
||||
* (32) works with all servers I know of. */
|
||||
#define NICKMAX 32
|
||||
|
||||
/* Maximum length of a password */
|
||||
#define PASSMAX 32
|
||||
|
||||
/* Maximum length of a username */
|
||||
#define USERMAX 10
|
||||
|
||||
/* Maximum length of a domain */
|
||||
#define HOSTMAX 64
|
||||
/* Maximum amount of data from/to the network to buffer (bytes). */
|
||||
#define NET_BUFSIZE 65536
|
||||
|
||||
/**************************************************************************/
|
||||
|
||||
|
||||
+382
-1
@@ -374,6 +374,387 @@ class ServerConfig
|
||||
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 &);
|
||||
|
||||
|
||||
|
||||
/** Below here is a list of variables which contain the config files values
|
||||
*/
|
||||
/* IRCd module in use */
|
||||
char *IRCDModule;
|
||||
|
||||
/* Host to connect to **/
|
||||
char *LocalHost;
|
||||
/* List of uplink servers to try and connect to */
|
||||
std::list<Uplink *> Uplinks;
|
||||
|
||||
/* Our server name */
|
||||
char *ServerName;
|
||||
/* Our servers description */
|
||||
char *ServerDesc;
|
||||
/* The username/ident of services clients */
|
||||
char *ServiceUser;
|
||||
/* The hostname if services clients */
|
||||
char *ServiceHost;
|
||||
|
||||
/* Help channel, ops here get usermode +h **/
|
||||
char *HelpChannel;
|
||||
/* Log channel */
|
||||
char *LogChannel;
|
||||
/* Name of the network were on */
|
||||
char *NetworkName;
|
||||
/* The max legnth of nicks */
|
||||
unsigned NickLen;
|
||||
/* Max length of idents */
|
||||
unsigned UserLen;
|
||||
/* Max lenght of hostnames */
|
||||
unsigned HostLen;
|
||||
|
||||
/* Max length of passwords */
|
||||
unsigned PassLen;
|
||||
|
||||
/* NickServ Name */
|
||||
char *s_NickServ;
|
||||
/* ChanServ Name */
|
||||
char *s_ChanServ;
|
||||
/* MemoServ Name */
|
||||
char *s_MemoServ;
|
||||
/* BotServ Name */
|
||||
char *s_BotServ;
|
||||
/* OperServ name */
|
||||
char *s_OperServ;
|
||||
/* Global name */
|
||||
char *s_GlobalNoticer;
|
||||
/* NickServs realname */
|
||||
char *desc_NickServ;
|
||||
/* ChanServ realname */
|
||||
char *desc_ChanServ;
|
||||
/* MemoServ relname */
|
||||
char *desc_MemoServ;
|
||||
/* BotServ realname */
|
||||
char *desc_BotServ;
|
||||
/* OperServ realname */
|
||||
char *desc_OperServ;
|
||||
/* Global realname */
|
||||
char *desc_GlobalNoticer;
|
||||
|
||||
/* HostServ Name */
|
||||
char *s_HostServ;
|
||||
/* HostServ realname */
|
||||
char *desc_HostServ;
|
||||
|
||||
/* Filename for the PID file */
|
||||
char *PIDFilename;
|
||||
/* MOTD filename */
|
||||
char *MOTDFilename;
|
||||
|
||||
/* True if its ok to not be able to save backs */
|
||||
bool NoBackupOkay;
|
||||
/* Do password checking when new people register */
|
||||
bool StrictPasswords;
|
||||
/* How many times you're allowed to give a bad password before being killed */
|
||||
unsigned BadPassLimit;
|
||||
/* How long before bad passwords are forgotten */
|
||||
time_t BadPassTimeout;
|
||||
/* Delay between automatic database updates */
|
||||
time_t UpdateTimeout;
|
||||
/* Delay between checks for expired nicks and channels */
|
||||
time_t ExpireTimeout;
|
||||
/* How long to wait for something from the uplink, this is passed to select() */
|
||||
time_t ReadTimeout;
|
||||
/* How often to send program errors */
|
||||
time_t WarningTimeout;
|
||||
/* How long to process things such as timers to see if there is anything to calll */
|
||||
time_t TimeoutCheck;
|
||||
/* Num of days logfiles are kept */
|
||||
int KeepLogs;
|
||||
/* Number of days backups are kept */
|
||||
int KeepBackups;
|
||||
/* Forbidding requires a reason */
|
||||
bool ForceForbidReason;
|
||||
/* Services should use privmsgs instead of notices */
|
||||
bool UsePrivmsg;
|
||||
/* Services only respond to full PRIVMSG client@services.server.name messages */
|
||||
bool UseStrictPrivMsg;
|
||||
/* Dump a core file if we crash */
|
||||
bool DumpCore;
|
||||
/* Log users connecting/existing/changing nicks */
|
||||
bool LogUsers;
|
||||
/* Number of seconds between consecutive uses of the REGISTER command
|
||||
* Not to be confused with NSRegDelay */
|
||||
unsigned NickRegDelay;
|
||||
/* Max number if news items allowed in the list */
|
||||
unsigned NewsCount;
|
||||
/* Default mlock modes */
|
||||
std::string MLock;
|
||||
/* Default botmodes on channels, defaults to ao */
|
||||
std::string BotModes;
|
||||
/* How many times to try and reconnect to the uplink before giving up */
|
||||
unsigned MaxRetries;
|
||||
/* How long to wait between connection attempts */
|
||||
int RetryWait;
|
||||
|
||||
/* Services can use email */
|
||||
bool UseMail;
|
||||
/* Path to the sendmail executable */
|
||||
char *SendMailPath;
|
||||
/* Address to send from */
|
||||
char *SendFrom;
|
||||
/* Only opers can have services send mail */
|
||||
bool RestrictMail;
|
||||
/* Delay between sending mail */
|
||||
time_t MailDelay;
|
||||
/* Don't quote the To: address */
|
||||
bool DontQuoteAddresses;
|
||||
|
||||
/* Prefix of guest nicks when a user gets forced off of a nick */
|
||||
char *NSGuestNickPrefix;
|
||||
/* Allow users to set kill immed on */
|
||||
bool NSAllowKillImmed;
|
||||
/* Don't allow nicks to use /ns group to regroup nicks */
|
||||
bool NSNoGroupChange;
|
||||
/* Default flags for newly registered nicks */
|
||||
Flags<NickCoreFlag> NSDefFlags;
|
||||
/* Default language used by services */
|
||||
unsigned NSDefLanguage;
|
||||
/* Users must be connected this long before they can register
|
||||
* Not to be confused with NickRegDelay */
|
||||
time_t NSRegDelay;
|
||||
/* Time before the registering mail will be resent */
|
||||
time_t NSResendDelay;
|
||||
/* How long before nicks expir */
|
||||
time_t NSExpire;
|
||||
/* Time before NickRequests expire */
|
||||
time_t NSRExpire;
|
||||
/* Force email when registering */
|
||||
bool NSForceEmail;
|
||||
/* Max number of nicks in a group */
|
||||
int NSMaxAliases;
|
||||
/* Max number of allowed strings on the access list */
|
||||
unsigned NSAccessMax;
|
||||
/* Enforcer client user name */
|
||||
char *NSEnforcerUser;
|
||||
/* Enforcer client hostname */
|
||||
char *NSEnforcerHost;
|
||||
/* How long before recovered nicks are released */
|
||||
time_t NSReleaseTimeout;
|
||||
/* /nickserv list is oper only */
|
||||
bool NSListOpersOnly;
|
||||
/* Max number of entries that can be returned from the list command */
|
||||
unsigned NSListMax;
|
||||
/* Only allow usermode +a etc on real services admins */
|
||||
bool NSSecureAdmins;
|
||||
/* Services opers must be /operd on the ircd aswell */
|
||||
bool NSStrictPrivileges;
|
||||
/* Use email to verify new users registering */
|
||||
bool NSEmailReg;
|
||||
/* Set the proper channel modes on users when they identify */
|
||||
bool NSModeOnID;
|
||||
/* Add the users hostnask their access list when they register */
|
||||
bool NSAddAccessOnReg;
|
||||
|
||||
/* Default flags for newly registered channels */
|
||||
Flags<ChannelInfoFlag> CSDefFlags;
|
||||
/* Max number of channels a user can own */
|
||||
unsigned CSMaxReg;
|
||||
/* Time before a channel expires */
|
||||
time_t CSExpire;
|
||||
/* Default ban type to use for channels */
|
||||
int CSDefBantype;
|
||||
/* Max number of entries allowed on channel access lists */
|
||||
unsigned CSAccessMax;
|
||||
/* Max number of entries allowed on autokick lists */
|
||||
unsigned CSAutokickMax;
|
||||
/* Default autokick reason */
|
||||
char *CSAutokickReason;
|
||||
/* Time ChanServ should stay in the channel to hold it to keep users from getting in */
|
||||
time_t CSInhabit;
|
||||
/* ChanServ's LIST command is oper only */
|
||||
bool CSListOpersOnly;
|
||||
/* Max number of entries allowed to be returned from the LIST command */
|
||||
unsigned CSListMax;
|
||||
/* true to make ChanServ oper only */
|
||||
bool CSOpersOnly;
|
||||
|
||||
/* Max number of memos allowed */
|
||||
unsigned MSMaxMemos;
|
||||
/* Time you must wait between sending memos */
|
||||
time_t MSSendDelay;
|
||||
/* Notify all of the aliases of the core the memo was sent to */
|
||||
bool MSNotifyAll;
|
||||
/* Who can use memos reciepts */
|
||||
unsigned MSMemoReceipt;
|
||||
|
||||
/* Defai;t BotServ flags */
|
||||
Flags<BotServFlag> BSDefFlags;
|
||||
/* How long before botserv forgets a user. This is used for flood kickers etc */
|
||||
time_t BSKeepData;
|
||||
/* Min number of users to have in the channel before the service bot joins */
|
||||
unsigned BSMinUsers;
|
||||
/* Max number of words allowed on the badwordslist */
|
||||
unsigned BSBadWordsMax;
|
||||
/* BotServ bot only joins if it would normally allowed to, abides by bans etc */
|
||||
bool BSSmartJoin;
|
||||
/* Dont tell users what badword they used */
|
||||
bool BSGentleBWReason;
|
||||
/* Case sensitive badwords matching */
|
||||
bool BSCaseSensitive;
|
||||
/* Char to use for the fantasy char, eg ! */
|
||||
char *BSFantasyCharacter;
|
||||
|
||||
/* Only show /stats o to opers */
|
||||
bool HideStatsO;
|
||||
/* Send out a global when services shut down or restart */
|
||||
bool GlobalOnCycle;
|
||||
/* Don't include the opers name in globals */
|
||||
bool AnonymousGlobal;
|
||||
/* Dont allow users to register nicks with oper names in them */
|
||||
bool RestrictOperNicks;
|
||||
/* Message to send when shutting down */
|
||||
char *GlobalOnCycleMessage;
|
||||
/* Message to send when starting up */
|
||||
char *GlobalOnCycleUP;
|
||||
/* Super admin is allowed */
|
||||
bool SuperAdmin;
|
||||
/* Log things said through ACT/SAY */
|
||||
bool LogBot;
|
||||
/* Log when new user max is reached */
|
||||
bool LogMaxUsers;
|
||||
/* Default expiry time for akills */
|
||||
time_t AutokillExpiry;
|
||||
/* Default expiry time for chan kills */
|
||||
time_t ChankillExpiry;
|
||||
/* Default expiry time for SGLine Expire */
|
||||
time_t SGLineExpiry;
|
||||
/* Default expiry time for SQLines */
|
||||
time_t SQLineExpiry;
|
||||
/* Default expiry time for SZLine */
|
||||
time_t SZLineExpiry;
|
||||
/* Actually akill the user when the akill is added */
|
||||
bool AkillOnAdd;
|
||||
/* Kill users on SGline */
|
||||
bool KillonSGline;
|
||||
/* Kill users on SQline */
|
||||
bool KillonSQline;
|
||||
/* Send a WALLOPS/GLOBOPS when a user opers */
|
||||
bool WallOper;
|
||||
/* Send a WALLOPS/GLOBOPS when a nonoper tries to use OperServ */
|
||||
bool WallBadOS;
|
||||
/* Send a WALLOPS/GLOBOPS when someone uses the GLOBAL command */
|
||||
bool WallOSGlobal;
|
||||
/* Send a WALLOPS/GLOBOPS when someone uses the MODE command */
|
||||
bool WallOSMode;
|
||||
/* Send a WALLOPS/GLOBOPS when someone uses the CLEARMODES command */
|
||||
bool WallOSClearmodes;
|
||||
/* Send a WALLOPS/GLOBOPS when someone uses the KICK command */
|
||||
bool WallOSKick;
|
||||
/* Send a WALLOPS/GLOBOPS when someone uses the AKILL command */
|
||||
bool WallOSAkill;
|
||||
/* Send a WALLOPS/GLOBOPS when someone uses the SGLINE command */
|
||||
bool WallOSSGLine;
|
||||
/* Send a WALLOPS/GLOBOPS when someone uses the SQLINE command */
|
||||
bool WallOSSQLine;
|
||||
/* Send a WALLOPS/GLOBOPS when someone uses the SZLINE command */
|
||||
bool WallOSSZLine;
|
||||
/* Send a WALLOPS/GLOBOPS when someone uses the NOOP command */
|
||||
bool WallOSNoOp;
|
||||
/* Send a WALLOPS/GLOBOPS when when someone uses the JUPE command */
|
||||
bool WallOSJupe;
|
||||
/* Send a WALLOPS/GLOBOPS when an akill expires */
|
||||
bool WallAkillExpire;
|
||||
/* Send a WALLOPS/GLOBOPS when SGLines expire */
|
||||
bool WallSGLineExpire;
|
||||
/* Send a WALLOPS/GLOBOPS when SQLines expire */
|
||||
bool WallSQLineExpire;
|
||||
/* Send a WALLOPS/GLOBOPS when SZLines expire */
|
||||
bool WallSZLineExpire;
|
||||
/* Send a WALLOPS/GLOBOPS when exceptions expire */
|
||||
bool WallExceptionExpire;
|
||||
/* Send a WALLOPS/GLOBOPS when DROP is used */
|
||||
bool WallDrop;
|
||||
/* Send a WALLOPS/GLOBOPS when FORBID is used */
|
||||
bool WallForbid;
|
||||
/* Send a WALLOPS/GLOBOPS when GETPASS is used */
|
||||
bool WallGetpass;
|
||||
/* Send a WALLOPS/GLOBOPS when SETPASS is used */
|
||||
bool WallSetpass;
|
||||
/* Add the akillers nick to the akill reason */
|
||||
bool AddAkiller;
|
||||
|
||||
/* Limit sessions */
|
||||
bool LimitSessions;
|
||||
/* The default session limit */
|
||||
unsigned DefSessionLimit;
|
||||
/* How long before exceptions expire */
|
||||
time_t ExceptionExpiry;
|
||||
/* How many times to kill before adding an KILL */
|
||||
int MaxSessionKill;
|
||||
/* Max limit that can be used for exceptions */
|
||||
unsigned MaxSessionLimit;
|
||||
/* How long session akills should last */
|
||||
time_t SessionAutoKillExpiry;
|
||||
/* Reason to use for session kills */
|
||||
char *SessionLimitExceeded;
|
||||
/* Optional second reason */
|
||||
char *SessionLimitDetailsLoc;
|
||||
/* OperServ requires you to be an operator */
|
||||
bool OSOpersOnly;
|
||||
|
||||
/* List of modules to autoload */
|
||||
std::list<std::string> ModulesAutoLoad;
|
||||
/* Encryption modules */
|
||||
std::list<std::string> EncModuleList;
|
||||
/* Database modules */
|
||||
std::list<std::string> DBModuleList;
|
||||
/* HostServ Core Modules */
|
||||
std::list<std::string> HostServCoreModules;
|
||||
/* MemoServ Core Modules */
|
||||
std::list<std::string> MemoServCoreModules;
|
||||
/* BotServ Core Modules */
|
||||
std::list<std::string> BotServCoreModules;
|
||||
/* OperServ Core Modules */
|
||||
std::list<std::string> OperServCoreModules;
|
||||
/* NickServ Core Modules */
|
||||
std::list<std::string> NickServCoreModules;
|
||||
/* ChanServ Core Modules */
|
||||
std::list<std::string> ChanServCoreModules;
|
||||
|
||||
/* Default defcon level */
|
||||
int DefConLevel;
|
||||
/* Timeout before defcon is reset */
|
||||
time_t DefConTimeOut;
|
||||
/* Session limiit to use when using defcon */
|
||||
int DefConSessionLimit;
|
||||
/* How long to add akills for defcon */
|
||||
time_t DefConAKILL;
|
||||
/* Chan modes for defcon */
|
||||
char *DefConChanModes;
|
||||
/* Should we global on defcon */
|
||||
bool GlobalOnDefcon;
|
||||
/* Should we send DefconMessage aswell? */
|
||||
bool GlobalOnDefconMore;
|
||||
/* Message to send when defcon is off */
|
||||
char *DefConOffMessage;
|
||||
/* Message to send when defcon is on*/
|
||||
char *DefconMessage;
|
||||
/* Reason to akill clients for defcon */
|
||||
char *DefConAkillReason;
|
||||
|
||||
/* User keys to use for generating random hashes for pass codes etc */
|
||||
long unsigned int UserKey1;
|
||||
long unsigned int UserKey2;
|
||||
long unsigned int UserKey3;
|
||||
|
||||
/* Numeric */
|
||||
char *Numeric;
|
||||
/* Array of ulined servers */
|
||||
char **Ulines;
|
||||
/* Number of ulines */
|
||||
int NumUlines;
|
||||
|
||||
/* List of available opertypes */
|
||||
std::list<OperType *> MyOperTypes;
|
||||
/* List of pairs of opers and their opertype from the config */
|
||||
std::list<std::pair<std::string, std::string> > Opers;
|
||||
};
|
||||
|
||||
/** This class can be used on its own to represent an exception, or derived to represent a module-specific exception.
|
||||
@@ -395,7 +776,7 @@ class ConfigException : public CoreException
|
||||
* Actually no, it does nothing. Never mind.
|
||||
* @throws Nothing!
|
||||
*/
|
||||
virtual ~ConfigException() throw() { };
|
||||
virtual ~ConfigException() throw() { }
|
||||
};
|
||||
|
||||
#define CONF_NO_ERROR 0x000000
|
||||
|
||||
@@ -1,71 +0,0 @@
|
||||
/* Database file descriptor structure and file handling routine prototypes.
|
||||
*
|
||||
* (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.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef DATAFILES_H
|
||||
#define DATAFILES_H
|
||||
|
||||
#ifndef _WIN32
|
||||
#include <sys/param.h>
|
||||
#endif
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
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 */
|
||||
};
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/* Prototypes and macros: */
|
||||
|
||||
E void check_file_version(dbFILE *f);
|
||||
E int get_file_version(dbFILE *f);
|
||||
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();
|
||||
|
||||
#define read_db(f,buf,len) (fread((buf),1,(len),(f)->fp))
|
||||
#define write_db(f,buf,len) (fwrite((buf),1,(len),(f)->fp))
|
||||
#define getc_db(f) (fgetc((f)->fp))
|
||||
|
||||
E int read_int16(uint16 *ret, dbFILE *f);
|
||||
E int write_int16(uint16 val, dbFILE *f);
|
||||
E int read_int32(uint32 *ret, dbFILE *f);
|
||||
E int write_int32(uint32 val, dbFILE *f);
|
||||
E int read_ptr(void **ret, dbFILE *f);
|
||||
E int write_ptr(const void *ptr, dbFILE *f);
|
||||
E int read_string(char **ret, dbFILE *f);
|
||||
E int write_string(const char *s, dbFILE *f);
|
||||
|
||||
#define read_int8(ret,f) ((*(ret)=fgetc((f)->fp))==EOF ? -1 : 0)
|
||||
#define write_int8(val,f) (fputc((val),(f)->fp)==EOF ? -1 : 0)
|
||||
#define read_buffer(buf,f) (read_db((f),(buf),sizeof(buf)) == sizeof(buf))
|
||||
#define write_buffer(buf,f) (write_db((f),(buf),sizeof(buf)) == sizeof(buf))
|
||||
#define read_buflen(buf,len,f) (read_db((f),(buf),(len)) == (len))
|
||||
#define write_buflen(buf,len,f) (write_db((f),(buf),(len)) == (len))
|
||||
#define read_variable(var,f) (read_db((f),&(var),sizeof(var)) == sizeof(var))
|
||||
#define write_variable(var,f) (write_db((f),&(var),sizeof(var)) == sizeof(var))
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
#endif /* DATAFILES_H */
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
/* Set default values for any constants that should be in include files but
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2010 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
|
||||
@@ -0,0 +1,232 @@
|
||||
/*
|
||||
*
|
||||
* Copyright (C) 2008-2010 Anope Team <team@anope.org>
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
/** Dummy base class we use to cast everything to/from
|
||||
*/
|
||||
class ExtensibleItemBase
|
||||
{
|
||||
public:
|
||||
ExtensibleItemBase() { }
|
||||
virtual ~ExtensibleItemBase() { }
|
||||
};
|
||||
|
||||
/** Class used to represent an extensible item that doesn't hold a pointer
|
||||
*/
|
||||
template<typename T> class ExtensibleItemRegular : public ExtensibleItemBase
|
||||
{
|
||||
protected:
|
||||
T Item;
|
||||
|
||||
public:
|
||||
ExtensibleItemRegular(T item) : Item(item) { }
|
||||
virtual ~ExtensibleItemRegular() { }
|
||||
T GetItem() const { return Item; }
|
||||
};
|
||||
|
||||
/** Class used to represent an extensible item that holds a pointer
|
||||
*/
|
||||
template<typename T> class ExtensibleItemPointer : public ExtensibleItemBase
|
||||
{
|
||||
protected:
|
||||
T *Item;
|
||||
|
||||
public:
|
||||
ExtensibleItemPointer(T *item) : Item(item) { }
|
||||
virtual ~ExtensibleItemPointer() { delete Item; }
|
||||
T *GetItem() const { return Item; }
|
||||
};
|
||||
|
||||
/** Class used to represent an extensible item that holds a pointer to an arrray
|
||||
*/
|
||||
template<typename T> class ExtensibleItemPointerArray : public ExtensibleItemBase
|
||||
{
|
||||
protected:
|
||||
T *Item;
|
||||
|
||||
public:
|
||||
ExtensibleItemPointerArray(T *item) : Item(item) { }
|
||||
virtual ~ExtensibleItemPointerArray() { delete [] Item; }
|
||||
T *GetItem() const { return Item; }
|
||||
};
|
||||
|
||||
class CoreExport Extensible
|
||||
{
|
||||
private:
|
||||
std::map<std::string, ExtensibleItemBase *> Extension_Items;
|
||||
|
||||
public:
|
||||
/** Default constructor, does nothing
|
||||
*/
|
||||
Extensible() { }
|
||||
|
||||
/** Default destructor, deletes all of the extensible items in this object
|
||||
* then clears the map
|
||||
*/
|
||||
virtual ~Extensible()
|
||||
{
|
||||
for (std::map<std::string, ExtensibleItemBase *>::iterator it = Extension_Items.begin(); it != Extension_Items.end(); ++it)
|
||||
{
|
||||
delete it->second;
|
||||
}
|
||||
Extension_Items.clear();
|
||||
}
|
||||
|
||||
/** Extend an Extensible class.
|
||||
*
|
||||
* @param key The key parameter is an arbitary string which identifies the extension data
|
||||
* @param p This parameter is a pointer to an ExtensibleItem or ExtensibleItemBase derived class
|
||||
*
|
||||
* You must provide a key to store the data as via the parameter 'key'.
|
||||
* The data will be inserted into the map. If the data already exists, you may not insert it
|
||||
* twice, Extensible::Extend will return false in this case.
|
||||
*
|
||||
* @return Returns true on success, false if otherwise
|
||||
*/
|
||||
bool Extend(const std::string &key, ExtensibleItemBase *p)
|
||||
{
|
||||
bool Ret = this->Extension_Items.insert(std::make_pair(key, p)).second;
|
||||
if (!Ret)
|
||||
delete p;
|
||||
return Ret;
|
||||
}
|
||||
|
||||
/** Extend an Extensible class.
|
||||
*
|
||||
* @param key The key parameter is an arbitary string which identifies the extension data
|
||||
*
|
||||
* You must provide a key to store the data as via the parameter 'key', this single-parameter
|
||||
* version takes no 'data' parameter, this is used purely for boolean values.
|
||||
* The key will be inserted into the map with a NULL 'data' pointer. If the key already exists
|
||||
* then you may not insert it twice, Extensible::Extend will return false in this case.
|
||||
*
|
||||
* @return Returns true on success, false if otherwise
|
||||
*/
|
||||
bool Extend(const std::string &key)
|
||||
{
|
||||
/* This will only add an item if it doesnt already exist,
|
||||
* the return value is a std::pair of an iterator to the
|
||||
* element, and a bool saying if it was actually inserted.
|
||||
*/
|
||||
return this->Extend(key, new ExtensibleItemRegular<char *>(NULL));
|
||||
}
|
||||
|
||||
/** Shrink an Extensible class.
|
||||
*
|
||||
* @param key The key parameter is an arbitary string which identifies the extension data
|
||||
*
|
||||
* You must provide a key name. The given key name will be removed from the classes data. If
|
||||
* you provide a nonexistent key (case is important) then the function will return false.
|
||||
* @return Returns true on success.
|
||||
*/
|
||||
bool Shrink(const std::string &key)
|
||||
{
|
||||
std::map<std::string, ExtensibleItemBase *>::iterator it = this->Extension_Items.find(key);
|
||||
if (it != this->Extension_Items.end())
|
||||
{
|
||||
delete it->second;
|
||||
/* map::size_type map::erase( const key_type& key );
|
||||
* returns the number of elements removed, std::map
|
||||
* is single-associative so this should only be 0 or 1
|
||||
*/
|
||||
return this->Extension_Items.erase(key);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/** Get an extension item that is not a pointer.
|
||||
*
|
||||
* @param key The key parameter is an arbitary string which identifies the extension data
|
||||
* @param p If you provide a non-existent key, this value will be 0. Otherwise a copy to the item you requested will be placed in this templated parameter.
|
||||
* @return Returns true if the item was found and false if it was nor, regardless of wether 'p' is NULL. This allows you to store NULL values in Extensible.
|
||||
*/
|
||||
template<typename T> bool GetExtRegular(const std::string &key, T &p)
|
||||
{
|
||||
std::map<std::string, ExtensibleItemBase *>::iterator it = this->Extension_Items.find(key);
|
||||
|
||||
if (it != this->Extension_Items.end())
|
||||
{
|
||||
p = dynamic_cast<ExtensibleItemRegular<T> *>(it->second)->GetItem();
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/** Get an extension item that is a pointer.
|
||||
*
|
||||
* @param key The key parameter is an arbitary string which identifies the extension data
|
||||
* * @param p If you provide a non-existent key, this value will be NULL. Otherwise a pointer to the item you requested will be placed in this templated parameter.
|
||||
* @return Returns true if the item was found and false if it was nor, regardless of wether 'p' is NULL. This allows you to store NULL values in Extensible.
|
||||
*/
|
||||
template<typename T> bool GetExtPointer(const std::string &key, T *&p)
|
||||
{
|
||||
std::map<std::string, ExtensibleItemBase *>::iterator it = this->Extension_Items.find(key);
|
||||
|
||||
if (it != this->Extension_Items.end())
|
||||
{
|
||||
p = dynamic_cast<ExtensibleItemPointer<T> *>(it->second)->GetItem();
|
||||
return true;
|
||||
}
|
||||
|
||||
p = NULL;
|
||||
return false;
|
||||
}
|
||||
|
||||
/** Get an extension item that is a pointer to an array
|
||||
*
|
||||
* @param key The key parameter is an arbitary string which identifies the extension data
|
||||
* @param p If you provide a non-existent key, this value will be NULL. Otherwise a pointer to the item you requested will be placed in this templated parameter.
|
||||
* @return Returns true if the item was found and false if it was nor, regardless of wether 'p' is NULL. This allows you to store NULL values in Extensible.
|
||||
*/
|
||||
template<typename T> bool GetExtArray(const std::string &key, T *&p)
|
||||
{
|
||||
std::map<std::string, ExtensibleItemBase *>::iterator it = this->Extension_Items.find(key);
|
||||
|
||||
if (it != this->Extension_Items.end())
|
||||
{
|
||||
p = dynamic_cast<ExtensibleItemPointerArray<T> *>(it->second)->GetItem();
|
||||
return true;
|
||||
}
|
||||
|
||||
p = NULL;
|
||||
return false;
|
||||
}
|
||||
|
||||
/** Get an extension item.
|
||||
*
|
||||
* @param key The key parameter is an arbitary string which identifies the extension data
|
||||
* @return Returns true if the item was found and false if it was not.
|
||||
*
|
||||
* This single-parameter version only checks if the key exists, it does nothing with
|
||||
* the 'data' field and is probably only useful in conjunction with the single-parameter
|
||||
* version of Extend().
|
||||
*/
|
||||
bool GetExt(const std::string &key)
|
||||
{
|
||||
return (this->Extension_Items.find(key) != this->Extension_Items.end());
|
||||
}
|
||||
|
||||
/** Get a list of all extension items names.
|
||||
* @param list A deque of strings to receive the list
|
||||
* @return This function writes a list of all extension items stored
|
||||
* in this object by name into the given deque and returns void.
|
||||
*/
|
||||
void GetExtList(std::deque<std::string> &list)
|
||||
{
|
||||
for (std::map<std::string, ExtensibleItemBase *>::iterator i = Extension_Items.begin(); i != Extension_Items.end(); ++i)
|
||||
{
|
||||
list.push_back(i->first);
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
+84
-436
@@ -1,6 +1,6 @@
|
||||
/* Prototypes and external variable declarations.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2010 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
@@ -19,6 +19,7 @@
|
||||
#define EI extern DllExport
|
||||
|
||||
#include "slist.h"
|
||||
#include "hashcomp.h"
|
||||
|
||||
E void ModuleRunTimeDirCleanUp();
|
||||
|
||||
@@ -28,26 +29,15 @@ E char *uplink;
|
||||
/* IRC Variables */
|
||||
|
||||
E IRCDVar *ircd;
|
||||
E IRCDCAPAB *ircdcap;
|
||||
E char *flood_mode_char_set;
|
||||
E char *flood_mode_char_remove;
|
||||
E int UseTSMODE; /* hack to get around bahamut clones that don't send TSMODE */
|
||||
EI unsigned long umodes[128];
|
||||
E char csmodes[128];
|
||||
E CMMode cmmodes[128];
|
||||
E CBMode cbmodes[128];
|
||||
E CBModeInfo *cbmodeinfos;
|
||||
E CUMode cumodes[128];
|
||||
E char *IRCDModule;
|
||||
E IRCDProto *ircdproto;
|
||||
|
||||
/**** actions.c ****/
|
||||
|
||||
E void kill_user(const char *source, const char *user, const char *reason);
|
||||
E void bad_password(User * u);
|
||||
E void sqline(char *mask, char *reason);
|
||||
E void common_unban(ChannelInfo * ci, char *nick);
|
||||
E void common_svsmode(User * u, const char *modes, const char *arg);
|
||||
E void kill_user(const std::string &source, const std::string &user, const std::string &reason);
|
||||
E bool bad_password(User *u);
|
||||
E void sqline(const std::string &mask, const std::string &reason);
|
||||
E void common_unban(ChannelInfo *ci, const std::string &nick);
|
||||
|
||||
/**** botserv.c ****/
|
||||
|
||||
@@ -58,15 +48,12 @@ E void bs_init();
|
||||
E void botserv(User *u, char *buf);
|
||||
E void botmsgs(User *u, BotInfo *bi, char *buf);
|
||||
E void botchanmsgs(User *u, ChannelInfo *ci, char *buf);
|
||||
E void load_bs_dbase();
|
||||
E void save_bs_dbase();
|
||||
E BotInfo *findbot(const char *nick);
|
||||
E BotInfo *findbot(const std::string &nick);
|
||||
|
||||
/** Finds a pseudoclient, given a UID. Useful for TS6 protocol modules.
|
||||
* @param uid The UID to search for
|
||||
* @return The pseudoclient structure, or NULL if one could not be found
|
||||
*/
|
||||
E BotInfo *findbot_byuid(const char *uid);
|
||||
E void bot_join(ChannelInfo *ci);
|
||||
E char *normalizeBuffer(const char *);
|
||||
E void insert_bot(BotInfo * bi);
|
||||
@@ -79,56 +66,26 @@ E void bot_raw_mode(User * requester, ChannelInfo * ci, const char *mode, char *
|
||||
|
||||
E Channel *chanlist[1024];
|
||||
|
||||
E void add_ban(Channel * chan, const char *mask);
|
||||
E void chan_adduser2(User * user, Channel * c);
|
||||
E void add_invite(Channel * chan, const char *mask);
|
||||
E void chan_delete(Channel * c);
|
||||
E void del_ban(Channel * chan, const char *mask);
|
||||
E void chan_set_key(Channel * chan, const char *value);
|
||||
E void set_limit(Channel * chan, const char *value);
|
||||
E void del_invite(Channel * chan, const char *mask);
|
||||
E char *get_key(Channel * chan);
|
||||
E char *get_limit(Channel * chan);
|
||||
E Channel *chan_create(const char *chan, time_t ts);
|
||||
E Channel *join_user_update(User * user, Channel * chan, const char *name, time_t chants);
|
||||
|
||||
E void add_exception(Channel * chan, const char *mask);
|
||||
E void del_exception(Channel * chan, const char *mask);
|
||||
E char *get_flood(Channel * chan);
|
||||
E void set_flood(Channel * chan, const char *value);
|
||||
E char *get_redirect(Channel * chan);
|
||||
E void set_redirect(Channel * chan, const char *value);
|
||||
|
||||
|
||||
E void get_channel_stats(long *nrec, long *memuse);
|
||||
E Channel *findchan(const char *chan);
|
||||
E Channel *firstchan();
|
||||
E Channel *nextchan();
|
||||
|
||||
E void chan_deluser(User * user, Channel * c);
|
||||
E void ChanSetInternalModes(Channel *c, int ac, const char **av);
|
||||
|
||||
E int is_on_chan(Channel * c, User * u);
|
||||
E User *nc_on_chan(Channel * c, NickCore * nc);
|
||||
|
||||
E char *chan_get_modes(Channel * chan, int complete, int plus);
|
||||
E void chan_set_modes(const char *source, Channel * chan, int ac,
|
||||
const char **av, int check);
|
||||
|
||||
E int chan_get_user_status(Channel * chan, User * user);
|
||||
E int chan_has_user_status(Channel * chan, User * user, int16 status);
|
||||
E void chan_remove_user_status(Channel * chan, User * user, int16 status);
|
||||
E void chan_set_user_status(Channel * chan, User * user, int16 status);
|
||||
|
||||
E int get_access_level(ChannelInfo * ci, NickAlias * na);
|
||||
E const char *get_xop_level(int level);
|
||||
|
||||
E void do_cmode(const char *source, int ac, const char **av);
|
||||
E void do_join(const char *source, int ac, const char **av);
|
||||
E void do_kick(const char *source, int ac, const char **av);
|
||||
E void do_kick(const std::string &source, int ac, const char **av);
|
||||
E void do_part(const char *source, int ac, const char **av);
|
||||
E void do_sjoin(const char *source, int ac, const char **av);
|
||||
E void do_topic(const char *source, int ac, const char **av);
|
||||
E void do_mass_mode(char *modes);
|
||||
E void MassChannelModes(BotInfo *bi, const std::string &modes);
|
||||
|
||||
E void chan_set_correct_modes(User * user, Channel * c, int give_modes);
|
||||
E void restore_unsynced_topics();
|
||||
@@ -137,7 +94,7 @@ E Entry *entry_create(char *mask);
|
||||
E Entry *entry_add(EList *list, const char *mask);
|
||||
E void entry_delete(EList *list, Entry *e);
|
||||
E EList *list_create();
|
||||
E int entry_match(Entry *e, const char *nick, const char *user, const char *host, uint32 ip);
|
||||
E int entry_match(Entry *e, const ci::string &nick, const ci::string &user, const ci::string &host, uint32 ip);
|
||||
E int entry_match_mask(Entry *e, const char *mask, uint32 ip);
|
||||
E Entry *elist_match(EList *list, const char *nick, const char *user, const char *host, uint32 ip);
|
||||
E Entry *elist_match_mask(EList *list, const char *mask, uint32 ip);
|
||||
@@ -146,28 +103,22 @@ E Entry *elist_find_mask(EList *list, const char *mask);
|
||||
E long get_memuse(EList *list);
|
||||
|
||||
|
||||
#define whosends(ci) ((!(ci) || !((ci)->botflags & BS_SYMBIOSIS) || !(ci)->bi || !(ci)->c || (ci)->c->usercount < BSMinUsers) ? findbot(s_ChanServ) : (ci)->bi)
|
||||
#define whosends(ci) ((!(ci) || !((ci)->botflags.HasFlag(BS_SYMBIOSIS)) || !(ci)->bi || !(ci)->c || (ci)->c->users.size() < Config.BSMinUsers) ? findbot(Config.s_ChanServ) : (ci)->bi)
|
||||
|
||||
/**** chanserv.c ****/
|
||||
|
||||
E ChannelInfo *chanlists[256];
|
||||
E CSModeUtil csmodeutils[];
|
||||
E LevelInfo levelinfo[];
|
||||
|
||||
E void get_chanserv_stats(long *nrec, long *memuse);
|
||||
|
||||
E int delchan(ChannelInfo * ci);
|
||||
E void alpha_insert_chan(ChannelInfo * ci);
|
||||
E void reset_levels(ChannelInfo * ci);
|
||||
E void cs_init();
|
||||
E void chanserv(User * u, char *buf);
|
||||
E void load_cs_dbase();
|
||||
E void save_cs_dbase();
|
||||
E void expire_chans();
|
||||
E void cs_remove_nick(const NickCore * nc);
|
||||
|
||||
E int is_real_founder(User * user, ChannelInfo * ci);
|
||||
|
||||
E void check_modes(Channel * c);
|
||||
E int check_valid_admin(User * user, Channel * chan, int servermode);
|
||||
E int check_valid_op(User * user, Channel * chan, int servermode);
|
||||
@@ -176,32 +127,22 @@ E int check_should_voice(User * user, char *chan);
|
||||
E int check_should_halfop(User * user, char *chan);
|
||||
E int check_should_owner(User * user, char *chan);
|
||||
E int check_should_protect(User * user, char *chan);
|
||||
E int check_kick(User * user, const char *chan, time_t chants);
|
||||
E void record_topic(const char *chan);
|
||||
E void restore_topic(const char *chan);
|
||||
E int check_topiclock(Channel * c, time_t topic_time);
|
||||
|
||||
E ChannelInfo *cs_findchan(const char *chan);
|
||||
E ChannelInfo *cs_findchan(const std::string &chan);
|
||||
E int check_access(User * user, ChannelInfo * ci, int what);
|
||||
E int is_founder(User * user, ChannelInfo * ci);
|
||||
E int get_access(User * user, ChannelInfo * ci);
|
||||
E bool IsFounder(User *user, ChannelInfo *ci);
|
||||
E bool IsRealFounder(User *user, ChannelInfo *ci);
|
||||
E int get_access(User *user, ChannelInfo *ci);
|
||||
E void update_cs_lastseen(User * user, ChannelInfo * ci);
|
||||
E int get_idealban(ChannelInfo * ci, User * u, char *ret, int retlen);
|
||||
E AutoKick *is_stuck(ChannelInfo * ci, const char *mask);
|
||||
E void stick_mask(ChannelInfo * ci, AutoKick * akick);
|
||||
E void stick_all(ChannelInfo * ci);
|
||||
E char *cs_get_flood(ChannelInfo * ci);
|
||||
E void cs_set_flood(ChannelInfo * ci, const char *value);
|
||||
E char *cs_get_key(ChannelInfo * ci);
|
||||
E void cs_set_key(ChannelInfo * ci, const char *value);
|
||||
E char *cs_get_limit(ChannelInfo * ci);
|
||||
E void cs_set_limit(ChannelInfo * ci, const char *value);
|
||||
E char *cs_get_redirect(ChannelInfo * ci);
|
||||
E void cs_set_redirect(ChannelInfo * ci, const char *value);
|
||||
|
||||
E int levelinfo_maxwidth;
|
||||
E ChannelInfo *makechan(const char *chan);
|
||||
E int is_identified(User * user, ChannelInfo * ci);
|
||||
E char *get_mlock_modes(ChannelInfo * ci, int complete);
|
||||
|
||||
/**** compat.c ****/
|
||||
@@ -216,262 +157,30 @@ char *sockstrerror(int error);
|
||||
|
||||
/**** config.c ****/
|
||||
|
||||
E ServerConfig serverConfig;
|
||||
|
||||
E std::list<Uplink *> Uplinks;
|
||||
E char *LocalHost;
|
||||
E unsigned LocalPort;
|
||||
|
||||
E char *ServerName;
|
||||
E char *ServerDesc;
|
||||
E char *ServiceUser;
|
||||
E char *ServiceHost;
|
||||
|
||||
E char *HelpChannel;
|
||||
E char *LogChannel;
|
||||
E char *NetworkName;
|
||||
E unsigned NickLen;
|
||||
|
||||
E char *s_NickServ;
|
||||
E char *s_ChanServ;
|
||||
E char *s_MemoServ;
|
||||
E char *s_BotServ;
|
||||
E char *s_OperServ;
|
||||
E char *s_GlobalNoticer;
|
||||
E char *desc_NickServ;
|
||||
E char *desc_ChanServ;
|
||||
E char *desc_MemoServ;
|
||||
E char *desc_BotServ;
|
||||
E char *desc_OperServ;
|
||||
E char *desc_GlobalNoticer;
|
||||
|
||||
E char *HostDBName;
|
||||
E char *desc_HostServ;
|
||||
E char *s_HostServ;
|
||||
E void load_hs_dbase();
|
||||
E void save_hs_dbase();
|
||||
E int do_on_id(User * u);
|
||||
E void delHostCore(const char *nick);
|
||||
E void hostserv(User * u, char *buf);
|
||||
|
||||
E char *PIDFilename;
|
||||
E char *MOTDFilename;
|
||||
E char *NickDBName;
|
||||
E char *PreNickDBName;
|
||||
E char *ChanDBName;
|
||||
E char *BotDBName;
|
||||
E char *OperDBName;
|
||||
E char *NewsDBName;
|
||||
|
||||
E bool NoBackupOkay;
|
||||
E bool StrictPasswords;
|
||||
E unsigned BadPassLimit;
|
||||
E time_t BadPassTimeout;
|
||||
E time_t UpdateTimeout;
|
||||
E time_t ExpireTimeout;
|
||||
E time_t ReadTimeout;
|
||||
E time_t WarningTimeout;
|
||||
E time_t TimeoutCheck;
|
||||
E int KeepLogs;
|
||||
E int KeepBackups;
|
||||
E bool ForceForbidReason;
|
||||
E bool UsePrivmsg;
|
||||
E bool UseStrictPrivMsg;
|
||||
E bool DumpCore;
|
||||
E bool LogUsers;
|
||||
E unsigned NickRegDelay;
|
||||
E bool RestrictOperNicks;
|
||||
E unsigned NewsCount;
|
||||
E char *Numeric;
|
||||
|
||||
E bool UseMail;
|
||||
E char *SendMailPath;
|
||||
E char *SendFrom;
|
||||
E bool RestrictMail;
|
||||
E time_t MailDelay;
|
||||
E bool DontQuoteAddresses;
|
||||
|
||||
E int NSDefFlags;
|
||||
E unsigned NSDefLanguage;
|
||||
E time_t NSRegDelay;
|
||||
E time_t NSResendDelay;
|
||||
E time_t NSExpire;
|
||||
E time_t NSRExpire;
|
||||
E bool NSForceEmail;
|
||||
E int NSMaxAliases;
|
||||
E unsigned NSAccessMax;
|
||||
E char *NSEnforcerUser;
|
||||
E char *NSEnforcerHost;
|
||||
E time_t NSReleaseTimeout;
|
||||
E bool NSAllowKillImmed;
|
||||
E bool NSNoGroupChange;
|
||||
E bool NSListOpersOnly;
|
||||
E unsigned NSListMax;
|
||||
E char *NSGuestNickPrefix;
|
||||
E bool NSSecureAdmins;
|
||||
E bool NSStrictPrivileges;
|
||||
E bool NSEmailReg;
|
||||
E bool NSModeOnID;
|
||||
E bool NSAddAccessOnReg;
|
||||
|
||||
E int CSDefFlags;
|
||||
E unsigned CSMaxReg;
|
||||
E time_t CSExpire;
|
||||
E int CSDefBantype;
|
||||
E unsigned CSAccessMax;
|
||||
E unsigned CSAutokickMax;
|
||||
E char *CSAutokickReason;
|
||||
E time_t CSInhabit;
|
||||
E bool CSListOpersOnly;
|
||||
E unsigned CSListMax;
|
||||
E bool CSRestrictGetPass;
|
||||
E bool CSOpersOnly;
|
||||
|
||||
E unsigned MSMaxMemos;
|
||||
E time_t MSSendDelay;
|
||||
E bool MSNotifyAll;
|
||||
E unsigned MSMemoReceipt;
|
||||
|
||||
E int BSDefFlags;
|
||||
E time_t BSKeepData;
|
||||
E unsigned BSMinUsers;
|
||||
E unsigned BSBadWordsMax;
|
||||
E bool BSSmartJoin;
|
||||
E bool BSGentleBWReason;
|
||||
E bool BSCaseSensitive;
|
||||
E char *BSFantasyCharacter;
|
||||
|
||||
E bool HideStatsO;
|
||||
E bool GlobalOnCycle;
|
||||
E bool AnonymousGlobal;
|
||||
E char *GlobalOnCycleMessage;
|
||||
E char *GlobalOnCycleUP;
|
||||
E bool LogMaxUsers;
|
||||
E bool SuperAdmin;
|
||||
E bool LogBot;
|
||||
E time_t AutokillExpiry;
|
||||
E time_t ChankillExpiry;
|
||||
E time_t SGLineExpiry;
|
||||
E time_t SQLineExpiry;
|
||||
E time_t SZLineExpiry;
|
||||
E bool AkillOnAdd;
|
||||
E bool KillonSGline;
|
||||
E bool KillonSQline;
|
||||
E bool WallOper;
|
||||
E bool WallBadOS;
|
||||
E bool WallOSGlobal;
|
||||
E bool WallOSMode;
|
||||
E bool WallOSClearmodes;
|
||||
E bool WallOSKick;
|
||||
E bool WallOSAkill;
|
||||
E bool WallOSSGLine;
|
||||
E bool WallOSSQLine;
|
||||
E bool WallOSSZLine;
|
||||
E bool WallOSNoOp;
|
||||
E bool WallOSJupe;
|
||||
E bool WallAkillExpire;
|
||||
E bool WallSGLineExpire;
|
||||
E bool WallSQLineExpire;
|
||||
E bool WallSZLineExpire;
|
||||
E bool WallExceptionExpire;
|
||||
E bool WallDrop;
|
||||
E bool WallForbid;
|
||||
E bool WallGetpass;
|
||||
E bool WallSetpass;
|
||||
E bool AddAkiller;
|
||||
|
||||
/**
|
||||
* Modules Stuff
|
||||
**/
|
||||
E char **ModulesAutoload;
|
||||
E int ModulesNumber;
|
||||
E char **ModulesDelayedAutoload;
|
||||
E int ModulesDelayedNumber;
|
||||
|
||||
E char **HostServCoreModules;
|
||||
E int HostServCoreNumber;
|
||||
|
||||
E char **MemoServCoreModules;
|
||||
E int MemoServCoreNumber;
|
||||
|
||||
E char **BotServCoreModules;
|
||||
E int BotServCoreNumber;
|
||||
|
||||
E char **OperServCoreModules;
|
||||
E int OperServCoreNumber;
|
||||
|
||||
E char **NickServCoreModules;
|
||||
E int NickServCoreNumber;
|
||||
|
||||
E char **ChanServCoreModules;
|
||||
E int ChanServCoreNumber;
|
||||
|
||||
E bool LimitSessions;
|
||||
E unsigned DefSessionLimit;
|
||||
E time_t ExceptionExpiry;
|
||||
E int MaxSessionKill;
|
||||
E unsigned MaxSessionLimit;
|
||||
E time_t SessionAutoKillExpiry;
|
||||
E char *ExceptionDBName;
|
||||
E char *SessionLimitDetailsLoc;
|
||||
E char *SessionLimitExceeded;
|
||||
|
||||
E char **Ulines;
|
||||
E int NumUlines;
|
||||
|
||||
E std::string services_conf;
|
||||
E ServerConfig Config;
|
||||
E int read_config(int reload);
|
||||
|
||||
E int DefConLevel;
|
||||
E int DefCon[6];
|
||||
E int checkDefCon(int level);
|
||||
E void resetDefCon(int level);
|
||||
E int DefConSessionLimit;
|
||||
E time_t DefConTimeOut;
|
||||
E time_t DefConAKILL;
|
||||
E char *DefConChanModes;
|
||||
E bool GlobalOnDefcon;
|
||||
E bool GlobalOnDefconMore;
|
||||
E char *DefconMessage;
|
||||
E char *DefConAkillReason;
|
||||
E char *DefConOffMessage;
|
||||
|
||||
E long unsigned int UserKey1;
|
||||
E long unsigned int UserKey2;
|
||||
E long unsigned int UserKey3;
|
||||
/**** converter.c ****/
|
||||
|
||||
E int convert_ircservices_44();
|
||||
/* hostserv.c */
|
||||
E void do_on_id(User *u);
|
||||
E void hostserv(User *u, char *buf);
|
||||
E void HostServSyncVhosts(NickAlias *na);
|
||||
|
||||
/**** encrypt.c ****/
|
||||
E char *EncModule;
|
||||
E void initEncryption();
|
||||
E int enc_encrypt(const char *src, int len, char *dest, int size);
|
||||
E int enc_encrypt_in_place(char *buf, int size);
|
||||
E int enc_encrypt_check_len(int passlen, int bufsize);
|
||||
E int enc_decrypt(const char *src, char *dest, int size);
|
||||
E int enc_check_password(const char *plaintext, const char *password);
|
||||
E void encmodule_encrypt(int (*func)(const char *src, int len, char *dest, int size));
|
||||
E void encmodule_encrypt_in_place(int (*func)(char *buf, int size));
|
||||
E void encmodule_encrypt_check_len(int (*func)(int passlen, int bufsize));
|
||||
E void encmodule_decrypt(int (*func)(const char *src, char *dest, int size));
|
||||
E void encmodule_check_password(int (*func)(const char *plaintext, const char *password));
|
||||
E int enc_encrypt(const std::string &src, std::string &dest);
|
||||
E int enc_encrypt_in_place(std::string &buf);
|
||||
E int enc_decrypt(const std::string &src, std::string &dest);
|
||||
E int enc_check_password(std::string &plaintext, std::string &password);
|
||||
|
||||
/**** hostserv.c ****/
|
||||
E void get_hostserv_stats(long *nrec, long *memuse);
|
||||
E void hostserv_init();
|
||||
E void addHostCore(const char *nick, char *vIdent, char *vhost, const char *creator, int32 tmp_time);
|
||||
E char *getvIdent(char *nick);
|
||||
E char *getvHost(char *nick);
|
||||
E HostCore *hostCoreListHead();
|
||||
E HostCore *findHostCore(HostCore * head, const char *nick, bool *found);
|
||||
E HostCore *createHostCorelist(HostCore * next, const char *nick, char *vIdent, char *vHost, const char *creator, int32 tmp_time);
|
||||
E HostCore *insertHostCore(HostCore * head, HostCore * prev, const char *nick, char *vIdent, char *vHost, const char *creator, int32 tmp_time);
|
||||
E HostCore *deleteHostCore(HostCore * head, HostCore * prev);
|
||||
E void set_lastmask(User * u);
|
||||
|
||||
/**** init.c ****/
|
||||
|
||||
E void introduce_user(const char *user);
|
||||
E void introduce_user(const std::string &user);
|
||||
E bool GetCommandLineArgument(const std::string &name, char shortname = 0);
|
||||
E bool GetCommandLineArgument(const std::string &name, char shortname, std::string ¶m);
|
||||
E int init_primary(int ac, char **av);
|
||||
E int init_secondary(int ac, char **av);
|
||||
E Uplink *uplink_server;
|
||||
@@ -479,31 +188,8 @@ E Uplink *uplink_server;
|
||||
/**** ircd.c ****/
|
||||
E void pmodule_ircd_proto(IRCDProto *);
|
||||
E void pmodule_ircd_var(IRCDVar * ircdvar);
|
||||
E void pmodule_ircd_cap(IRCDCAPAB * cap);
|
||||
E void pmodule_ircd_version(const char *version);
|
||||
E void pmodule_ircd_cbmodeinfos(CBModeInfo * modeinfos);
|
||||
E void pmodule_ircd_cumodes(CUMode modes[128]);
|
||||
E void pmodule_ircd_flood_mode_char_set(const char *mode);
|
||||
E void pmodule_ircd_flood_mode_char_remove(const char *mode);
|
||||
E void pmodule_ircd_cbmodes(CBMode modes[128]);
|
||||
E void pmodule_ircd_cmmodes(CMMode modes[128]);
|
||||
E void pmodule_ircd_csmodes(char mode[128]);
|
||||
E void pmodule_ircd_useTSMode(int use);
|
||||
E void pmodule_invis_umode(int mode);
|
||||
E void pmodule_oper_umode(int mode);
|
||||
E void pmodule_invite_cmode(int mode);
|
||||
E void pmodule_secret_cmode(int mode);
|
||||
E void pmodule_private_cmode(int mode);
|
||||
E void pmodule_key_mode(int mode);
|
||||
E void pmodule_limit_mode(int mode);
|
||||
|
||||
E int anope_get_secret_mode();
|
||||
E int anope_get_invite_mode();
|
||||
E int anope_get_key_mode();
|
||||
E int anope_get_limit_mode();
|
||||
E int anope_get_private_mode();
|
||||
E int anope_get_invis_mode();
|
||||
E int anope_get_oper_mode();
|
||||
|
||||
/**** language.c ****/
|
||||
|
||||
@@ -524,7 +210,6 @@ E const char *getstring(int index);
|
||||
|
||||
E int open_log();
|
||||
E void close_log();
|
||||
E void alog(const char *fmt, ...) FORMAT(printf,1,2);
|
||||
E void log_perror(const char *fmt, ...) FORMAT(printf,1,2);
|
||||
E void fatal(const char *fmt, ...) FORMAT(printf,1,2);
|
||||
E void fatal_perror(const char *fmt, ...) FORMAT(printf,1,2);
|
||||
@@ -547,10 +232,10 @@ E char *version_protocol;
|
||||
E const char version_flags[];
|
||||
|
||||
E std::string services_dir;
|
||||
E const char *log_filename;
|
||||
E std::string log_filename;
|
||||
E int debug;
|
||||
E int readonly;
|
||||
E int logchan;
|
||||
E bool LogChan;
|
||||
E int nofork;
|
||||
E int forceload;
|
||||
E int nothird;
|
||||
@@ -559,14 +244,14 @@ E int protocoldebug;
|
||||
|
||||
E int is44;
|
||||
E int quitting;
|
||||
E int delayed_quit;
|
||||
E int shutting_down;
|
||||
E const char *quitmsg;
|
||||
E char inbuf[BUFSIZE];
|
||||
E int servsock;
|
||||
E int save_data;
|
||||
E int got_alarm;
|
||||
E time_t start_time;
|
||||
|
||||
E Socket *UplinkSock;
|
||||
|
||||
E void save_databases();
|
||||
E void expire_all();
|
||||
E void sighandler(int signum);
|
||||
@@ -593,9 +278,9 @@ E int delmemo(MemoInfo * mi, int num);
|
||||
|
||||
E int m_nickcoll(const char *user);
|
||||
E int m_away(const char *source, const char *msg);
|
||||
E int m_kill(const char *nick, const char *msg);
|
||||
E int m_kill(const std::string &nick, const char *msg);
|
||||
E int m_motd(const char *source);
|
||||
E int m_privmsg(const char *source, const char *receiver, const char *msg);
|
||||
E int m_privmsg(const char *source, const std::string &receiver, const char *msg);
|
||||
E int m_stats(const char *source, int ac, const char **av);
|
||||
E int m_whois(const char *source, const char *who);
|
||||
E int m_time(const char *source, int ac, const char **av);
|
||||
@@ -639,7 +324,7 @@ E char *myStrGetTokenRemainder(const char *str, const char dilim,
|
||||
E char *stripModePrefix(const char *str);
|
||||
E int myNumToken(const char *str, const char dilim);
|
||||
E void doCleanBuffer(char *str);
|
||||
E void EnforceQlinedNick(const char *nick, const char *killer);
|
||||
E void EnforceQlinedNick(const std::string &nick, const char *killer);
|
||||
E int nickIsServices(const char *nick, int bot);
|
||||
|
||||
E void add_entropy_userkeys();
|
||||
@@ -652,7 +337,10 @@ E char *str_signed(unsigned char *str);
|
||||
|
||||
E void ntoa(struct in_addr addr, char *ipaddr, int len);
|
||||
|
||||
E char **buildStringList(const std::string &src, int *number);
|
||||
E std::list<std::string> BuildStringList(const std::string &);
|
||||
E std::list<ci::string> BuildStringList(const ci::string &);
|
||||
E std::vector<std::string> BuildStringVector(const std::string &);
|
||||
|
||||
E void binary_to_hex(unsigned char *bin, char *hex, int length);
|
||||
|
||||
E uint32 cidr_to_netmask(uint16 cidr);
|
||||
@@ -664,27 +352,18 @@ E int str_is_pure_wildcard(const char *str);
|
||||
E uint32 str_is_ip(char *str);
|
||||
E int str_is_cidr(char *str, uint32 * ip, uint32 * mask, char **host);
|
||||
|
||||
/**** modes.cpp ****/
|
||||
/* Number of generic modes we support */
|
||||
E unsigned GenericChannelModes, GenericUserModes;
|
||||
E std::bitset<128> DefMLockOn;
|
||||
E std::bitset<128> DefMLockOff;
|
||||
E std::map<ChannelModeName, std::string> DefMLockParams;
|
||||
/* Modes to set on bots when they join the channel */
|
||||
E std::list<ChannelModeStatus *> BotModes;
|
||||
E void SetDefaultMLock();
|
||||
|
||||
/**** modules.c ****/
|
||||
E void modules_unload_all(bool unload_proto); /* Read warnings near function source */
|
||||
E void ModuleDatabaseBackup(const char *dbname);
|
||||
E void ModuleRemoveBackups(const char *dbname);
|
||||
|
||||
/**** news.c ****/
|
||||
|
||||
/* Add news items. */
|
||||
E int add_newsitem(User * u, const char *text, int16 type);
|
||||
/* Delete news items. */
|
||||
E int del_newsitem(int num, int16 type);
|
||||
E int32 nnews, news_size;
|
||||
E NewsItem *news;
|
||||
E void get_news_stats(long *nrec, long *memuse);
|
||||
E void load_news();
|
||||
E void save_news();
|
||||
E void display_news(User * u, int16 type);
|
||||
E int do_logonnews(User * u);
|
||||
E int do_opernews(User * u);
|
||||
E int do_randomnews(User * u);
|
||||
|
||||
/**** nickserv.c ****/
|
||||
|
||||
@@ -692,57 +371,39 @@ E NickAlias *nalists[1024];
|
||||
E NickCore *nclists[1024];
|
||||
E NickRequest *nrlists[1024];
|
||||
E NickRequest *findrequestnick(const char *nick);
|
||||
E int delnickrequest(NickRequest * nr);
|
||||
E unsigned int guestnum;
|
||||
E void insert_requestnick(NickRequest * nr);
|
||||
E void alpha_insert_alias(NickAlias * na);
|
||||
E void insert_core(NickCore * nc);
|
||||
E void get_aliases_stats(long *nrec, long *memuse);
|
||||
E void get_core_stats(long *nrec, long *memuse);
|
||||
E void collide(NickAlias * na, int from_timeout);
|
||||
E void del_ns_timeout(NickAlias * na, int type);
|
||||
E void change_core_display(NickCore * nc);
|
||||
E void change_core_display(NickCore * nc, const char *newdisplay);
|
||||
E void release(NickAlias * na, int from_timeout);
|
||||
E int do_setmodes(User * u);
|
||||
E int should_mode_change(int16 status, int16 mode);
|
||||
|
||||
E void ns_init();
|
||||
E void nickserv(User * u, char *buf);
|
||||
E void load_ns_dbase();
|
||||
E void load_ns_req_db();
|
||||
E void save_ns_dbase();
|
||||
E void save_ns_req_dbase();
|
||||
E int validate_user(User * u);
|
||||
E void cancel_user(User * u);
|
||||
E int nick_identified(User * u);
|
||||
E void expire_nicks();
|
||||
E void expire_requests();
|
||||
EI int ns_do_register(User * u);
|
||||
E int delnick(NickAlias * na);
|
||||
E NickAlias *findnick(const char *nick);
|
||||
E NickAlias *findnick(const std::string &nick);
|
||||
E NickCore *findcore(const char *nick);
|
||||
E bool is_on_access(User *u, NickCore *nc);
|
||||
|
||||
/** Set the correct oper type for a nickcore
|
||||
* @param nc The nick core
|
||||
*/
|
||||
E void SetOperType(NickCore *nc);
|
||||
|
||||
/**** operserv.c ****/
|
||||
|
||||
E SList akills, sglines, sqlines, szlines;
|
||||
|
||||
E int DefConModesSet;
|
||||
E uint32 DefConModesOn;
|
||||
E uint32 DefConModesOff;
|
||||
E ChannelInfo DefConModesCI;
|
||||
E Flags<ChannelModeName> DefConModesOn;
|
||||
E Flags<ChannelModeName> DefConModesOff;
|
||||
E std::map<ChannelModeName, std::string> DefConModesOnParams;
|
||||
E bool SetDefConParam(ChannelModeName, std::string &);
|
||||
E bool GetDefConParam(ChannelModeName, std::string *);
|
||||
E void UnsetDefConParam(ChannelModeName);
|
||||
|
||||
E void operserv(User *u, char *buf);
|
||||
E void os_init();
|
||||
E void load_os_dbase();
|
||||
E void save_os_dbase();
|
||||
|
||||
E int add_akill(User *u, const char *mask, const char *by, const time_t expires, const char *reason);
|
||||
E int check_akill(const char *nick, const char *username, const char *host, const char *vhost, const char *ip);
|
||||
@@ -765,10 +426,13 @@ E int check_szline(const char *nick, char *ip);
|
||||
|
||||
E Server *server_global(Server * s, char *msg);
|
||||
|
||||
E bool OSOpersOnly;
|
||||
E time_t DefContimer;
|
||||
E void runDefCon();
|
||||
E int defconParseModeString(const char *str);
|
||||
E std::vector<NewsItem *> News;
|
||||
|
||||
E bool CheckDefCon(DefconLevel Level);
|
||||
E bool CheckDefCon(int level, DefconLevel Level);
|
||||
E void AddDefCon(int level, DefconLevel Level);
|
||||
E void DelDefCon(int level, DefconLevel Level);
|
||||
E std::vector<std::bitset<32> > DefCon;
|
||||
|
||||
/**** process.c ****/
|
||||
|
||||
@@ -781,7 +445,7 @@ E int delete_ignore(const char *nick);
|
||||
E int clear_ignores();
|
||||
|
||||
E int split_buf(char *buf, const char ***argv, int colon_special);
|
||||
E void process();
|
||||
E void process(const std::string &buf);
|
||||
|
||||
/**** send.c ****/
|
||||
|
||||
@@ -792,7 +456,7 @@ E void notice_server(char *source, Server * s, const char *fmt, ...)
|
||||
FORMAT(printf,3,4);
|
||||
|
||||
E void notice_list(const char *source, const char *dest, char **text); // MARK_DEPRECATED;
|
||||
E void notice_lang(const char *source, User *dest, int message, ...); // MARK_DEPRECATED;
|
||||
E void notice_lang(const std::string &source, User *dest, int message, ...); // MARK_DEPRECATED;
|
||||
E void notice_help(const char *source, User *dest, int message, ...); // MARK_DEPRECATED;
|
||||
|
||||
|
||||
@@ -801,23 +465,22 @@ E void notice_help(const char *source, User *dest, int message, ...); // MARK_DE
|
||||
E Server *servlist;
|
||||
E Server *me_server;
|
||||
E Server *serv_uplink;
|
||||
E uint32 uplink_capab;
|
||||
E CapabInfo capab_info[];
|
||||
E Flags<CapabType> Capab;
|
||||
E CapabInfo Capab_Info[];
|
||||
|
||||
E Server *first_server(int flags);
|
||||
E Server *next_server(int flags);
|
||||
E Server *first_server(ServerFlag flag);
|
||||
E Server *next_server(ServerFlag flag);
|
||||
|
||||
E void CapabParse(int ac, const char **av);
|
||||
E int is_ulined(const char *server);
|
||||
E int is_sync(Server *server);
|
||||
|
||||
E Server *new_server(Server * uplink, const char *name, const char *desc,
|
||||
uint16 flags, const char *suid);
|
||||
E Server *new_server(Server * uplink, const char *name, const char *desc, ServerFlag flag, const std::string &suid);
|
||||
|
||||
E Server *findserver(Server *s, const char *name);
|
||||
|
||||
E void do_server(const char *source, const char *servername, const char *hops, const char *descript, const char *numeric);
|
||||
E void do_server(const char *source, const char *servername, const char *hops, const char *descript, const std::string &numeric);
|
||||
E void do_squit(const char *source, int ac, const char **av);
|
||||
E void capab_parse(int ac, const char **av);
|
||||
E int anope_check_sync(const char *name);
|
||||
|
||||
E void finish_sync(Server *serv, int sync_links);
|
||||
@@ -839,13 +502,9 @@ E int32 nsessions;
|
||||
E void get_session_stats(long *nrec, long *memuse);
|
||||
E void get_exception_stats(long *nrec, long *memuse);
|
||||
|
||||
E int do_session(User *u);
|
||||
E int add_session(const char *nick, const char *host, char *hostip);
|
||||
E void del_session(const char *host);
|
||||
|
||||
E void load_exceptions();
|
||||
E void save_exceptions();
|
||||
E int do_exception(User *u);
|
||||
E void expire_exceptions();
|
||||
|
||||
E Session *findsession(const char *host);
|
||||
@@ -869,20 +528,10 @@ E void slist_pack(SList *slist);
|
||||
E int slist_remove(SList *slist, void *item);
|
||||
E int slist_setcapacity(SList *slist, int16 capacity);
|
||||
|
||||
/**** sockutil.c ****/
|
||||
|
||||
E int32 total_read, total_written;
|
||||
E int32 read_buffer_len();
|
||||
E int32 write_buffer_len();
|
||||
|
||||
E int sgetc(ano_socket_t s);
|
||||
E char *sgets(char *buf, int len, ano_socket_t s);
|
||||
E char *sgets2(char *buf, int len, ano_socket_t s);
|
||||
E int sread(ano_socket_t s, char *buf, int len);
|
||||
E int sputs(char *str, ano_socket_t s);
|
||||
E int sockprintf(ano_socket_t s, const char *fmt, ...);
|
||||
E int conn(const char *host, int port, const char *lhost, int lport);
|
||||
E void disconn(ano_socket_t s);
|
||||
/**** sockets.cpp ****/
|
||||
E SocketEngine socketEngine;
|
||||
E int32 TotalRead;
|
||||
E int32 TotalWritten;
|
||||
|
||||
/**** users.c ****/
|
||||
|
||||
@@ -893,11 +542,11 @@ E uint32 maxusercnt, usercnt;
|
||||
E time_t maxusertime;
|
||||
|
||||
E void get_user_stats(long *nusers, long *memuse);
|
||||
E User *finduser(const char *nick);
|
||||
E User *finduser(const std::string &nick);
|
||||
E User *firstuser();
|
||||
E User *nextuser();
|
||||
|
||||
E User *find_byuid(const char *uid);
|
||||
E User *find_byuid(const std::string &uid);
|
||||
E User *first_uid();
|
||||
E User *next_uid();
|
||||
E Server *findserver_uid(Server * s, const char *name);
|
||||
@@ -909,7 +558,7 @@ E User *do_nick(const char *source, const char *nick, const char *username, cons
|
||||
|
||||
E void do_umode(const char *source, int ac, const char **av);
|
||||
E void do_quit(const char *source, int ac, const char **av);
|
||||
E void do_kill(const char *source, const char *reason);
|
||||
E void do_kill(const std::string &source, const std::string &reason);
|
||||
|
||||
E int is_oper(User * user);
|
||||
E int is_protected(User * user);
|
||||
@@ -920,21 +569,20 @@ E int is_excepted_mask(ChannelInfo * ci, const char *mask);
|
||||
E int match_usermask(const char *mask, User * user);
|
||||
E char *create_mask(User * u);
|
||||
|
||||
E void UserSetInternalModes(User *user, int ac, const char **av);
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
E const char* base64enc(long i);
|
||||
E long base64dec(char *b64);
|
||||
E const char *base64enc(long i);
|
||||
E long base64dec(const char *b64);
|
||||
E long base64dects(const char *ts);
|
||||
E int b64_encode(char *src, size_t srclength, char *target, size_t targsize);
|
||||
E int b64_encode(const char *src, size_t srclength, char *target, size_t targsize);
|
||||
E int b64_decode(const char *src, char *target, size_t targsize);
|
||||
E const char* encode_ip(unsigned char *ip);
|
||||
E const char *encode_ip(unsigned char *ip);
|
||||
E int decode_ip(const char *buf);
|
||||
|
||||
E char *host_resolve(char *host);
|
||||
|
||||
E void event_process_hook(const char *name, int argc, char **argv);
|
||||
|
||||
#ifdef _WIN32
|
||||
E char *GetWindowsVersion() ;
|
||||
E int SupportedWindowsVersion();
|
||||
|
||||
+18
-11
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 InspIRCd Development Team
|
||||
* Copyright (C) 2009 Anope Team <team@anope.org>
|
||||
* Copyright (C) 2002-2010 InspIRCd Development Team
|
||||
* Copyright (C) 2009-2010 Anope Team <team@anope.org>
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
@@ -113,7 +113,7 @@ namespace irc
|
||||
* @return similar to strcmp, zero for equal, less than zero for str1
|
||||
* being less and greater than zero for str1 being greater than str2.
|
||||
*/
|
||||
static CoreExport int compare(const char *str1, const char *str2, size_t n);
|
||||
static int compare(const char *str1, const char *str2, size_t n);
|
||||
|
||||
/** Find a char within a string up to position n.
|
||||
* @param s1 String to find in
|
||||
@@ -121,7 +121,7 @@ namespace irc
|
||||
* @param c Character to search for
|
||||
* @return Pointer to the first occurance of c in s1
|
||||
*/
|
||||
static CoreExport const char *find(const char *s1, int n, char c);
|
||||
static const char *find(const char *s1, int n, char c);
|
||||
};
|
||||
|
||||
/** This typedef declares irc::string based upon irc_char_traits.
|
||||
@@ -137,7 +137,7 @@ namespace ci
|
||||
* This class is used to implement ci::string, a case-insensitive, ASCII-
|
||||
* comparing string class.
|
||||
*/
|
||||
struct ci_char_traits : std::char_traits<char>
|
||||
struct CoreExport ci_char_traits : std::char_traits<char>
|
||||
{
|
||||
/** Check if two chars match.
|
||||
* @param c1st First character
|
||||
@@ -167,7 +167,7 @@ namespace ci
|
||||
* @return similar to strcmp, zero for equal, less than zero for str1
|
||||
* being less and greater than zero for str1 being greater than str2.
|
||||
*/
|
||||
static CoreExport int compare(const char *str1, const char *str2, size_t n);
|
||||
static int compare(const char *str1, const char *str2, size_t n);
|
||||
|
||||
/** Find a char within a string up to position n.
|
||||
* @param s1 String to find in
|
||||
@@ -175,7 +175,7 @@ namespace ci
|
||||
* @param c Character to search for
|
||||
* @return Pointer to the first occurance of c in s1
|
||||
*/
|
||||
static CoreExport const char *find(const char *s1, int n, char c);
|
||||
static const char *find(const char *s1, int n, char c);
|
||||
};
|
||||
|
||||
/** This typedef declares ci::string based upon ci_char_traits.
|
||||
@@ -189,7 +189,7 @@ namespace ci
|
||||
|
||||
/** Operator << for irc::string
|
||||
*/
|
||||
inline std::ostream &operator<<(std::ostream &os, const irc::string &str) { return os << str.c_str(); }
|
||||
inline std::ostream &operator<<(std::ostream &os, const irc::string &str) { return os << std::string(str.c_str()); }
|
||||
|
||||
/** Operator >> for irc::string
|
||||
*/
|
||||
@@ -203,7 +203,7 @@ inline std::istream &operator>>(std::istream &is, irc::string &str)
|
||||
|
||||
/** Operator << for ci::string
|
||||
*/
|
||||
inline std::ostream &operator<<(std::ostream &os, const ci::string &str) { return os << str.c_str(); }
|
||||
inline std::ostream &operator<<(std::ostream &os, const ci::string &str) { return os << std::string(str.c_str()); }
|
||||
|
||||
/** Operator >> for ci::string
|
||||
*/
|
||||
@@ -425,6 +425,8 @@ class CoreExport sepstream
|
||||
/** Create a sepstream and fill it with the provided data
|
||||
*/
|
||||
sepstream(const std::string &source, char seperator);
|
||||
sepstream(const ci::string &source, char seperator);
|
||||
sepstream(const char *source, char seperator);
|
||||
virtual ~sepstream() { }
|
||||
|
||||
/** Fetch the next token from the stream
|
||||
@@ -432,6 +434,7 @@ class CoreExport sepstream
|
||||
* @return True if tokens still remain, false if there are none left
|
||||
*/
|
||||
virtual bool GetToken(std::string &token);
|
||||
virtual bool GetToken(ci::string &token);
|
||||
|
||||
/** Fetch the entire remaining stream, without tokenizing
|
||||
* @return The remaining part of the stream
|
||||
@@ -446,22 +449,26 @@ class CoreExport sepstream
|
||||
|
||||
/** A derived form of sepstream, which seperates on commas
|
||||
*/
|
||||
class CoreExport commasepstream : public sepstream
|
||||
class commasepstream : public sepstream
|
||||
{
|
||||
public:
|
||||
/** Initialize with comma seperator
|
||||
*/
|
||||
commasepstream(const std::string &source) : sepstream(source, ',') { }
|
||||
commasepstream(const ci::string &source) : sepstream(source, ',') { }
|
||||
commasepstream(const char *source) : sepstream(source, ',') { }
|
||||
};
|
||||
|
||||
/** A derived form of sepstream, which seperates on spaces
|
||||
*/
|
||||
class CoreExport spacesepstream : public sepstream
|
||||
class spacesepstream : public sepstream
|
||||
{
|
||||
public:
|
||||
/** Initialize with space seperator
|
||||
*/
|
||||
spacesepstream(const std::string &source) : sepstream(source, ' ') { }
|
||||
spacesepstream(const ci::string &source) : sepstream(source, ' ') { }
|
||||
spacesepstream(const char *source) : sepstream(source, ' ') { }
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
/* Declarations of IRC message structures, variables, and functions.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2010 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
|
||||
+531
@@ -0,0 +1,531 @@
|
||||
/* Mode support
|
||||
*
|
||||
* Copyright (C) 2008-2010 Adam <Adam@anope.org>
|
||||
* Copyright (C) 2008-2010 Anope Team <team@anope.org>
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
/** All of the valid user mode names
|
||||
*/
|
||||
enum UserModeName
|
||||
{
|
||||
UMODE_BEGIN,
|
||||
|
||||
UMODE_SERV_ADMIN, UMODE_BOT, UMODE_CO_ADMIN, UMODE_FILTER, UMODE_HIDEOPER, UMODE_NETADMIN,
|
||||
UMODE_REGPRIV, UMODE_PROTECTED, UMODE_NO_CTCP, UMODE_WEBTV, UMODE_WHOIS, UMODE_ADMIN, UMODE_DEAF,
|
||||
UMODE_GLOBOPS, UMODE_HELPOP, UMODE_INVIS, UMODE_OPER, UMODE_PRIV, UMODE_GOD, UMODE_REGISTERED,
|
||||
UMODE_SNOMASK, UMODE_VHOST, UMODE_WALLOPS, UMODE_CLOAK, UMODE_SSL, UMODE_CALLERID, UMODE_COMMONCHANS,
|
||||
UMODE_HIDDEN, UMODE_STRIPCOLOR,
|
||||
|
||||
UMODE_END
|
||||
};
|
||||
|
||||
/** All of the valid channel mode names
|
||||
*/
|
||||
enum ChannelModeName
|
||||
{
|
||||
CMODE_BEGIN,
|
||||
|
||||
/* Channel modes */
|
||||
CMODE_BLOCKCOLOR, CMODE_FLOOD, CMODE_INVITE, CMODE_KEY, CMODE_LIMIT, CMODE_MODERATED, CMODE_NOEXTERNAL,
|
||||
CMODE_PRIVATE, CMODE_REGISTERED, CMODE_SECRET, CMODE_TOPIC, CMODE_AUDITORIUM, CMODE_SSL, CMODE_ADMINONLY,
|
||||
CMODE_NOCTCP, CMODE_FILTER, CMODE_NOKNOCK, CMODE_REDIRECT, CMODE_REGMODERATED, CMODE_NONICK, CMODE_OPERONLY,
|
||||
CMODE_NOKICK, CMODE_REGISTEREDONLY, CMODE_STRIPCOLOR, CMODE_NONOTICE, CMODE_NOINVITE, CMODE_ALLINVITE,
|
||||
CMODE_BLOCKCAPS, CMODE_PERM, CMODE_NICKFLOOD, CMODE_JOINFLOOD, CMODE_DELAYEDJOIN, CMODE_NOREJOIN,
|
||||
|
||||
/* b/e/I */
|
||||
CMODE_BAN, CMODE_EXCEPT,
|
||||
CMODE_INVITEOVERRIDE,
|
||||
|
||||
/* v/h/o/a/q */
|
||||
CMODE_VOICE, CMODE_HALFOP, CMODE_OP,
|
||||
CMODE_PROTECT, CMODE_OWNER,
|
||||
|
||||
CMODE_END
|
||||
};
|
||||
|
||||
/** The different types of modes
|
||||
*/
|
||||
enum ModeType
|
||||
{
|
||||
/* Regular mode */
|
||||
MODE_REGULAR,
|
||||
/* b/e/I */
|
||||
MODE_LIST,
|
||||
/* k/l etc */
|
||||
MODE_PARAM,
|
||||
/* v/h/o/a/q */
|
||||
MODE_STATUS
|
||||
};
|
||||
|
||||
/* Classes of modes, Channel modes and User modes
|
||||
*/
|
||||
enum ModeClass
|
||||
{
|
||||
/* Channel mode */
|
||||
MC_CHANNEL,
|
||||
/* User mode */
|
||||
MC_USER
|
||||
};
|
||||
|
||||
/** This class is the basis of all modes in Anope
|
||||
*/
|
||||
class CoreExport Mode
|
||||
{
|
||||
public:
|
||||
/* Class of mode this is */
|
||||
ModeClass Class;
|
||||
/* Mode char for this */
|
||||
char ModeChar;
|
||||
/* Type of mode this is */
|
||||
ModeType Type;
|
||||
|
||||
/** Default constructor
|
||||
* @param mClass The type of mode this is
|
||||
* @param modeChar The mode char
|
||||
* @param type The mode type
|
||||
*/
|
||||
Mode(ModeClass mClass, char modeChar, ModeType type);
|
||||
|
||||
/** Default destructor
|
||||
*/
|
||||
virtual ~Mode();
|
||||
};
|
||||
|
||||
/** This class is a user mode, all user modes use this/inherit from this
|
||||
*/
|
||||
class CoreExport UserMode : public Mode
|
||||
{
|
||||
public:
|
||||
|
||||
/* Mode name */
|
||||
UserModeName Name;
|
||||
|
||||
/** Default constructor
|
||||
* @param nName The mode name
|
||||
* @param modeChar The mode char
|
||||
*/
|
||||
UserMode(UserModeName mName, char modeChar);
|
||||
|
||||
/** Default destructor
|
||||
*/
|
||||
virtual ~UserMode();
|
||||
};
|
||||
|
||||
class UserModeParam : public UserMode
|
||||
{
|
||||
public:
|
||||
/** Default constructor
|
||||
* @param mName The mode name
|
||||
* @param modeChar The mode char
|
||||
*/
|
||||
UserModeParam(UserModeName mName, char modeChar);
|
||||
|
||||
/** Check if the param is valid
|
||||
* @param value The param
|
||||
* @return true or false
|
||||
*/
|
||||
virtual bool IsValid(const std::string &value) { return true; }
|
||||
};
|
||||
|
||||
/** This class is a channel mode, all channel modes use this/inherit from this
|
||||
*/
|
||||
class CoreExport ChannelMode : public Mode
|
||||
{
|
||||
public:
|
||||
|
||||
/* Mode name */
|
||||
ChannelModeName Name;
|
||||
|
||||
/** Default constructor
|
||||
* @param mName The mode name
|
||||
* @param modeChar The mode char
|
||||
*/
|
||||
ChannelMode(ChannelModeName mName, char modeChar);
|
||||
|
||||
/** Default destructor
|
||||
*/
|
||||
virtual ~ChannelMode();
|
||||
|
||||
/** Can a user set this mode, used for mlock
|
||||
* NOTE: User CAN be NULL, this is for checking if it can be locked with defcon
|
||||
* @param u The user, or NULL
|
||||
*/
|
||||
virtual bool CanSet(User *u) { return true; }
|
||||
};
|
||||
|
||||
|
||||
/** This is a mode for lists, eg b/e/I. These modes should inherit from this
|
||||
*/
|
||||
class CoreExport ChannelModeList : public ChannelMode
|
||||
{
|
||||
public:
|
||||
|
||||
/** Default constructor
|
||||
* @param mName The mode name
|
||||
* @param modeChar The mode char
|
||||
*/
|
||||
ChannelModeList(ChannelModeName mName, char modeChar);
|
||||
|
||||
/** Default destructor
|
||||
*/
|
||||
virtual ~ChannelModeList();
|
||||
|
||||
/** Is the mask valid
|
||||
* @param mask The mask
|
||||
* @return true for yes, false for no
|
||||
*/
|
||||
virtual bool IsValid(const std::string &mask) { return true; }
|
||||
|
||||
/** Add the mask to the channel, this should be overridden
|
||||
* @param chan The channel
|
||||
* @param mask The mask
|
||||
*/
|
||||
virtual void AddMask(Channel *chan, const char *mask) { }
|
||||
|
||||
/** Delete the mask from the channel, this should be overridden
|
||||
* @param chan The channel
|
||||
* @param mask The mask
|
||||
*/
|
||||
virtual void DelMask(Channel *chan, const char *mask) { }
|
||||
|
||||
};
|
||||
|
||||
/** This is a mode with a paramater, eg +k/l. These modes should use/inherit from this
|
||||
*/
|
||||
class CoreExport ChannelModeParam : public ChannelMode
|
||||
{
|
||||
public:
|
||||
|
||||
/** Default constructor
|
||||
* @param mName The mode name
|
||||
* @param modeChar The mode char
|
||||
* @param MinusArg true if this mode sends no arg when unsetting
|
||||
*/
|
||||
ChannelModeParam(ChannelModeName mName, char modeChar, bool MinusArg = false);
|
||||
|
||||
/** Default destructor
|
||||
*/
|
||||
virtual ~ChannelModeParam();
|
||||
|
||||
/* Should we send an arg when unsetting this mode? */
|
||||
bool MinusNoArg;
|
||||
|
||||
/** Is the param valid
|
||||
* @param value The param
|
||||
* @return true for yes, false for no
|
||||
*/
|
||||
virtual bool IsValid(const std::string &value) { return true; }
|
||||
};
|
||||
|
||||
/** This is a mode that is a channel status, eg +v/h/o/a/q.
|
||||
*/
|
||||
class CoreExport ChannelModeStatus : public ChannelMode
|
||||
{
|
||||
public:
|
||||
/* The symbol, eg @ % + */
|
||||
char Symbol;
|
||||
|
||||
/** Default constructor
|
||||
* @param mName The mode name
|
||||
* @param modeChar The mode char
|
||||
* @param mSymbol The symbol for the mode, eg @ % +
|
||||
*/
|
||||
ChannelModeStatus(ChannelModeName mName, char modeChar, char mSymbol);
|
||||
|
||||
/** Default destructor
|
||||
*/
|
||||
virtual ~ChannelModeStatus();
|
||||
};
|
||||
|
||||
/** Channel mode +b
|
||||
*/
|
||||
class CoreExport ChannelModeBan : public ChannelModeList
|
||||
{
|
||||
public:
|
||||
ChannelModeBan(char modeChar) : ChannelModeList(CMODE_BAN, modeChar) { }
|
||||
|
||||
void AddMask(Channel *chan, const char *mask);
|
||||
|
||||
void DelMask(Channel *chan, const char *mask);
|
||||
};
|
||||
|
||||
/** Channel mode +e
|
||||
*/
|
||||
class CoreExport ChannelModeExcept : public ChannelModeList
|
||||
{
|
||||
public:
|
||||
ChannelModeExcept(char modeChar) : ChannelModeList(CMODE_EXCEPT, modeChar) { }
|
||||
|
||||
void AddMask(Channel *chan, const char *mask);
|
||||
|
||||
void DelMask(Channel *chan, const char *mask);
|
||||
};
|
||||
|
||||
/** Channel mode +I
|
||||
*/
|
||||
class CoreExport ChannelModeInvite : public ChannelModeList
|
||||
{
|
||||
public:
|
||||
ChannelModeInvite(char modeChar) : ChannelModeList(CMODE_INVITEOVERRIDE, modeChar) { }
|
||||
|
||||
void AddMask(Channel *chan, const char *mask);
|
||||
|
||||
void DelMask(Channel *chan, const char *mask);
|
||||
};
|
||||
|
||||
|
||||
/** Channel mode +k (key)
|
||||
*/
|
||||
class CoreExport ChannelModeKey : public ChannelModeParam
|
||||
{
|
||||
public:
|
||||
ChannelModeKey(char modeChar) : ChannelModeParam(CMODE_KEY, modeChar) { }
|
||||
|
||||
bool IsValid(const std::string &value);
|
||||
};
|
||||
|
||||
/** Channel mode +f (flood)
|
||||
*/
|
||||
class ChannelModeFlood : public ChannelModeParam
|
||||
{
|
||||
public:
|
||||
ChannelModeFlood(char modeChar, bool minusNoArg = false) : ChannelModeParam(CMODE_FLOOD, modeChar, minusNoArg) { }
|
||||
|
||||
bool IsValid(const std::string &value);
|
||||
};
|
||||
|
||||
/** This class is used for channel mode +A (Admin only)
|
||||
* Only opers can mlock it
|
||||
*/
|
||||
class CoreExport ChannelModeAdmin : public ChannelMode
|
||||
{
|
||||
public:
|
||||
ChannelModeAdmin(char modeChar) : ChannelMode(CMODE_ADMINONLY, modeChar) { }
|
||||
|
||||
/* Opers only */
|
||||
bool CanSet(User *u);
|
||||
};
|
||||
|
||||
/** This class is used for channel mode +O (Opers only)
|
||||
* Only opers can mlock it
|
||||
*/
|
||||
class CoreExport ChannelModeOper : public ChannelMode
|
||||
{
|
||||
public:
|
||||
ChannelModeOper(char modeChar) : ChannelMode(CMODE_OPERONLY, modeChar) { }
|
||||
|
||||
/* Opers only */
|
||||
bool CanSet(User *u);
|
||||
};
|
||||
|
||||
/** This class is used for channel mode +r (registered channel)
|
||||
* No one may mlock r
|
||||
*/
|
||||
class CoreExport ChannelModeRegistered : public ChannelMode
|
||||
{
|
||||
public:
|
||||
ChannelModeRegistered(char modeChar) : ChannelMode(CMODE_REGISTERED, modeChar) { }
|
||||
|
||||
/* No one mlocks +r */
|
||||
bool CanSet(User *u);
|
||||
};
|
||||
|
||||
enum StackerType
|
||||
{
|
||||
ST_CHANNEL,
|
||||
ST_USER
|
||||
};
|
||||
|
||||
class StackerInfo
|
||||
{
|
||||
public:
|
||||
/* Modes to be added */
|
||||
std::list<std::pair<void *, std::string> > AddModes;
|
||||
/* Modes to be deleted */
|
||||
std::list<std::pair<void *, std::string> > DelModes;
|
||||
/* The type of object this stacker info is for */
|
||||
StackerType Type;
|
||||
/* Bot this is sent from */
|
||||
BotInfo *bi;
|
||||
|
||||
/** Add a mode to this object
|
||||
* @param Mode The mode
|
||||
* @param Set true if setting, false if unsetting
|
||||
* @param Param The param for the mode
|
||||
*/
|
||||
void AddMode(void *Mode, bool Set, const std::string &Param);
|
||||
};
|
||||
|
||||
/** This is mode manager
|
||||
* It contains functions for adding modes to Anope so Anope can track them
|
||||
* and do things such as MLOCK.
|
||||
* This also contains a mode stacker that will combine multiple modes and set
|
||||
* them on a channel all at once
|
||||
*/
|
||||
class CoreExport ModeManager
|
||||
{
|
||||
protected:
|
||||
/* List of pairs of user/channels and their stacker info */
|
||||
static std::list<std::pair<void *, StackerInfo *> > StackerObjects;
|
||||
|
||||
/** Get the stacker info for an item, if one doesnt exist it is created
|
||||
* @param Item The user/channel etc
|
||||
* @return The stacker info
|
||||
*/
|
||||
static StackerInfo *GetInfo(void *Item);
|
||||
|
||||
/** Build a list of mode strings to send to the IRCd from the mode stacker
|
||||
* @param info The stacker info for a channel or user
|
||||
* @return a list of strings
|
||||
*/
|
||||
static std::list<std::string> BuildModeStrings(StackerInfo *info);
|
||||
|
||||
/** Add a mode to the stacker, internal use only
|
||||
* @param bi The client to set the modes from
|
||||
* @param u The user
|
||||
* @param um The user mode
|
||||
* @param Set Adding or removing?
|
||||
* @param Param A param, if there is one
|
||||
*/
|
||||
static void StackerAddInternal(BotInfo *bi, User *u, UserMode *um, bool Set, const std::string &Param);
|
||||
|
||||
/** Add a mode to the stacker, internal use only
|
||||
* @param bi The client to set the modes from
|
||||
* @param c The channel
|
||||
* @param cm The channel mode
|
||||
* @param Set Adding or removing?
|
||||
* @param Param A param, if there is one
|
||||
*/
|
||||
static void StackerAddInternal(BotInfo *bi, Channel *c, ChannelMode *cm, bool Set, const std::string &Param);
|
||||
|
||||
/** Really add a mode to the stacker, internal use only
|
||||
* @param bi The client to set the modes from
|
||||
* @param Object The object, user/channel
|
||||
* @param Mode The mode
|
||||
* @param Set Adding or removing?
|
||||
* @param Param A param, if there is one
|
||||
* @param Type The type this is, user or channel
|
||||
*/
|
||||
static void StackerAddInternal(BotInfo *bi, void *Object, void *Mode, bool Set, const std::string &Param, StackerType Type);
|
||||
|
||||
public:
|
||||
/* User modes */
|
||||
static std::map<char, UserMode *> UserModesByChar;
|
||||
static std::map<UserModeName, UserMode *> UserModesByName;
|
||||
/* Channel modes */
|
||||
static std::map<char, ChannelMode *> ChannelModesByChar;
|
||||
static std::map<ChannelModeName, ChannelMode *> ChannelModesByName;
|
||||
/* Although there are two different maps for UserModes and ChannelModes
|
||||
* the pointers in each are the same. This is used to increase
|
||||
* efficiency.
|
||||
*/
|
||||
/* List of all modes Anope knows about */
|
||||
static std::list<Mode *> Modes;
|
||||
|
||||
/** Add a user mode to Anope
|
||||
* @param um A UserMode or UserMode derived class
|
||||
* @return true on success, false on error
|
||||
*/
|
||||
static bool AddUserMode(UserMode *um);
|
||||
|
||||
/** Add a channel mode to Anope
|
||||
* @param cm A ChannelMode or ChannelMode derived class
|
||||
* @return true on success, false on error
|
||||
*/
|
||||
static bool AddChannelMode(ChannelMode *cm);
|
||||
|
||||
/** Find a channel mode
|
||||
* @param Mode The mode
|
||||
* @return The mode class
|
||||
*/
|
||||
static ChannelMode *FindChannelModeByChar(char Mode);
|
||||
|
||||
/** Find a user mode
|
||||
* @param Mode The mode
|
||||
* @return The mode class
|
||||
*/
|
||||
static UserMode *FindUserModeByChar(char Mode);
|
||||
|
||||
/** Find a channel mode
|
||||
* @param Mode The modename
|
||||
* @return The mode class
|
||||
*/
|
||||
static ChannelMode *FindChannelModeByName(ChannelModeName Name);
|
||||
|
||||
/** Find a user mode
|
||||
* @param Mode The modename
|
||||
* @return The mode class
|
||||
*/
|
||||
static UserMode *FindUserModeByName(UserModeName Name);
|
||||
|
||||
/** Gets the channel mode char for a symbol (eg + returns v)
|
||||
* @param Value The symbol
|
||||
* @return The char
|
||||
*/
|
||||
static char GetStatusChar(char Value);
|
||||
|
||||
/** Add a mode to the stacker to be set on a channel
|
||||
* @param bi The client to set the modes from
|
||||
* @param c The channel
|
||||
* @param cm The channel mode
|
||||
* @param Set true for setting, false for removing
|
||||
* @param Param The param, if there is one
|
||||
*/
|
||||
static void StackerAdd(BotInfo *bi, Channel *c, ChannelMode *cm, bool Set, const std::string &Param = "");
|
||||
|
||||
/** Add a mode to the stacker to be set on a channel
|
||||
* @param bi The client to set the modes from
|
||||
* @param c The channel
|
||||
* @param Name The channel mode name
|
||||
* @param Set true for setting, false for removing
|
||||
* @param Param The param, if there is one
|
||||
*/
|
||||
static void StackerAdd(BotInfo *bi, Channel *c, ChannelModeName Name, bool Set, const std::string &Param = "");
|
||||
|
||||
/** Add a mode to the stacker to be set on a channel
|
||||
* @param bi The client to set the modes from
|
||||
* @param c The channel
|
||||
* @param Mode The mode char
|
||||
* @param Set true for setting, false for removing
|
||||
* @param Param The param, if there is one
|
||||
*/
|
||||
static void StackerAdd(BotInfo *bi, Channel *c, const char Mode, bool Set, const std::string &Param = "");
|
||||
|
||||
/** Add a mode to the stacker to be set on a user
|
||||
* @param bi The client to set the modes from
|
||||
* @param u The user
|
||||
* @param um The user mode
|
||||
* @param Set true for setting, false for removing
|
||||
* @param param The param, if there is one
|
||||
*/
|
||||
static void StackerAdd(BotInfo *bi, User *u, UserMode *um, bool Set, const std::string &Param = "");
|
||||
|
||||
/** Add a mode to the stacker to be set on a user
|
||||
* @param bi The client to set the modes from
|
||||
* @param u The user
|
||||
* @param Name The user mode name
|
||||
* @param Set true for setting, false for removing
|
||||
* @param Param The param, if there is one
|
||||
*/
|
||||
static void StackerAdd(BotInfo *bi, User *u, UserModeName Name, bool Set, const std::string &Param = "");
|
||||
|
||||
/** Add a mode to the stacker to be set on a user
|
||||
* @param bi The client to set the modes from
|
||||
* @param u The user
|
||||
* @param Mode The mode to be set
|
||||
* @param Set true for setting, false for removing
|
||||
* @param Param The param, if there is one
|
||||
*/
|
||||
static void StackerAdd(BotInfo *bi, User *u, const char Mode, bool Set, const std::string &Param = "");
|
||||
|
||||
/** Process all of the modes in the stacker and send them to the IRCd to be set on channels/users
|
||||
*/
|
||||
static void ProcessModes();
|
||||
};
|
||||
|
||||
+436
-186
@@ -1,6 +1,6 @@
|
||||
/* Modular support
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2010 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
@@ -70,7 +70,7 @@ enum EventReturn
|
||||
} \
|
||||
catch (CoreException& modexcept) \
|
||||
{ \
|
||||
alog("Exception caught: %s",modexcept.GetReason()); \
|
||||
Alog() << "Exception caught: " << modexcept.GetReason(); \
|
||||
} \
|
||||
_i = safei; \
|
||||
} \
|
||||
@@ -99,7 +99,7 @@ do { \
|
||||
} \
|
||||
catch (CoreException& modexcept) \
|
||||
{ \
|
||||
alog("Exception caught: %s",modexcept.GetReason()); \
|
||||
Alog() << "Exception caught: " << modexcept.GetReason(); \
|
||||
} \
|
||||
_i = safei; \
|
||||
} \
|
||||
@@ -186,7 +186,7 @@ enum CommandReturn
|
||||
const char *ano_moderr();
|
||||
#endif
|
||||
|
||||
typedef enum { CORE,PROTOCOL,THIRD,SUPPORTED,QATESTED,ENCRYPTION } MODType;
|
||||
typedef enum { CORE,PROTOCOL,THIRD,SUPPORTED,QATESTED,ENCRYPTION,DATABASE } MODType;
|
||||
typedef enum { MOD_OP_LOAD, MOD_OP_UNLOAD } ModuleOperation;
|
||||
|
||||
/*************************************************************************/
|
||||
@@ -217,21 +217,20 @@ struct ModuleLang_ {
|
||||
char **argv;
|
||||
};
|
||||
|
||||
enum CommandFlags
|
||||
enum CommandFlag
|
||||
{
|
||||
CFLAG_ALLOW_UNREGISTERED = 1,
|
||||
CFLAG_ALLOW_FORBIDDEN = 2,
|
||||
CFLAG_ALLOW_SUSPENDED = 4,
|
||||
CFLAG_ALLOW_UNREGISTEREDCHANNEL = 8,
|
||||
CFLAG_STRIP_CHANNEL = 16,
|
||||
CFLAG_DISABLE_FANTASY = 32
|
||||
CFLAG_ALLOW_UNREGISTERED,
|
||||
CFLAG_ALLOW_FORBIDDEN,
|
||||
CFLAG_ALLOW_SUSPENDED,
|
||||
CFLAG_ALLOW_UNREGISTEREDCHANNEL,
|
||||
CFLAG_STRIP_CHANNEL,
|
||||
CFLAG_DISABLE_FANTASY
|
||||
};
|
||||
|
||||
/** Every services command is a class, inheriting from Command.
|
||||
*/
|
||||
class CoreExport Command
|
||||
class CoreExport Command : public Flags<CommandFlag>
|
||||
{
|
||||
int flags;
|
||||
public:
|
||||
size_t MaxParams;
|
||||
size_t MinParams;
|
||||
@@ -250,7 +249,7 @@ class CoreExport Command
|
||||
/** Execute this command.
|
||||
* @param u The user executing the command.
|
||||
*/
|
||||
virtual CommandReturn Execute(User *u, std::vector<ci::string> &);
|
||||
virtual CommandReturn Execute(User *u, const std::vector<ci::string> &);
|
||||
|
||||
/** Requested when the user is requesting help on this command. Help on this command should be sent to the user.
|
||||
* @param u The user requesting help
|
||||
@@ -261,24 +260,9 @@ class CoreExport Command
|
||||
|
||||
/** Requested when the user provides bad syntax to this command (not enough params, etc).
|
||||
* @param u The user executing the command.
|
||||
* @param subcommand The subcommand the user tried to use
|
||||
*/
|
||||
virtual void OnSyntaxError(User *u);
|
||||
|
||||
/** Set a certain flag on this command.
|
||||
* @param flag The CommandFlag to set on this command.
|
||||
*/
|
||||
void SetFlag(CommandFlags flag);
|
||||
|
||||
/** Remove a certain flag from this command.
|
||||
* @param flag The CommandFlag to unset.
|
||||
*/
|
||||
void UnsetFlag(CommandFlags flag);
|
||||
|
||||
/** Check whether a certain flag is set on this command.
|
||||
* @param flag The CommandFlag to check.
|
||||
* @return bool True if the flag is set, false else.
|
||||
*/
|
||||
bool HasFlag(CommandFlags flag) const;
|
||||
virtual void OnSyntaxError(User *u, const ci::string &subcommand);
|
||||
|
||||
/** Set which command permission (e.g. chanserv/forbid) is required for this command.
|
||||
* @param reststr The permission required to successfully execute this command
|
||||
@@ -292,7 +276,7 @@ class CoreExport Command
|
||||
Command *next;
|
||||
};
|
||||
|
||||
class CoreExport Version
|
||||
class Version
|
||||
{
|
||||
private:
|
||||
unsigned Major;
|
||||
@@ -327,6 +311,9 @@ class CoreExport Version
|
||||
const unsigned GetBuild();
|
||||
};
|
||||
|
||||
/* Forward declaration of CallBack class for the Module class */
|
||||
class CallBack;
|
||||
|
||||
/** Every module in Anope is actually a class.
|
||||
*/
|
||||
class CoreExport Module
|
||||
@@ -342,9 +329,9 @@ class CoreExport Module
|
||||
*/
|
||||
std::string filename;
|
||||
|
||||
/** Timers used in this module
|
||||
/** Callbacks used in this module
|
||||
*/
|
||||
std::list<Timer *> CallBacks;
|
||||
std::list<CallBack *> CallBacks;
|
||||
|
||||
ano_module_t handle;
|
||||
time_t created;
|
||||
@@ -400,48 +387,6 @@ class CoreExport Module
|
||||
*/
|
||||
virtual Version GetVersion() { return Version(VERSION_MAJOR, VERSION_MINOR, VERSION_BUILD); }
|
||||
|
||||
/** Add output to NickServ Help.
|
||||
* When doing /msg NickServ HELP, this function will be calloed to allow it to send out
|
||||
* a notice witht he code you wish to display
|
||||
* @Param u The user executing the command
|
||||
*/
|
||||
virtual void NickServHelp(User *u) { }
|
||||
|
||||
/** Add output to ChanServ Help.
|
||||
* When doing /msg ChanServ HELP, this function will be calloed to allow it to send out
|
||||
* a notice witht he code you wish to display
|
||||
* @Param u The user executing the command
|
||||
*/
|
||||
virtual void ChanServHelp(User *u) { }
|
||||
|
||||
/** Add output to MemoServ Help.
|
||||
* When doing /msg MemoServ HELP, this function will be calloed to allow it to send out
|
||||
* a notice witht he code you wish to display
|
||||
* @Param u The user executing the command
|
||||
*/
|
||||
virtual void MemoServHelp(User *u) { }
|
||||
|
||||
/** Add output to BotServ Help.
|
||||
* When doing /msg BotServ HELP, this function will be calloed to allow it to send out
|
||||
* a notice witht he code you wish to display
|
||||
* @Param u The user executing the command
|
||||
*/
|
||||
virtual void BotServHelp(User *u) { }
|
||||
|
||||
/** Add output to OperServ Help.
|
||||
* When doing /msg OperServ HELP, this function will be calloed to allow it to send out
|
||||
* a notice witht he code you wish to display
|
||||
* @Param u The user executing the command
|
||||
*/
|
||||
virtual void OperServHelp(User *u) { }
|
||||
|
||||
/** Add output to HostServ Help.
|
||||
* When doing /msg HostServ HELP, this function will be calloed to allow it to send out
|
||||
* a notice witht he code you wish to display
|
||||
* @Param u The user executing the command
|
||||
*/
|
||||
virtual void HostServHelp(User *u) { }
|
||||
|
||||
/**
|
||||
* Allow a module to add a set of language strings to anope
|
||||
* @param langNumber the language number for the strings
|
||||
@@ -471,7 +416,7 @@ class CoreExport Module
|
||||
* @param number The message number
|
||||
* @param ... The argument list
|
||||
**/
|
||||
void NoticeLang(char *source, User * u, int number, ...);
|
||||
void NoticeLang(const char *source, User * u, int number, ...);
|
||||
|
||||
/**
|
||||
* Add a module provided command to the given service.
|
||||
@@ -490,19 +435,35 @@ class CoreExport Module
|
||||
*/
|
||||
int DelCommand(CommandHash * cmdTable[], const char *name);
|
||||
|
||||
/**
|
||||
* Adds a timer to the current module
|
||||
* The timer handling will take care of everything for this timer, this is only here
|
||||
* so we have a list of timers to destroy when this module is unloaded
|
||||
* @param t A timer derived class
|
||||
/** Called on NickServ HELP
|
||||
* @param u The user requesting help
|
||||
*/
|
||||
void AddCallBack(Timer *t);
|
||||
virtual void OnNickServHelp(User *u) { }
|
||||
|
||||
/**
|
||||
* Deletes a timer for the current module
|
||||
* @param t The timer
|
||||
/** Called on ChanServ HELP
|
||||
* @param u The user requesting help
|
||||
*/
|
||||
bool DelCallBack(Timer *t);
|
||||
virtual void OnChanServHelp(User *u) { }
|
||||
|
||||
/** Called on Botserv HELP
|
||||
* @param u The user requesting help
|
||||
*/
|
||||
virtual void OnBotServHelp(User *u) { }
|
||||
|
||||
/** Called on HostServ HELP
|
||||
* @param u The user requesting help
|
||||
*/
|
||||
virtual void OnHostServHelp(User *u) { }
|
||||
|
||||
/** Called on OperServ HELP
|
||||
* @param u The user requesting help
|
||||
*/
|
||||
virtual void OnOperServHelp(User *u) { }
|
||||
|
||||
/** Called on MemoServ HELP
|
||||
* @param u The user requesting help
|
||||
*/
|
||||
virtual void OnMemoServHelp(User *u) { }
|
||||
|
||||
/** Called when the ircd notifies that a user has been kicked from a channel.
|
||||
* @param c The channel the user has been kicked from.
|
||||
@@ -532,6 +493,16 @@ class CoreExport Module
|
||||
*/
|
||||
virtual EventReturn OnBotUnAssign(User *sender, ChannelInfo *ci) { return EVENT_CONTINUE; }
|
||||
|
||||
/** Called after a user has been introduced, but before any type
|
||||
* of checking has been done (akills, defcon, s*lines, etc)
|
||||
* return EVENT_STOP here to allow the user to get by untouched,
|
||||
* or kill them then return EVENT_STOP to tell Anope the user no
|
||||
* longer exists
|
||||
* @param u The user
|
||||
* @return EVENT_CONTINUE to let other modules decide, EVENT_STOP to stop processing
|
||||
*/
|
||||
virtual EventReturn OnPreUserConnect(User *u) { return EVENT_CONTINUE; }
|
||||
|
||||
/** Called when a new user connects to the network.
|
||||
* @param u The connecting user.
|
||||
*/
|
||||
@@ -540,13 +511,22 @@ class CoreExport Module
|
||||
/** Called when a new server connects to the network.
|
||||
* @param s The server that has connected to the network
|
||||
*/
|
||||
virtual void OnServerConnect(Server *s) { }
|
||||
virtual void OnNewServer(Server *s) { }
|
||||
|
||||
/** Called after a user changed the nick
|
||||
* @param u The user.
|
||||
* @param oldnick the old nick of the user
|
||||
* @param oldnick The old nick of the user
|
||||
*/
|
||||
virtual void OnUserNickChange(User *u, const char *oldnick) { }
|
||||
virtual void OnUserNickChange(User *u, const std::string &oldnick) { }
|
||||
|
||||
/** Called immediatly when a user tries to run a command
|
||||
* @param service The service
|
||||
* @param u The user
|
||||
* @param cmd The command
|
||||
* @param c The command class (if it exists)
|
||||
* @return EVENT_CONTINUE to let other modules decide, EVENT_STOP to halt the command and not process it
|
||||
*/
|
||||
virtual EventReturn OnPreCommandRun(const std::string &service, User *u, const char *cmd, Command *c) { return EVENT_CONTINUE; }
|
||||
|
||||
/** Called before a command is due to be executed.
|
||||
* @param u The user executing the command
|
||||
@@ -570,25 +550,23 @@ class CoreExport Module
|
||||
*/
|
||||
virtual void OnPostLoadDatabases() { }
|
||||
|
||||
/** Called when anope saves databases.
|
||||
* NOTE: This event is deprecated pending new database handling.
|
||||
* XXX.
|
||||
/** Called when the databases are saved
|
||||
* @return EVENT_CONTINUE to let other modules continue saving, EVENT_STOP to stop
|
||||
*/
|
||||
virtual void OnSaveDatabase() MARK_DEPRECATED { }
|
||||
virtual EventReturn OnSaveDatabase() { return EVENT_CONTINUE; }
|
||||
|
||||
/** Called when anope backs up databases.
|
||||
* NOTE: This event is deprecated pending new database handling.
|
||||
/** Called when the databases are loaded
|
||||
* @return EVENT_CONTINUE to let other modules continue saving, EVENT_STOP to stop
|
||||
*/
|
||||
virtual void OnBackupDatabase() MARK_DEPRECATED { }
|
||||
virtual EventReturn OnLoadDatabase() { return EVENT_CONTINUE; }
|
||||
|
||||
/** Called when anope needs to check passwords against encryption
|
||||
* see src/encrypt.c for detailed informations
|
||||
*/
|
||||
virtual EventReturn OnEncrypt(const char *src,int len,char *dest,int size) { return EVENT_CONTINUE; }
|
||||
virtual EventReturn OnEncryptInPlace(char *buf, int size) { return EVENT_CONTINUE; }
|
||||
virtual EventReturn OnEncryptCheckLen(int passlen, int bufsize) { return EVENT_CONTINUE; }
|
||||
virtual EventReturn OnDecrypt(const char *src, char *dest, int size) { return EVENT_CONTINUE; }
|
||||
virtual EventReturn OnCheckPassword(const char *plaintext, const char *password) { return EVENT_CONTINUE; }
|
||||
virtual EventReturn OnEncrypt(const std::string &src, std::string &dest) { return EVENT_CONTINUE; }
|
||||
virtual EventReturn OnEncryptInPlace(std::string &buf) { return EVENT_CONTINUE; }
|
||||
virtual EventReturn OnDecrypt(const std::string &hashm, const std::string &src, std::string &dest) { return EVENT_CONTINUE; }
|
||||
virtual EventReturn OnCheckPassword(const std::string &hashm, std::string &plaintext, std::string &password) { return EVENT_CONTINUE; }
|
||||
|
||||
/** Called on fantasy command
|
||||
* @param command The command
|
||||
@@ -618,19 +596,27 @@ class CoreExport Module
|
||||
* @param mask The mask being banned
|
||||
*/
|
||||
virtual void OnBotBan(User *u, ChannelInfo *ci, const char *mask) { }
|
||||
|
||||
/** Called after a bot has been created, but NOT added to the internal
|
||||
* list and NOT introduced
|
||||
* @param bi The bot
|
||||
*/
|
||||
virtual void OnBotPreLoad(BotInfo *bi) { }
|
||||
|
||||
/** Called when a bot kicks a user
|
||||
* @param u The user being kicked
|
||||
|
||||
/** Called before a badword is added to the badword list
|
||||
* @param ci The channel
|
||||
* @param reason The reason
|
||||
* @param bw The badword
|
||||
*/
|
||||
virtual void OnBotKick(User *u, ChannelInfo *ci, const std::string &reason) { }
|
||||
virtual void OnBadWordAdd(ChannelInfo *ci, BadWord *bw) { }
|
||||
|
||||
/** Called before a badword is deleted from a channel
|
||||
* @param ci The channel
|
||||
* @param bw The badword
|
||||
*/
|
||||
virtual void OnBadWordDel(ChannelInfo *ci, BadWord *bw) { }
|
||||
|
||||
/** Called before a bot kicks a user
|
||||
* @param bi The bot sending the kick
|
||||
* @param c The channel the user is being kicked on
|
||||
* @param u The user being kicked
|
||||
* @param reason The reason
|
||||
* @return EVENT_CONTINUE to let other modules decide, EVENT_STOP to halt the command and not process it
|
||||
*/
|
||||
virtual EventReturn OnBotKick(BotInfo *bi, Channel *c, User *u, const std::string &reason) { return EVENT_CONTINUE; }
|
||||
|
||||
/** Called before a user parts a channel
|
||||
* @param u The user
|
||||
@@ -640,15 +626,18 @@ class CoreExport Module
|
||||
|
||||
/** Called when a user parts a channel
|
||||
* @param u The user
|
||||
* @param c The channel
|
||||
* @param c The channel, may be NULL if the channel no longer exists
|
||||
* @param channel The channel name
|
||||
* @param msg The part reason
|
||||
*/
|
||||
virtual void OnPartChannel(User *u, Channel *c, const std::string &msg) { }
|
||||
virtual void OnPartChannel(User *u, Channel *c, const std::string &channel, const std::string &msg) { }
|
||||
|
||||
/** Called before a user joins a channel
|
||||
* @param u The user
|
||||
* @param channel The channel
|
||||
* @param c The channel
|
||||
* @return EVENT_STOP to allow the user to join the channel through restrictions, EVENT_CONTINUE to let other modules decide
|
||||
*/
|
||||
virtual void OnPreJoinChannel(User *u, const char *channel) { }
|
||||
virtual EventReturn OnPreJoinChannel(User *u, Channel *c) { return EVENT_CONTINUE; }
|
||||
|
||||
/** Called when a user joins a channel
|
||||
* @param u The user
|
||||
@@ -662,6 +651,12 @@ class CoreExport Module
|
||||
*/
|
||||
virtual void OnTopicUpdated(Channel *c, const char *topic) { }
|
||||
|
||||
/** Called before a channel expires
|
||||
* @param ci The channel
|
||||
* @return EVENT_CONTINUE to let other modules decide, EVENT_STOP to halt the command and not process it
|
||||
*/
|
||||
virtual EventReturn OnPreChanExpire(ChannelInfo *ci) { return EVENT_CONTINUE; }
|
||||
|
||||
/** Called when a channel expires
|
||||
* @param chname The channel name
|
||||
*/
|
||||
@@ -671,10 +666,18 @@ class CoreExport Module
|
||||
*/
|
||||
virtual void OnPreServerConnect() { }
|
||||
|
||||
/** Called when anope connects to its uplink
|
||||
/** Called when Anope connects to its uplink
|
||||
*/
|
||||
virtual void OnServerConnect() { }
|
||||
|
||||
/** Called when we are done synching with the uplink, just before we send the EOB
|
||||
*/
|
||||
virtual void OnFinishSync(Server *serv) { }
|
||||
|
||||
/** Called when Anope disconnects from its uplink, before it tries to reconnect
|
||||
*/
|
||||
virtual void OnServerDisconnect() { }
|
||||
|
||||
/** Called before the database expire routines are called
|
||||
* Note: Code that is in seperate expiry routines should just be done
|
||||
* when we save the DB, theres no need to have both
|
||||
@@ -685,6 +688,73 @@ class CoreExport Module
|
||||
*/
|
||||
virtual void OnDatabaseExpire() MARK_DEPRECATED { }
|
||||
|
||||
/** Called when the flatfile dbs are being written
|
||||
* @param Write A callback to the function used to insert a line into the database
|
||||
*/
|
||||
virtual void OnDatabaseWrite(void (*Write)(const std::string &)) { }
|
||||
|
||||
/** Called when a line is read from the database
|
||||
* @param params The params from the database
|
||||
* @return EVENT_CONTINUE to let other modules decide, EVENT_STOP to stop processing
|
||||
*/
|
||||
virtual EventReturn OnDatabaseRead(const std::vector<std::string> ¶ms) { return EVENT_CONTINUE; }
|
||||
|
||||
/** Called when nickcore metadata is read from the database
|
||||
* @param nc The nickcore
|
||||
* @param key The metadata key
|
||||
* @param params The params from the database
|
||||
* @return EVENT_CONTINUE to let other modules decide, EVENT_STOP to stop processing
|
||||
*/
|
||||
virtual EventReturn OnDatabaseReadMetadata(NickCore *nc, const std::string &key, const std::vector<std::string> ¶ms) { return EVENT_CONTINUE; }
|
||||
|
||||
/** Called when nickcore metadata is read from the database
|
||||
* @param na The nickalias
|
||||
* @param key The metadata key
|
||||
* @param params The params from the database
|
||||
* @return EVENT_CONTINUE to let other modules decide, EVENT_STOP to stop processing
|
||||
*/
|
||||
virtual EventReturn OnDatabaseReadMetadata(NickAlias *na, const std::string &key, const std::vector<std::string> ¶ms) { return EVENT_CONTINUE; }
|
||||
|
||||
/** Called when botinfo metadata is read from the database
|
||||
* @param bi The botinfo
|
||||
* @param key The metadata key
|
||||
* @param params The params from the database
|
||||
* @return EVENT_CONTINUE to let other modules decide, EVENT_STOP to stop processing
|
||||
*/
|
||||
virtual EventReturn OnDatabaseReadMetadata(BotInfo *bi, const std::string &key, const std::vector<std::string> ¶ms) { return EVENT_CONTINUE; }
|
||||
|
||||
/** Called when chaninfo metadata is read from the database
|
||||
* @param ci The chaninfo
|
||||
* @param key The metadata key
|
||||
* @param params The params from the database
|
||||
* @return EVENT_CONTINUE to let other modules decide, EVENT_STOP to stop processing
|
||||
*/
|
||||
virtual EventReturn OnDatabaseReadMetadata(ChannelInfo *ci, const std::string &key, const std::vector<std::string> ¶ms) { return EVENT_CONTINUE; }
|
||||
|
||||
/** Called when we are writing metadata for a nickcore
|
||||
* @param WriteMetata A callback function used to insert the metadata
|
||||
* @param nc The nickcore
|
||||
*/
|
||||
virtual void OnDatabaseWriteMetadata(void (*WriteMetadata)(const std::string &, const std::string &), NickCore *nc) { }
|
||||
|
||||
/** Called when we are wrting metadata for a nickalias
|
||||
* @param WriteMetata A callback function used to insert the metadata
|
||||
* @param na The nick alias
|
||||
*/
|
||||
virtual void OnDatabaseWriteMetadata(void (*WriteMetadata)(const std::string &, const std::string &), NickAlias *na) { }
|
||||
|
||||
/** Called when we are writing metadata for a botinfo
|
||||
* @param WriteMetata A callback function used to insert the metadata
|
||||
* @param bi The botinfo
|
||||
*/
|
||||
virtual void OnDatabaseWriteMetadata(void (*WriteMetadata)(const std::string &, const std::string &), BotInfo *bi) { }
|
||||
|
||||
/** Called when are are writing metadata for a channelinfo
|
||||
* @param WriteMetata A callback function used to insert the metadata
|
||||
* @param bi The channelinfo
|
||||
*/
|
||||
virtual void OnDatabaseWriteMetadata(void (*WriteMetadata)(const std::string &, const std::string &), ChannelInfo *ci) { }
|
||||
|
||||
/** Called before services restart
|
||||
*/
|
||||
virtual void OnPreRestart() { }
|
||||
@@ -706,6 +776,12 @@ class CoreExport Module
|
||||
*/
|
||||
virtual void OnSignal(const char *msg) { }
|
||||
|
||||
/** Called before a nick expires
|
||||
* @param na The nick
|
||||
* @return EVENT_CONTINUE to let other modules decide, EVENT_STOP to halt the command and not process it
|
||||
*/
|
||||
virtual EventReturn OnPreNickExpire(NickAlias *na) { return EVENT_CONTINUE; }
|
||||
|
||||
/** Called when a nick drops
|
||||
* @param nick The nick
|
||||
*/
|
||||
@@ -714,14 +790,55 @@ class CoreExport Module
|
||||
/** Called when defcon level changes
|
||||
* @param level The level
|
||||
*/
|
||||
virtual void OnDefconLevel(const char *level) { }
|
||||
virtual void OnDefconLevel(int level) { }
|
||||
|
||||
/** Called before an akill is added
|
||||
* @param u The user adding the akill
|
||||
* @param ak The akill
|
||||
* @return EVENT_CONTINUE to let other modules decide, EVENT_STOP to halt the command and not process it
|
||||
*/
|
||||
virtual EventReturn OnAddAkill(User *u, Akill *ak) { return EVENT_CONTINUE; }
|
||||
|
||||
/** Called before an akill is deleted
|
||||
* @param u The user removing the akill
|
||||
* @param ak The akill, can be NULL for all akills!
|
||||
*/
|
||||
virtual void OnDelAkill(User *u, Akill *ak) { }
|
||||
|
||||
/** Called after an exception has been added
|
||||
* @param u The user who added it
|
||||
* @param ex The exception
|
||||
* @return EVENT_CONTINUE to let other modules decide, EVENT_STOP to halt the command and not process it
|
||||
*/
|
||||
virtual EventReturn OnExceptionAdd(User *u, Exception *ex) { return EVENT_CONTINUE; }
|
||||
|
||||
/** Called before an exception is deleted
|
||||
* @param u The user who is deleting it
|
||||
* @param ex The exceotion
|
||||
*/
|
||||
virtual void OnExceptionDel(User *u, Exception *ex) { }
|
||||
|
||||
/** Called before a SXLine is added
|
||||
* @param u The user adding the SXLine
|
||||
* @param sx The SXLine
|
||||
* @param Type The type of SXLine this is
|
||||
* @return EVENT_CONTINUE to let other modules decide, EVENT_STOP to halt the command and not process it
|
||||
*/
|
||||
virtual EventReturn OnAddSXLine(User *u, SXLine *sx, SXLineType Type) { return EVENT_CONTINUE; }
|
||||
|
||||
/** Called before a SXLine is deleted
|
||||
* @param u The user deleting the SXLine
|
||||
* @param sx The SXLine, can be NULL for all SXLines
|
||||
* @param Type The type of SXLine this is
|
||||
*/
|
||||
virtual void OnDelSXLine(User *u, SXLine *sx, SXLineType Type) { }
|
||||
|
||||
/** Called when a server quits
|
||||
* @param server The server
|
||||
*/
|
||||
virtual void OnServerQuit(Server *server) { }
|
||||
|
||||
/** Called on a QUIT
|
||||
/** Called on a QUIT
|
||||
* @param u The user
|
||||
* @param msg The quit message
|
||||
*/
|
||||
@@ -750,25 +867,25 @@ class CoreExport Module
|
||||
/** Called when access is deleted from a channel
|
||||
* @param ci The channel
|
||||
* @param u The user who removed the access
|
||||
* @param nick The name of the user whos access was removed
|
||||
* @param nc The user who was deleted
|
||||
*/
|
||||
virtual void OnAccessDel(ChannelInfo *ci, User *u, const char *nick) { }
|
||||
virtual void OnAccessDel(ChannelInfo *ci, User *u, NickCore *nc) { }
|
||||
|
||||
/** Called when access is changed
|
||||
* @param ci The channel
|
||||
* @param u The user who changed the access
|
||||
* @param nick The nick whos access was changed
|
||||
* @param na The nick whos access was changed
|
||||
* @param level The level of the new access
|
||||
*/
|
||||
virtual void OnAccessChange(ChannelInfo *ci, User *u, const char *nick, int level) { }
|
||||
virtual void OnAccessChange(ChannelInfo *ci, User *u, NickAlias *na, int level) { }
|
||||
|
||||
/** Called when access is added
|
||||
* @param ci The channel
|
||||
* @param u The user who added the access
|
||||
* @param nick The nick who was added to access
|
||||
* @para na The nick who was added to access
|
||||
* @param level The level they were added at
|
||||
*/
|
||||
virtual void OnAccessAdd(ChannelInfo *ci, User *u, const char *nick, int level) { }
|
||||
virtual void OnAccessAdd(ChannelInfo *ci, User *u, NickAlias *na, int level) { }
|
||||
|
||||
/** Called when the access list is cleared
|
||||
* @param ci The channel
|
||||
@@ -776,10 +893,18 @@ class CoreExport Module
|
||||
*/
|
||||
virtual void OnAccessClear(ChannelInfo *ci, User *u) { }
|
||||
|
||||
/** Called when a level for a channel is changed
|
||||
* @param u The user changing the level
|
||||
* @param ci The channel the level was changed on
|
||||
* @param pos The level position, can be -1 for resetting levels
|
||||
* @param what The new level
|
||||
*/
|
||||
virtual void OnLevelChange(User *u, ChannelInfo *ci, int pos, int what) { }
|
||||
|
||||
/** Called when a channel is dropped
|
||||
* @param chname The channel name
|
||||
*/
|
||||
virtual void OnChanDrop(const char *chname) { }
|
||||
virtual void OnChanDrop(const std::string &chname) { }
|
||||
|
||||
/** Called when a channel is forbidden
|
||||
* @param ci The channel
|
||||
@@ -806,6 +931,28 @@ class CoreExport Module
|
||||
*/
|
||||
virtual void OnDelChan(ChannelInfo *ci) { }
|
||||
|
||||
/** Called when a new channel is created
|
||||
* @param c The channel
|
||||
*/
|
||||
virtual void OnChannelCreate(Channel *c) { }
|
||||
|
||||
/** Called when a channel is deleted
|
||||
* @param c The channel
|
||||
*/
|
||||
virtual void OnChannelDelete(Channel *c) { }
|
||||
|
||||
/** Called after adding an akick to a channel
|
||||
* @param ci The channel
|
||||
* @param ak The akick
|
||||
*/
|
||||
virtual void OnAkickAdd(ChannelInfo *ci, AutoKick *ak) { }
|
||||
|
||||
/** Called before removing an akick from a channel
|
||||
* @param ci The channel
|
||||
* @param ak The akick
|
||||
*/
|
||||
virtual void OnAkickDel(ChannelInfo *ci, AutoKick *ak) { }
|
||||
|
||||
/** Called when a nick is dropped
|
||||
* @param nick The nick
|
||||
*/
|
||||
@@ -847,30 +994,11 @@ class CoreExport Module
|
||||
*/
|
||||
virtual void OnNickUnsuspended(NickAlias *na) { }
|
||||
|
||||
/** Called when the defcon level is changed
|
||||
* @param level The level
|
||||
*/
|
||||
virtual void OnDefconLevel(int level) { }
|
||||
|
||||
/** Called on finduser()
|
||||
* @param u pointer to the user
|
||||
*/
|
||||
virtual void OnFindUser(User *u) { }
|
||||
/** Called on findnick()
|
||||
* @param nick nickname to be searched for
|
||||
*/
|
||||
virtual void OnFindNick(const std::string &nick) { }
|
||||
|
||||
/** Called on delnick()
|
||||
* @ param na pointer to the nickalias
|
||||
*/
|
||||
virtual void OnDelNick(NickAlias *na) { }
|
||||
|
||||
/* Called on findcore()
|
||||
* @param nick nickname to be searched for (nc->display)
|
||||
*/
|
||||
virtual void OnFindCore(const std::string &nick) { }
|
||||
|
||||
/** Called on delcore()
|
||||
* @param nc pointer to the NickCore
|
||||
*/
|
||||
@@ -882,11 +1010,6 @@ class CoreExport Module
|
||||
*/
|
||||
virtual void OnChangeCoreDisplay(NickCore *nc, const std::string &newdisplay) { }
|
||||
|
||||
/** Called on findrequestnick()
|
||||
* @param nick nicname to be searched for
|
||||
*/
|
||||
virtual void OnFindRequestNick(const std::string &nick) { }
|
||||
|
||||
/** called from ns_register.c, after the NickRequest have been created
|
||||
* @param nr pointer to the NickRequest
|
||||
*/
|
||||
@@ -902,26 +1025,128 @@ class CoreExport Module
|
||||
*/
|
||||
virtual void OnNickClearAccess(NickCore *nc) { }
|
||||
|
||||
/** Called when a user adds an entry to their access list
|
||||
* @param nc The nick
|
||||
* @param entry The entry
|
||||
*/
|
||||
virtual void OnNickAddAccess(NickCore *nc, const std::string &entry) { }
|
||||
|
||||
/** called from NickCore::EraseAccess()
|
||||
* @param nc pointer to the NickCore
|
||||
* @param entry The access mask
|
||||
*/
|
||||
virtual void OnNickEraseAccess(NickCore *nc, const std::string &entry) { }
|
||||
|
||||
/** called when a HostCore is deleted
|
||||
* @param hc pointer to the HostCore
|
||||
/** called when a vhost is deleted
|
||||
* @param na The nickalias of the vhost
|
||||
*/
|
||||
virtual void OnDeleteHostCore(HostCore *hc) { }
|
||||
virtual void OnDeleteVhost(NickAlias *na) { }
|
||||
|
||||
/** called on findHostCore
|
||||
* @param nick the name of the HostCore we are searching for
|
||||
/** Called when a vhost is set
|
||||
* @param na The nickalias of the vhost
|
||||
*/
|
||||
virtual void OnFindHostCore(const std::string &nick) { }
|
||||
virtual void OnSetVhost(NickAlias *na) { }
|
||||
|
||||
/** called when a new HostCore is inserted
|
||||
* @param hc pointer to the HostCore
|
||||
/** Called when a memo is sent
|
||||
* @param u The user sending the memo
|
||||
* @param nc The nickcore of who the memo was sent to
|
||||
* @param m The memo
|
||||
*/
|
||||
virtual void OnInsertHostCore(HostCore *hc) { }
|
||||
virtual void OnMemoSend(User *u, NickCore *nc, Memo *m) { }
|
||||
|
||||
/** Called when a memo is sent
|
||||
* @param u The user sending the memo
|
||||
* @param ci The channel the memo was sent to
|
||||
* @param m The memo
|
||||
*/
|
||||
virtual void OnMemoSend(User *u, ChannelInfo *ci, Memo *m) { }
|
||||
|
||||
/** Called when a memo is deleted
|
||||
* @param nc The nickcore of the memo being deleted
|
||||
* @param mi The memo info
|
||||
* @param number What memo number is being deleted, can be 0 for all memos
|
||||
*/
|
||||
virtual void OnMemoDel(NickCore *nc, MemoInfo *mi, int number) { }
|
||||
|
||||
/** Called when a memo is deleted
|
||||
* @param ci The channel of the memo being deleted
|
||||
* @param mi The memo info
|
||||
* @param number What memo number is being deleted, can be 0 for all memos
|
||||
*/
|
||||
virtual void OnMemoDel(ChannelInfo *ci, MemoInfo *mi, int number) { }
|
||||
|
||||
/** Called when a mode is set on a channel
|
||||
* @param c The channel
|
||||
* @param Name The mode name
|
||||
* @param param The mode param, if there is one
|
||||
* @return EVENT_STOP to make mlock/secureops etc checks not happen
|
||||
*/
|
||||
virtual EventReturn OnChannelModeSet(Channel *c, ChannelModeName Name, const std::string ¶m) { return EVENT_CONTINUE; }
|
||||
|
||||
/** Called when a mode is unset on a channel
|
||||
* @param c The channel
|
||||
* @param Name The mode name
|
||||
* @param param The mode param, if there is one
|
||||
* @return EVENT_STOP to make mlock/secureops etc checks not happen
|
||||
*/
|
||||
virtual EventReturn OnChannelModeUnset(Channel *c, ChannelModeName Name, const std::string ¶m) { return EVENT_CONTINUE; }
|
||||
|
||||
/** Called when a mode is set on a user
|
||||
* @param u The user
|
||||
* @param Name The mode name
|
||||
*/
|
||||
virtual void OnUserModeSet(User *u, UserModeName Name) { }
|
||||
|
||||
/** Called when a mode is unset from a user
|
||||
* @param u The user
|
||||
* @param Name The mode name
|
||||
*/
|
||||
virtual void OnUserModeUnset(User *u, UserModeName Name) { }
|
||||
|
||||
/** Called when a channel mode is introducted into Anope
|
||||
* @param cm The mode
|
||||
*/
|
||||
virtual void OnChannelModeAdd(ChannelMode *cm) { }
|
||||
|
||||
/** Called when a user mode is introducted into Anope
|
||||
* @param um The mode
|
||||
*/
|
||||
virtual void OnUserModeAdd(UserMode *um) { }
|
||||
|
||||
/** Called when a mode is about to be mlocked
|
||||
* @param Name The mode being mlocked
|
||||
* @param status true if its being mlocked +, false for -
|
||||
* @param param The param, if there is one and if status is true
|
||||
* @return EVENT_CONTINUE to let other modules decide, EVENT_STOP to deny the mlock.
|
||||
*/
|
||||
virtual EventReturn OnMLock(ChannelModeName Name, bool status, const std::string ¶m) { return EVENT_CONTINUE; }
|
||||
|
||||
/** Called when a mode is about to be unlocked
|
||||
* @param Name The mode being mlocked
|
||||
* @return EVENT_CONTINUE to let other modules decide, EVENT_STOP to deny the mlock.
|
||||
*/
|
||||
virtual EventReturn OnUnMLock(ChannelModeName Name) { return EVENT_CONTINUE; }
|
||||
|
||||
/** Called after a module is loaded
|
||||
* @param u The user loading the module, can be NULL
|
||||
* @param m The module
|
||||
*/
|
||||
virtual void OnModuleLoad(User *u, Module *m) { }
|
||||
|
||||
/** Called before a module is unloaded
|
||||
* @param u The user, can be NULL
|
||||
* @param m The module
|
||||
*/
|
||||
virtual void OnModuleUnload(User *u, Module *m) { }
|
||||
|
||||
/** Called when a server is synced
|
||||
* @param s The server, can be our uplink server
|
||||
*/
|
||||
virtual void OnServerSync(Server *s) { }
|
||||
|
||||
/** Called when we sync with our uplink
|
||||
*/
|
||||
virtual void OnUplinkSync() { }
|
||||
|
||||
};
|
||||
|
||||
@@ -932,34 +1157,49 @@ enum Implementation
|
||||
{
|
||||
I_BEGIN,
|
||||
/* NickServ */
|
||||
I_OnNickExpire, I_OnNickForbidden, I_OnNickGroup, I_OnNickLogout, I_OnNickIdentify, I_OnNickDrop,
|
||||
I_OnNickServHelp, I_OnPreNickExpire, I_OnNickExpire, I_OnNickForbidden, I_OnNickGroup, I_OnNickLogout, I_OnNickIdentify, I_OnNickDrop,
|
||||
I_OnNickRegister, I_OnNickSuspended, I_OnNickUnsuspended,
|
||||
I_OnFindUser, I_OnFindNick, I_OnDelNick, I_OnFindCore, I_OnDelCore, I_OnChangeCoreDisplay,
|
||||
I_OnFindRequestNick, I_OnDelNickRequest, I_OnMakeNickRequest, I_OnNickClearAccess, I_OnNickEraseAccess,
|
||||
I_OnDelNick, I_OnDelCore, I_OnChangeCoreDisplay,
|
||||
I_OnDelNickRequest, I_OnMakeNickRequest, I_OnNickClearAccess, I_OnNickAddAccess, I_OnNickEraseAccess,
|
||||
|
||||
/* ChanServ */
|
||||
I_OnChanForbidden, I_OnChanSuspend, I_OnChanDrop, I_OnChanExpire, I_OnAccessAdd, I_OnAccessChange,
|
||||
I_OnAccessDel, I_OnAccessClear, I_OnChanRegistered, I_OnChanUnsuspend, I_OnDelChan,
|
||||
I_OnChanServHelp, I_OnChanForbidden, I_OnChanSuspend, I_OnChanDrop, I_OnPreChanExpire, I_OnChanExpire, I_OnAccessAdd, I_OnAccessChange,
|
||||
I_OnAccessDel, I_OnAccessClear, I_OnLevelChange, I_OnChanRegistered, I_OnChanUnsuspend, I_OnDelChan, I_OnChannelCreate,
|
||||
I_OnChannelDelete, I_OnAkickAdd, I_OnAkickDel,
|
||||
|
||||
/* BotServ */
|
||||
I_OnBotJoin, I_OnBotKick, I_OnBotCreate, I_OnBotChange, I_OnBotDelete, I_OnBotAssign, I_OnBotUnAssign,
|
||||
I_OnUserKicked, I_OnBotFantasy, I_OnBotNoFantasyAccess, I_OnBotBan, I_OnBotPreLoad,
|
||||
I_OnBotServHelp, I_OnBotJoin, I_OnBotKick, I_OnBotCreate, I_OnBotChange, I_OnBotDelete, I_OnBotAssign, I_OnBotUnAssign,
|
||||
I_OnUserKicked, I_OnBotFantasy, I_OnBotNoFantasyAccess, I_OnBotBan, I_OnBadWordAdd, I_OnBadWordDel,
|
||||
|
||||
/* HostServ */
|
||||
I_OnDeleteHostCore, I_OnFindHostCore, I_OnInsertHostCore,
|
||||
I_OnHostServHelp, I_OnSetVhost, I_OnDeleteVhost,
|
||||
|
||||
/* MemoServ */
|
||||
I_OnMemoServHelp, I_OnMemoSend, I_OnMemoDel,
|
||||
|
||||
/* Users */
|
||||
I_OnUserConnect, I_OnUserNickChange, I_OnUserQuit, I_OnUserLogoff, I_OnPreJoinChannel, I_OnJoinChannel,
|
||||
I_OnPrePartChannel, I_OnPartChannel,
|
||||
I_OnPreUserConnect, I_OnUserConnect, I_OnUserNickChange, I_OnUserQuit, I_OnUserLogoff, I_OnPreJoinChannel,
|
||||
I_OnJoinChannel, I_OnPrePartChannel, I_OnPartChannel,
|
||||
|
||||
/* OperServ */
|
||||
I_OnDefconLevel,
|
||||
I_OnOperServHelp, I_OnDefconLevel, I_OnAddAkill, I_OnDelAkill, I_OnExceptionAdd, I_OnExceptionDel,
|
||||
I_OnAddSXLine, I_OnDelSXLine,
|
||||
|
||||
/* Database */
|
||||
I_OnPostLoadDatabases, I_OnSaveDatabase, I_OnLoadDatabase,
|
||||
I_OnDatabaseExpire,
|
||||
I_OnDatabaseWrite, I_OnDatabaseRead, I_OnDatabaseReadMetadata, I_OnDatabaseWriteMetadata,
|
||||
|
||||
/* Modules */
|
||||
I_OnModuleLoad, I_OnModuleUnload,
|
||||
|
||||
/* Other */
|
||||
I_OnReload, I_OnPreServerConnect, I_OnServerConnect, I_OnPreCommand, I_OnPostCommand, I_OnPostLoadDatabases, I_OnSaveDatabase, I_OnBackupDatabase,
|
||||
I_OnPreDatabaseExpire, I_OnDatabaseExpire, I_OnPreRestart, I_OnRestart, I_OnPreShutdown, I_OnShutdown, I_OnSignal,
|
||||
I_OnReload, I_OnPreServerConnect, I_OnNewServer, I_OnServerConnect, I_OnFinishSync, I_OnServerDisconnect, I_OnPreCommandRun,
|
||||
I_OnPreCommand, I_OnPostCommand, I_OnPreDatabaseExpire, I_OnPreRestart, I_OnRestart, I_OnPreShutdown, I_OnShutdown, I_OnSignal,
|
||||
I_OnServerQuit, I_OnTopicUpdated,
|
||||
I_OnEncrypt, I_OnEncryptInPlace, I_OnEncryptCheckLen, I_OnDecrypt, I_OnCheckPassword,
|
||||
I_OnChannelModeSet, I_OnChannelModeUnset, I_OnUserModeSet, I_OnUserModeUnset, I_OnChannelModeAdd, I_OnUserModeAdd,
|
||||
I_OnMLock, I_OnUnMLock, I_OnServerSync, I_OnUplinkSync,
|
||||
I_END
|
||||
};
|
||||
|
||||
@@ -975,10 +1215,9 @@ class CoreExport ModuleManager
|
||||
static std::vector<Module *> EventHandlers[I_END];
|
||||
|
||||
/** 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);
|
||||
static void LoadModuleList(std::list<std::string> &ModList);
|
||||
|
||||
/** Loads a given module.
|
||||
* @param m the module to load
|
||||
@@ -1046,10 +1285,10 @@ class CoreExport ModuleManager
|
||||
*/
|
||||
static void Attach(Implementation* i, Module* mod, size_t sz);
|
||||
|
||||
/** Delete all timers attached to a module
|
||||
/** Delete all callbacks attached to a module
|
||||
* @param m The module
|
||||
*/
|
||||
static void ClearTimers(Module *m);
|
||||
static void ClearCallBacks(Module *m);
|
||||
|
||||
private:
|
||||
/** Call the module_delete function to safely delete the module
|
||||
@@ -1058,7 +1297,27 @@ private:
|
||||
static void DeleteModule(Module *m);
|
||||
};
|
||||
|
||||
/** Class used for callbacks within modules
|
||||
*/
|
||||
class CallBack : public Timer
|
||||
{
|
||||
private:
|
||||
Module *m;
|
||||
public:
|
||||
CallBack(Module *mod, long time_from_now, time_t now = time(NULL), bool repeating = false) : Timer(time_from_now, now, repeating), m(mod)
|
||||
{
|
||||
m->CallBacks.push_back(this);
|
||||
}
|
||||
|
||||
virtual ~CallBack()
|
||||
{
|
||||
std::list<CallBack *>::iterator it = std::find(m->CallBacks.begin(), m->CallBacks.end(), this);
|
||||
if (it != m->CallBacks.end())
|
||||
{
|
||||
m->CallBacks.erase(it);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
struct ModuleHash_ {
|
||||
char *name;
|
||||
@@ -1089,9 +1348,7 @@ struct MessageHash_ {
|
||||
/* 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*/
|
||||
MDE void moduleDisplayHelp(const char *service, User *u);
|
||||
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
@@ -1112,13 +1369,6 @@ int destroyMessage(Message *m); /* destroy a Message*/
|
||||
|
||||
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 */
|
||||
|
||||
/*************************************************************************/
|
||||
/* 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 updateOwnerDetails(const char *fant_owner_add, const char *fant_owner_del, const char *owner_set_mode, const char *owner_del_mode);
|
||||
|
||||
/************************************************************************/
|
||||
|
||||
#endif
|
||||
|
||||
+7
-5
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2008-2009 Robin Burchell <w00t@inspircd.org>
|
||||
* Copyright (C) 2008-2009 Anope Team <team@anope.org>
|
||||
* Copyright (C) 2008-2010 Robin Burchell <w00t@inspircd.org>
|
||||
* Copyright (C) 2008-2010 Anope Team <team@anope.org>
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
@@ -9,12 +9,14 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include "hashcomp.h"
|
||||
|
||||
class CoreExport OperType
|
||||
{
|
||||
private:
|
||||
/** The name of this opertype, e.g. "sra".
|
||||
*/
|
||||
std::string name;
|
||||
ci::string name;
|
||||
|
||||
/** Privs that this opertype may use, e.g. 'users/auspex'.
|
||||
* This *must* be std::list, see commands comment for details.
|
||||
@@ -34,7 +36,7 @@ class CoreExport OperType
|
||||
/** Create a new opertype of the given name.
|
||||
* @param nname The opertype name, e.g. "sra".
|
||||
*/
|
||||
OperType(const std::string &nname);
|
||||
OperType(const ci::string &nname);
|
||||
|
||||
/** Check whether this opertype has access to run the given command string.
|
||||
* @param cmdstr The string to check, e.g. botserv/set/private.
|
||||
@@ -60,5 +62,5 @@ class CoreExport OperType
|
||||
|
||||
/** Returns the name of this opertype.
|
||||
*/
|
||||
const std::string &GetName() const;
|
||||
const ci::string &GetName() const;
|
||||
};
|
||||
|
||||
+1
-2
@@ -1,6 +1,6 @@
|
||||
/* Include extra includes needed by most/all pseudo-clients.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2010 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
@@ -15,5 +15,4 @@
|
||||
#include "commands.h"
|
||||
#include "language.h"
|
||||
#include "timers.h"
|
||||
#include "datafiles.h"
|
||||
#include "slist.h"
|
||||
|
||||
+209
-87
@@ -1,6 +1,6 @@
|
||||
/* Modular support
|
||||
*
|
||||
* (C) 2008-2009 Anope Team
|
||||
* (C) 2008-2010 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -9,39 +9,81 @@
|
||||
*
|
||||
*/
|
||||
|
||||
class CoreExport ChannelInfo : public Extensible
|
||||
/** Flags used for the ChannelInfo class
|
||||
*/
|
||||
enum ChannelInfoFlag
|
||||
{
|
||||
CI_BEGIN,
|
||||
|
||||
/* ChanServ is currently holding the channel */
|
||||
CI_INHABIT,
|
||||
/* Retain the topic even after the channel is emptied */
|
||||
CI_KEEPTOPIC,
|
||||
/* Don't allow non-authorized users to be opped */
|
||||
CI_SECUREOPS,
|
||||
/* Hide channel from ChanServ LIST command */
|
||||
CI_PRIVATE,
|
||||
/* Topic can only be changed by SET TOPIC */
|
||||
CI_TOPICLOCK,
|
||||
/* Only users on the access list may join */
|
||||
CI_RESTRICTED,
|
||||
/* Don't allow ChanServ and BotServ commands to do bad things to users with higher access levels */
|
||||
CI_PEACE,
|
||||
/* Don't allow any privileges unless a user is IDENTIFIED with NickServ */
|
||||
CI_SECURE,
|
||||
/* Don't allow the channel to be registered or used */
|
||||
CI_FORBIDDEN,
|
||||
/* Channel does not expire */
|
||||
CI_NO_EXPIRE,
|
||||
/* Channel memo limit may not be changed */
|
||||
CI_MEMO_HARDMAX,
|
||||
/* Send notice to channel on use of OP/DEOP */
|
||||
CI_OPNOTICE,
|
||||
/* Stricter control of channel founder status */
|
||||
CI_SECUREFOUNDER,
|
||||
/* Sign kicks with the user who did the kick */
|
||||
CI_SIGNKICK,
|
||||
/* Sign kicks if level is < than the one defined by the SIGNKIGK level */
|
||||
CI_SIGNKICK_LEVEL,
|
||||
/* Uses XOP */
|
||||
CI_XOP,
|
||||
/* Channel is suspended */
|
||||
CI_SUSPENDED,
|
||||
/* Channel still exists when emptied, this can be caused by setting a perm
|
||||
* channel mode (+P on InspIRCd) or /cs set #chan persist on.
|
||||
* This keeps the service bot in the channel regardless if a +P type mode
|
||||
* is set or not
|
||||
*/
|
||||
CI_PERSIST,
|
||||
|
||||
CI_END
|
||||
};
|
||||
|
||||
class CoreExport ChannelInfo : public Extensible, public Flags<ChannelInfoFlag>
|
||||
{
|
||||
private:
|
||||
std::map<ChannelModeName, std::string> Params; /* Map of parameters by mode name for mlock */
|
||||
std::vector<ChanAccess *> access; /* List of authorized users */
|
||||
std::vector<AutoKick *> akick; /* List of users to kickban */
|
||||
std::vector<BadWord *> badwords; /* List of badwords */
|
||||
std::bitset<128> mlock_on; /* Modes mlocked on */
|
||||
std::bitset<128> mlock_off; /* Modes mlocked off */
|
||||
|
||||
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 = akickcount = 0;
|
||||
levels = 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;
|
||||
}
|
||||
/** Default constructor
|
||||
* @param chname The channel name
|
||||
*/
|
||||
ChannelInfo(const std::string &chname);
|
||||
|
||||
/** Default destructor
|
||||
*/
|
||||
~ChannelInfo();
|
||||
|
||||
ChannelInfo *next, *prev;
|
||||
char name[CHANMAX];
|
||||
std::string name; /* Channel name */
|
||||
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;
|
||||
@@ -49,41 +91,28 @@ class CoreExport ChannelInfo : public Extensible
|
||||
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 */
|
||||
std::string last_topic_setter; /* 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 */
|
||||
|
||||
std::vector<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 *c; /* Pointer to channel record (if *
|
||||
* channel is currently in use) */
|
||||
|
||||
/* For BotServ */
|
||||
|
||||
BotInfo *bi; /* Bot used on this channel */
|
||||
uint32 botflags; /* BS_* below */
|
||||
Flags<BotServFlag> botflags;
|
||||
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 */
|
||||
@@ -92,19 +121,12 @@ class CoreExport ChannelInfo : public Extensible
|
||||
*
|
||||
* @param nc The NickCore of the user that the access entry should be tied to
|
||||
* @param level The channel access level the user has on the channel
|
||||
* @param creator The user who added the access
|
||||
* @param last_seen When the user was last seen within the channel
|
||||
*
|
||||
* Creates a new access list entry and inserts it into the access list.
|
||||
*/
|
||||
void AddAccess(NickCore *nc, int16 level, int32 last_seen = 0)
|
||||
{
|
||||
ChanAccess *new_access = new ChanAccess;
|
||||
new_access->in_use = 1;
|
||||
new_access->nc = nc;
|
||||
new_access->level = level;
|
||||
new_access->last_seen = last_seen;
|
||||
access.push_back(new_access);
|
||||
}
|
||||
void AddAccess(NickCore *nc, int16 level, const std::string &creator, int32 last_seen = 0);
|
||||
|
||||
/** Get an entry from the channel access list by index
|
||||
*
|
||||
@@ -113,13 +135,7 @@ class CoreExport ChannelInfo : public Extensible
|
||||
*
|
||||
* Retrieves an entry from the access list that matches the given index.
|
||||
*/
|
||||
ChanAccess *GetAccess(unsigned index)
|
||||
{
|
||||
if (access.empty() || index >= access.size())
|
||||
return NULL;
|
||||
|
||||
return access[index];
|
||||
}
|
||||
ChanAccess *GetAccess(unsigned index);
|
||||
|
||||
/** Get an entry from the channel access list by NickCore
|
||||
*
|
||||
@@ -129,17 +145,12 @@ class CoreExport ChannelInfo : public Extensible
|
||||
*
|
||||
* Retrieves an entry from the access list that matches the given NickCore, optionally also matching a certain level.
|
||||
*/
|
||||
ChanAccess *GetAccess(NickCore *nc, int16 level = 0)
|
||||
{
|
||||
if (access.empty())
|
||||
return NULL;
|
||||
ChanAccess *GetAccess(NickCore *nc, int16 level = 0);
|
||||
|
||||
for (unsigned i = 0; i < access.size(); i++)
|
||||
if (access[i]->in_use && access[i]->nc == nc && (level ? access[i]->level == level : true))
|
||||
return access[i];
|
||||
|
||||
return NULL;
|
||||
}
|
||||
/** Get the size of the accss vector for this channel
|
||||
* @return The access vector size
|
||||
*/
|
||||
const unsigned GetAccessCount() const;
|
||||
|
||||
/** Erase an entry from the channel access list
|
||||
*
|
||||
@@ -147,32 +158,143 @@ class CoreExport ChannelInfo : public Extensible
|
||||
*
|
||||
* Clears the memory used by the given access entry and removes it from the vector.
|
||||
*/
|
||||
void EraseAccess(unsigned index)
|
||||
{
|
||||
if (access.empty() || index >= access.size())
|
||||
return;
|
||||
delete access[index];
|
||||
access.erase(access.begin() + index);
|
||||
}
|
||||
void EraseAccess(unsigned index);
|
||||
|
||||
/** Cleans the channel access list
|
||||
*
|
||||
* Cleans up the access list so it no longer contains entries no longer in use.
|
||||
*/
|
||||
void CleanAccess()
|
||||
{
|
||||
for (unsigned j = access.size(); j > 0; --j)
|
||||
if (!access[j - 1]->in_use)
|
||||
EraseAccess(j - 1);
|
||||
}
|
||||
void CleanAccess();
|
||||
|
||||
/** Clear the entire channel access list
|
||||
*
|
||||
* Clears the entire access list by deleting every item and then clearing the vector.
|
||||
*/
|
||||
void ClearAccess()
|
||||
{
|
||||
while (access.begin() != access.end())
|
||||
EraseAccess(0);
|
||||
}
|
||||
void ClearAccess();
|
||||
|
||||
/** Add an akick entry to the channel by NickCore
|
||||
* @param user The user who added the akick
|
||||
* @param akicknc The nickcore being akicked
|
||||
* @param reason The reason for the akick
|
||||
* @param t The time the akick was added, defaults to now
|
||||
* @param lu The time the akick was last used, defaults to never
|
||||
*/
|
||||
AutoKick *AddAkick(const std::string &user, NickCore *akicknc, const std::string &reason, time_t t = time(NULL), time_t lu = 0);
|
||||
|
||||
/** Add an akick entry to the channel by reason
|
||||
* @param user The user who added the akick
|
||||
* @param mask The mask of the akick
|
||||
* @param reason The reason for the akick
|
||||
* @param t The time the akick was added, defaults to now
|
||||
* @param lu The time the akick was last used, defaults to never
|
||||
*/
|
||||
AutoKick *AddAkick(const std::string &user, const std::string &mask, const std::string &reason, time_t t = time(NULL), time_t lu = 0);
|
||||
|
||||
/** Get an entry from the channel akick list
|
||||
* @param index The index in the akick vector
|
||||
* @return The akick structure, or NULL if not found
|
||||
*/
|
||||
AutoKick *GetAkick(unsigned index);
|
||||
|
||||
/** Get the size of the akick vector for this channel
|
||||
* @return The akick vector size
|
||||
*/
|
||||
const unsigned GetAkickCount() const;
|
||||
|
||||
/** Erase an entry from the channel akick list
|
||||
* @param akick The akick
|
||||
*/
|
||||
void EraseAkick(AutoKick *akick);
|
||||
|
||||
/** Clear the whole akick list
|
||||
*/
|
||||
void ClearAkick();
|
||||
|
||||
/** Clean all of the nonused entries from the akick list
|
||||
*/
|
||||
void CleanAkick();
|
||||
|
||||
/** Add a badword to the badword list
|
||||
* @param word The badword
|
||||
* @param type The type (SINGLE START END)
|
||||
* @return The badword
|
||||
*/
|
||||
BadWord *AddBadWord(const std::string &word, BadWordType type);
|
||||
|
||||
/** Get a badword structure by index
|
||||
* @param index The index
|
||||
* @return The badword
|
||||
*/
|
||||
BadWord *GetBadWord(unsigned index);
|
||||
|
||||
/** Get how many badwords are on this channel
|
||||
* @return The number of badwords in the vector
|
||||
*/
|
||||
const unsigned GetBadWordCount() const;
|
||||
|
||||
/** Remove a badword
|
||||
* @param badword The badword
|
||||
*/
|
||||
void EraseBadWord(BadWord *badword);
|
||||
|
||||
/** Clear all badwords from the channel
|
||||
*/
|
||||
void ClearBadWords();
|
||||
|
||||
/** Clean all of the nonused entries from the badwords list
|
||||
*/
|
||||
void CleanBadWords();
|
||||
|
||||
/** Check if a mode is mlocked
|
||||
* @param Name The mode
|
||||
* @param status True to check mlock on, false for mlock off
|
||||
* @return true on success, false on fail
|
||||
*/
|
||||
const bool HasMLock(ChannelModeName Name, bool status);
|
||||
|
||||
/** Set a mlock
|
||||
* @param Name The mode
|
||||
* @param status True for mlock on, false for mlock off
|
||||
* @param param An optional param arg for + mlocked modes
|
||||
* @return true on success, false on failure (module blocking)
|
||||
*/
|
||||
bool SetMLock(ChannelModeName Name, bool status, const std::string param = "");
|
||||
|
||||
/** Remove a mlock
|
||||
* @param Name The mode
|
||||
* @return true on success, false on failure (module blcoking)
|
||||
*/
|
||||
bool RemoveMLock(ChannelModeName Name);
|
||||
|
||||
/** Clear all mlocks on the channel
|
||||
*/
|
||||
void ClearMLock();
|
||||
|
||||
/** Get the number of mlocked modes for this channel
|
||||
* @param status true for mlock on, false for mlock off
|
||||
* @return The number of mlocked modes
|
||||
*/
|
||||
const size_t GetMLockCount(bool status) const;
|
||||
|
||||
/** Get a param from the channel
|
||||
* @param Name The mode
|
||||
* @param Target a string to put the param into
|
||||
* @return true on success
|
||||
*/
|
||||
const bool GetParam(ChannelModeName Name, std::string &Target);
|
||||
|
||||
/** Check if a mode is set and has a param
|
||||
* @param Name The mode
|
||||
*/
|
||||
const bool HasParam(ChannelModeName Name);
|
||||
|
||||
/** Clear all the params from the channel
|
||||
*/
|
||||
void ClearParams();
|
||||
|
||||
/** Check whether a user is permitted to be on this channel
|
||||
* @param u The user
|
||||
* @return true if they are allowed, false if they aren't and were kicked
|
||||
*/
|
||||
bool CheckKick(User *user);
|
||||
};
|
||||
|
||||
+533
-710
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -1,6 +1,6 @@
|
||||
/* Header for Services list handler.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2010 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
|
||||
+165
-28
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
*
|
||||
* (C) 2004-2009 Anope Team
|
||||
* (C) 2004-2010 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
@@ -15,34 +15,171 @@
|
||||
#define SOCKETS_H
|
||||
|
||||
#ifdef _WIN32
|
||||
typedef SOCKET ano_socket_t;
|
||||
#define ano_sockread(fd, buf, len) recv(fd, buf, len, 0)
|
||||
#define ano_sockwrite(fd, buf, len) send(fd, buf, len, 0)
|
||||
#define ano_sockclose(fd) closesocket(fd)
|
||||
#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
|
||||
#define SOCKERR_EINTR WSAEINTR
|
||||
#define SOCKERR_EINVAL WSAEINVAL
|
||||
#define SOCKERR_EINPROGRESS WSAEINPROGRESS
|
||||
#define CloseSocket closesocket
|
||||
#else
|
||||
typedef int ano_socket_t;
|
||||
#define ano_sockread(fd, buf, len) read(fd, buf, len)
|
||||
#define ano_sockwrite(fd, buf, len) write(fd, buf, len)
|
||||
#define ano_sockclose(fd) close(fd)
|
||||
#define ano_sockgeterr() errno
|
||||
#define ano_sockseterr(err) errno = err
|
||||
#define ano_sockstrerror(err) strerror(err)
|
||||
#define ano_socksetnonb(fd) fcntl(fd, F_SETFL, O_NONBLOCK)
|
||||
#define ano_sockerrnonb(err) (err == EINPROGRESS)
|
||||
#define SOCKERR_EBADF EBADF
|
||||
#define SOCKERR_EINTR EINTR
|
||||
#define SOCKERR_EINVAL EINVAL
|
||||
#define SOCKERR_EINPROGRESS EINPROGRESS
|
||||
#define CloseSocket close
|
||||
#endif
|
||||
|
||||
class SocketException : public CoreException
|
||||
{
|
||||
public:
|
||||
/** Default constructor for socket exceptions
|
||||
* @param message Error message
|
||||
*/
|
||||
SocketException(const std::string &message) : CoreException(message) { }
|
||||
|
||||
/** Default destructor
|
||||
* @throws Nothing
|
||||
*/
|
||||
virtual ~SocketException() throw() { }
|
||||
};
|
||||
|
||||
class CoreExport Socket
|
||||
{
|
||||
private:
|
||||
/** Read from the socket
|
||||
* @param buf Buffer to read to
|
||||
* @param sz How much to read
|
||||
* @return Number of bytes recieved
|
||||
*/
|
||||
virtual int RecvInternal(char *buf, size_t sz) const;
|
||||
|
||||
/** Write to the socket
|
||||
* @param buf What to write
|
||||
* @return Number of bytes sent, -1 on error
|
||||
*/
|
||||
virtual int SendInternal(const std::string &buf) const;
|
||||
|
||||
protected:
|
||||
/* Socket FD */
|
||||
int Sock;
|
||||
/* Host this socket is connected to */
|
||||
std::string TargetHost;
|
||||
/* Port we're connected to */
|
||||
int Port;
|
||||
/* IP this socket is bound to */
|
||||
std::string BindHost;
|
||||
/* Is this an IPv6 socket? */
|
||||
bool IPv6;
|
||||
|
||||
/* Messages to be written to the socket */
|
||||
std::string WriteBuffer;
|
||||
/* Part of a message not totally yet recieved */
|
||||
std::string extrabuf;
|
||||
/* How much data was recieved from the socket */
|
||||
size_t RecvLen;
|
||||
|
||||
public:
|
||||
/** Default constructor
|
||||
* @param nTargetHost Hostname to connect to
|
||||
* @param nPort Port to connect to
|
||||
* @param nBindHos Host to bind to when connecting
|
||||
* @param nIPv6 true to use IPv6
|
||||
*/
|
||||
Socket(const std::string &nTargetHost, int nPort, const std::string &nBindHost = "", bool nIPv6 = false);
|
||||
|
||||
/** Default destructor
|
||||
*/
|
||||
virtual ~Socket();
|
||||
|
||||
/** Get the socket FD for this socket
|
||||
* @return The fd
|
||||
*/
|
||||
virtual int GetSock() const;
|
||||
|
||||
/** Check if this socket is IPv6
|
||||
* @return true or false
|
||||
*/
|
||||
bool IsIPv6() const;
|
||||
|
||||
/** Called when there is something to be read from thie socket
|
||||
* @return true on success, false to kill this socket
|
||||
*/
|
||||
virtual bool ProcessRead();
|
||||
|
||||
/** Called when this socket becomes writeable
|
||||
* @return true on success, false to drop this socket
|
||||
*/
|
||||
virtual bool ProcessWrite();
|
||||
|
||||
/** Called when there is an error on this socket
|
||||
*/
|
||||
virtual void ProcessError();
|
||||
|
||||
/** Called with a message recieved from the socket
|
||||
* @param buf The message
|
||||
* @return true on success, false to kill this socket
|
||||
*/
|
||||
virtual bool Read(const std::string &buf);
|
||||
|
||||
/** Write to the socket
|
||||
* @param message The message to write
|
||||
*/
|
||||
void Write(const char *message, ...);
|
||||
void Write(std::string &message);
|
||||
|
||||
/** Get the length of the read buffer
|
||||
* @return The length of the read buffer
|
||||
*/
|
||||
size_t ReadBufferLen() const;
|
||||
|
||||
/** Get the length of the write buffer
|
||||
* @return The length of the write buffer
|
||||
*/
|
||||
size_t WriteBufferLen() const;
|
||||
};
|
||||
|
||||
class CoreExport SocketEngine
|
||||
{
|
||||
private:
|
||||
/* List of sockets that need to be deleted */
|
||||
std::set<Socket *> OldSockets;
|
||||
/* FDs to read */
|
||||
fd_set ReadFDs;
|
||||
/* FDs that want writing */
|
||||
fd_set WriteFDs;
|
||||
/* Max FD */
|
||||
int MaxFD;
|
||||
|
||||
/** Unmark a socket as writeable
|
||||
* @param s The socket
|
||||
*/
|
||||
void ClearWriteable(Socket *s);
|
||||
public:
|
||||
/* Set of sockets */
|
||||
std::set<Socket *> Sockets;
|
||||
|
||||
/** Constructor
|
||||
*/
|
||||
SocketEngine();
|
||||
|
||||
/** Destructor
|
||||
*/
|
||||
virtual ~SocketEngine();
|
||||
|
||||
/** Add a socket to the socket engine
|
||||
* @param s The socket
|
||||
*/
|
||||
void AddSocket(Socket *s);
|
||||
|
||||
/** Delete a socket from the socket engine
|
||||
* @param s The socket
|
||||
*/
|
||||
void DelSocket(Socket *s);
|
||||
|
||||
/** Mark a socket as wanting to be written to
|
||||
* @param s The socket
|
||||
*/
|
||||
void MarkWriteable(Socket *s);
|
||||
|
||||
/** Called to iterate through each socket and check for activity
|
||||
*/
|
||||
void Process();
|
||||
|
||||
/** Get the last socket error
|
||||
* @return The error
|
||||
*/
|
||||
const std::string GetError() const;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
+2
-8
@@ -1,6 +1,6 @@
|
||||
/* Timer include stuff.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2010 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
@@ -47,7 +47,7 @@ class CoreExport Timer : public Extensible
|
||||
*/
|
||||
Timer(long time_from_now, time_t now = time(NULL), bool repeating = false);
|
||||
|
||||
/** Default destructor, does nothing
|
||||
/** Default destructor, removes the timer from the list
|
||||
*/
|
||||
virtual ~Timer();
|
||||
|
||||
@@ -103,12 +103,6 @@ class CoreExport TimerManager : public Extensible
|
||||
*/
|
||||
static void DelTimer(Timer *T);
|
||||
|
||||
/** Check if something is a timer
|
||||
* @param T A pointer
|
||||
* @return true or false
|
||||
*/
|
||||
static bool IsTimer(Timer *T);
|
||||
|
||||
/** Tick all pending timers
|
||||
* @param ctime The current time
|
||||
*/
|
||||
|
||||
+122
-24
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2008-2009 Robin Burchell <w00t@inspircd.org>
|
||||
* Copyright (C) 2008-2009 Anope Team <team@anope.org>
|
||||
* Copyright (C) 2008-2010 Robin Burchell <w00t@inspircd.org>
|
||||
* Copyright (C) 2008-2010 Anope Team <team@anope.org>
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
@@ -8,30 +8,34 @@
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
struct u_chanlist {
|
||||
struct u_chanlist *next, *prev;
|
||||
|
||||
struct ChannelContainer
|
||||
{
|
||||
Channel *chan;
|
||||
int16 status; /* Associated flags; see CSTATUS_* below. */
|
||||
Flags<ChannelModeName> *Status;
|
||||
|
||||
ChannelContainer(Channel *c) : chan(c) { }
|
||||
virtual ~ChannelContainer() { }
|
||||
};
|
||||
|
||||
struct u_chaninfolist {
|
||||
struct u_chaninfolist *next, *prev;
|
||||
ChannelInfo *chan;
|
||||
};
|
||||
typedef std::list<ChannelContainer *> UChannelList;
|
||||
|
||||
/* Online user and channel data. */
|
||||
class CoreExport User : public Extensible
|
||||
{
|
||||
private:
|
||||
protected:
|
||||
std::string vident;
|
||||
std::string ident;
|
||||
std::string uid;
|
||||
bool OnAccess; /* If the user is on the access list of the nick theyre on */
|
||||
std::bitset<128> modes; /* Bitset of mode names the user has set on them */
|
||||
std::map<UserModeName, std::string> Params; /* Map of user modes and the params this user has */
|
||||
NickCore *nc; /* NickCore account the user is currently loggged in as */
|
||||
|
||||
public: // XXX: exposing a tiny bit too much
|
||||
User *next, *prev;
|
||||
|
||||
char nick[NICKMAX];
|
||||
std::string nick; /* User's current nick */
|
||||
|
||||
char *host; /* User's real hostname */
|
||||
char *hostip; /* User's IP number */
|
||||
@@ -41,14 +45,11 @@ class CoreExport User : public Extensible
|
||||
Server *server; /* Server user is connected to */
|
||||
time_t timestamp; /* Timestamp of the nick */
|
||||
time_t my_signon; /* When did _we_ see the user? */
|
||||
uint32 mode; /* See below */
|
||||
|
||||
NickCore *nc;
|
||||
|
||||
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 */
|
||||
/* Channels the user is in */
|
||||
UChannelList chans;
|
||||
|
||||
unsigned short invalid_pw_count; /* # of invalid password attempts */
|
||||
time_t invalid_pw_time; /* Time of last invalid password */
|
||||
@@ -72,11 +73,10 @@ class CoreExport User : public Extensible
|
||||
*/
|
||||
~User();
|
||||
|
||||
|
||||
/** Update the nickname of a user record accordingly, should be
|
||||
* called from ircd protocol.
|
||||
*/
|
||||
void SetNewNick(const std::string &newnick);
|
||||
virtual void SetNewNick(const std::string &newnick);
|
||||
|
||||
/** Update the displayed (vhost) of a user record.
|
||||
* This is used (if set) instead of real host.
|
||||
@@ -105,7 +105,6 @@ class CoreExport User : public Extensible
|
||||
*/
|
||||
const std::string &GetUID() const;
|
||||
|
||||
|
||||
/** Update the displayed ident (username) of a user record.
|
||||
* @param ident The new ident to give this user.
|
||||
*/
|
||||
@@ -128,6 +127,10 @@ class CoreExport User : public Extensible
|
||||
*/
|
||||
const std::string &GetIdent() const;
|
||||
|
||||
/** Get the full mask ( nick!ident@realhost ) of a user
|
||||
*/
|
||||
const std::string GetMask();
|
||||
|
||||
/** Updates the realname of the user record.
|
||||
*/
|
||||
void SetRealname(const std::string &realname);
|
||||
@@ -137,10 +140,15 @@ class CoreExport User : public Extensible
|
||||
* @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);
|
||||
virtual void SendMessage(const std::string &source, const char *fmt, ...);
|
||||
virtual void SendMessage(const std::string &source, const std::string &msg);
|
||||
|
||||
/** Collide a nick
|
||||
* See the comment in users.cpp
|
||||
* @param na The nick
|
||||
*/
|
||||
void Collide(NickAlias *na);
|
||||
|
||||
/** Check if the user should become identified because
|
||||
* their svid matches the one stored in their nickcore
|
||||
@@ -151,15 +159,105 @@ class CoreExport User : public Extensible
|
||||
/** Auto identify the user to the given accountname.
|
||||
* @param account Display nick of account
|
||||
*/
|
||||
void AutoID(const char *acc);
|
||||
void AutoID(const std::string &account);
|
||||
|
||||
/** Login the user to a NickCore
|
||||
* @param core The account the user is useing
|
||||
*/
|
||||
void Login(NickCore *core);
|
||||
|
||||
/** Logout the user
|
||||
*/
|
||||
void Logout();
|
||||
|
||||
/** Get the account the user is logged in using
|
||||
* @reurn The account or NULL
|
||||
*/
|
||||
virtual NickCore *Account() const;
|
||||
|
||||
/** Check if the user is identified for their nick
|
||||
* @param CheckNick True to check if the user is identified to the nickname they are on too
|
||||
* @return true or false
|
||||
*/
|
||||
virtual const bool IsIdentified(bool CheckNick = false) const;
|
||||
|
||||
/** Check if the user is recognized for their nick (on the nicks access list)
|
||||
* @return true or false
|
||||
*/
|
||||
const bool IsRecognized() const;
|
||||
virtual const bool IsRecognized() const;
|
||||
|
||||
/** Update the last usermask stored for a user, and check to see if they are recognized
|
||||
*/
|
||||
void UpdateHost();
|
||||
|
||||
/** Check if the user has a mode
|
||||
* @param Name Mode name
|
||||
* @return true or false
|
||||
*/
|
||||
const bool HasMode(UserModeName Name) const;
|
||||
|
||||
/** Set a mode internally on the user, the IRCd is not informed
|
||||
* @param um The user mode
|
||||
* @param Param The param, if there is one
|
||||
*/
|
||||
void SetModeInternal(UserMode *um, const std::string &Param = "");
|
||||
|
||||
/** Remove a mode internally on the user, the IRCd is not informed
|
||||
* @param um The user mode
|
||||
*/
|
||||
void RemoveModeInternal(UserMode *um);
|
||||
|
||||
/** Set a mode on the user
|
||||
* @param bi The client setting the mode
|
||||
* @param um The user mode
|
||||
* @param Param Optional param for the mode
|
||||
*/
|
||||
void SetMode(BotInfo *bi, UserMode *um, const std::string &Param = "");
|
||||
|
||||
/** Set a mode on the user
|
||||
* @param bi The client setting the mode
|
||||
* @param Name The mode name
|
||||
* @param Param Optional param for the mode
|
||||
*/
|
||||
void SetMode(BotInfo *bi, UserModeName Name, const std::string &Param = "");
|
||||
|
||||
/* Set a mode on the user
|
||||
* @param bi The client setting the mode
|
||||
* @param ModeChar The mode char
|
||||
* @param param Optional param for the mode
|
||||
*/
|
||||
void SetMode(BotInfo *bi, char ModeChar, const std::string &Param = "");
|
||||
|
||||
/** Remove a mode on the user
|
||||
* @param bi The client setting the mode
|
||||
* @param um The user mode
|
||||
*/
|
||||
void RemoveMode(BotInfo *bi, UserMode *um);
|
||||
|
||||
/** Remove a mode from the user
|
||||
* @param bi The client setting the mode
|
||||
* @param Name The mode name
|
||||
*/
|
||||
void RemoveMode(BotInfo *bi, UserModeName Name);
|
||||
|
||||
/** Remove a mode from the user
|
||||
* @param bi The client setting the mode
|
||||
* @param ModeChar The mode char
|
||||
*/
|
||||
void RemoveMode(BotInfo *bi, char ModeChar);
|
||||
|
||||
/** Set a string of modes on a user
|
||||
* @param bi The client setting the mode
|
||||
* @param modes The modes
|
||||
*/
|
||||
void SetModes(BotInfo *bi, const char *modes, ...);
|
||||
|
||||
/** Find the channel container for Channel c that the user is on
|
||||
* This is preferred over using FindUser in Channel, as there are usually more users in a channel
|
||||
* than channels a user is in
|
||||
* @param c The channel
|
||||
* @return The channel container, or NULL
|
||||
*/
|
||||
ChannelContainer *FindChannel(Channel *c);
|
||||
};
|
||||
|
||||
|
||||
+1
-7
@@ -32,7 +32,7 @@ fi
|
||||
cat >$VERSIONH <<EOF
|
||||
/* Version information for Services.
|
||||
*
|
||||
* (C) 2003-2008 Anope Team
|
||||
* (C) 2003-2010 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and CREDITS for further details.
|
||||
@@ -67,12 +67,6 @@ cat >$VERSIONH <<EOF
|
||||
# define VER_OS
|
||||
#endif
|
||||
|
||||
#if defined(USE_MODULES)
|
||||
# define VER_MODULE "M"
|
||||
#else
|
||||
# define VER_MODULE
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
EOF
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* version file handler for win32.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2010 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
//
|
||||
// install.js - Windows Configuration
|
||||
//
|
||||
// (C) 2003-2008 Anope Team
|
||||
// (C) 2003-2010 Anope Team
|
||||
// Contact us at team@anope.org
|
||||
//
|
||||
// This program is free but copyrighted software; see the file COPYING for
|
||||
|
||||
+241
-181
@@ -1,6 +1,6 @@
|
||||
# Catalan Language File.
|
||||
#
|
||||
# (C) 2003-2008 Anope Team
|
||||
# (C) 2003-2010 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Please read COPYING and README for furhter details.
|
||||
@@ -873,6 +873,24 @@ NICK_SENDPASS_LINE_5
|
||||
NICK_SENDPASS_OK
|
||||
La clau de %s ha estat enviada.
|
||||
|
||||
# RESETPASS responses
|
||||
NICK_RESETPASS_SYNTAX
|
||||
RESETPASS nickname
|
||||
NICK_RESETPASS_SUBJECT
|
||||
Reset password request for %s
|
||||
NICK_RESETPASS_MESSAGE
|
||||
Hi,
|
||||
|
||||
You have requested to have the password for %s reset.
|
||||
To reset your password, type %R%s CONFIRM %s
|
||||
If you don't know why this mail is sent to you, please ignore it silently.
|
||||
|
||||
PLEASE DON'T ANSWER TO THIS MAIL!
|
||||
|
||||
%s administrators.
|
||||
NICK_RESETPASS_COMPLETE
|
||||
Password reset email for %s has been sent.
|
||||
|
||||
# FORBID responses
|
||||
NICK_SUSPEND_SYNTAX
|
||||
SUSPEND nickname reason
|
||||
@@ -916,10 +934,6 @@ NICK_IS_PREREG
|
||||
This nick is awaiting an e-mail verification code before completing registration.
|
||||
NICK_ENTER_REG_CODE
|
||||
A passcode has been sent to %s, please type %R%s confirm <passcode> to complete registration
|
||||
NICK_CONFIRM_NOT_FOUND
|
||||
Registration step 1 may have expired, please use "%R%s register <password> <email>" first.
|
||||
NICK_CONFIRM_INVALID
|
||||
Invalid passcode has been entered, please check the e-mail again, and retry
|
||||
NICK_REG_MAIL_SUBJECT
|
||||
Nickname Registration (%s)
|
||||
NICK_REG_MAIL_HEAD
|
||||
@@ -939,6 +953,16 @@ NICK_GETPASS_PASSCODE_IS
|
||||
NICK_FORCE_REG
|
||||
Nickname %s confirmed
|
||||
|
||||
# Confirm responces
|
||||
NICK_CONFIRM_NOT_FOUND
|
||||
Registration step 1 may have expired, please use "%R%s register <password> <email>" first.
|
||||
NICK_CONFIRM_INVALID
|
||||
Invalid passcode has been entered, please check the e-mail again, and retry.
|
||||
NICK_CONFIRM_EXPIRED
|
||||
Your password reset request has expired.
|
||||
NICK_CONFIRM_SUCCESS
|
||||
You are now identified for your nick. Change your password using "%R%s SET PASSWORD newpassword" now.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
# ChanServ messages
|
||||
@@ -1019,6 +1043,12 @@ CHAN_LEVEL_TOPIC
|
||||
CHAN_LEVEL_INFO
|
||||
Autoritzar a utilitzar La comanda INFO amb
|
||||
l'opció ALL
|
||||
CHAN_LEVEL_AUTOOWNER
|
||||
Automatic mode +q
|
||||
CHAN_LEVEL_OWNER
|
||||
Allowed to use OWNER command
|
||||
CHAN_LEVEL_OWNERME
|
||||
Allowed to (de)owner him/herself
|
||||
|
||||
# Automatic responses
|
||||
CHAN_IS_REGISTERED
|
||||
@@ -1036,7 +1066,7 @@ CHAN_X_INVALID
|
||||
|
||||
# REGISTER responses
|
||||
CHAN_REGISTER_SYNTAX
|
||||
REGISTER canal clau descripció
|
||||
REGISTER canal descripció
|
||||
CHAN_REGISTER_DISABLED
|
||||
Ho sento, el registre de canals esta temporalment inhabilitat.
|
||||
CHAN_REGISTER_NOT_LOCAL
|
||||
@@ -1055,36 +1085,11 @@ CHAN_REGISTRATION_FAILED
|
||||
Ho sento, la registració ha fallat.
|
||||
CHAN_REGISTERED
|
||||
El canal %s esta registrat sota el teu nickname: %s
|
||||
CHAN_PASSWORD_IS
|
||||
La teva clau pel canal es %s - Recorda-la per un us futur.
|
||||
CHAN_REGISTER_NONE_CHANNEL
|
||||
You have attempted to register a nonexistent channel %s
|
||||
CHAN_SYMBOL_REQUIRED
|
||||
Please use the symbol of # when attempting to register
|
||||
|
||||
|
||||
# IDENTIFY responses
|
||||
CHAN_IDENTIFY_SYNTAX
|
||||
IDENTIFY canal clau
|
||||
CHAN_IDENTIFY_FAILED
|
||||
Ho sento, la identificació ha fallat.
|
||||
CHAN_IDENTIFY_SUCCEEDED
|
||||
Clau aceptada - ara tens nivell de fundador a %s.
|
||||
|
||||
# LOGOUT responses
|
||||
CHAN_LOGOUT_SYNTAX
|
||||
LOGOUT canal nickname
|
||||
CHAN_LOGOUT_SERVADMIN_SYNTAX
|
||||
LOGOUT canal [nickname]
|
||||
CHAN_LOGOUT_SUCCEEDED
|
||||
L'usuari %s ha estat desconnectat del canal %s.
|
||||
CHAN_LOGOUT_ALL_SUCCEEDED
|
||||
Tots els usuaris identificats han estat desconnectats del canal %s (except the channel founder).
|
||||
CHAN_LOGOUT_FOUNDER_FAILED
|
||||
You may not log out of %s (you are founder).
|
||||
CHAN_LOGOUT_NOT_LOGGEDIN
|
||||
%s was not logged into %s.
|
||||
|
||||
# DROP responses
|
||||
CHAN_DROP_SYNTAX
|
||||
DROP canal
|
||||
@@ -1115,14 +1120,6 @@ CHAN_SUCCESSOR_UNSET
|
||||
CHAN_SUCCESSOR_IS_FOUNDER
|
||||
%s no pot ser el sucessor en el canal %s ja que n'es el fundador.
|
||||
|
||||
# SET PASSWORD responses
|
||||
CHAN_SET_PASSWORD_FAILED
|
||||
Ho sento, l'establiment de la clau no ha estat possible.
|
||||
CHAN_PASSWORD_CHANGED
|
||||
Clau per a %s canviada.
|
||||
CHAN_PASSWORD_CHANGED_TO
|
||||
La clau per a %s canviada a %s.
|
||||
|
||||
# SET DESC responses
|
||||
CHAN_DESC_CHANGED
|
||||
La descripció de %s canviada a%s.
|
||||
@@ -1256,6 +1253,14 @@ CHAN_SET_XOP_ON
|
||||
CHAN_SET_XOP_OFF
|
||||
xOP lists system for %s is now OFF.
|
||||
|
||||
# SET PERSISTANT responces
|
||||
CHAN_SET_PERSIST_SYNTAX
|
||||
SET channel PERSIST {ON | OFF}
|
||||
CHAN_SET_PERSIST_ON
|
||||
Channel %s is now persistant.
|
||||
CHAN_SET_PERSIST_OFF
|
||||
Channel %s is no longer persistant.
|
||||
|
||||
# SET NOEXPIRE responses
|
||||
CHAN_SET_NOEXPIRE_SYNTAX
|
||||
SET canal NOEXPIRE {ON | OFF}
|
||||
@@ -1276,6 +1281,37 @@ CHAN_XOP_ACCESS
|
||||
CHAN_XOP_NOT_AVAILABLE
|
||||
xOP system is not available.
|
||||
|
||||
# QOP messages
|
||||
CHAN_QOP_SYNTAX
|
||||
QOP channel {ADD|DEL|LIST|CLEAR} [nick | entry-list]
|
||||
CHAN_QOP_DISABLED
|
||||
Sorry, channel QOP list modification is temporarily disabled.
|
||||
CHAN_QOP_NICKS_ONLY
|
||||
Channel QOP lists may only contain registered nicknames.
|
||||
CHAN_QOP_ADDED
|
||||
%s added to %s QOP list.
|
||||
CHAN_QOP_MOVED
|
||||
%s moved to %s QOP list.
|
||||
CHAN_QOP_NO_SUCH_ENTRY
|
||||
No such entry (#%d) on %s QOP list.
|
||||
CHAN_QOP_NOT_FOUND
|
||||
%s not found on %s QOP list.
|
||||
CHAN_QOP_NO_MATCH
|
||||
No matching entries on %s QOP list.
|
||||
CHAN_QOP_DELETED
|
||||
%s deleted from %s QOP list.
|
||||
CHAN_QOP_DELETED_ONE
|
||||
Deleted 1 entry from %s QOP list.
|
||||
CHAN_QOP_DELETED_SEVERAL
|
||||
Deleted %d entries from %s QOP list.
|
||||
CHAN_QOP_LIST_EMPTY
|
||||
%s QOP list is empty.
|
||||
CHAN_QOP_LIST_HEADER
|
||||
QOP list for %s:
|
||||
Num Nick
|
||||
CHAN_QOP_CLEAR
|
||||
Channel %s QOP list has been cleared.
|
||||
|
||||
# AOP messages
|
||||
CHAN_AOP_SYNTAX
|
||||
AOP canal {ADD|DEL|LIST|CLEAR} [nick | instància]
|
||||
@@ -1407,7 +1443,7 @@ CHAN_VOP_CLEAR
|
||||
|
||||
# ACCESS messages
|
||||
CHAN_ACCESS_SYNTAX
|
||||
ACCESS canal {ADD|DEL|LIST|CLEAR} [nick [nivell] | llista]
|
||||
ACCESS canal {ADD|DEL|LIST|VIEW|CLEAR} [nick [nivell] | llista]
|
||||
CHAN_ACCESS_XOP
|
||||
No pots utilitzar aquest comanda.
|
||||
Utilitza les comandes AOP, SOP i VOP.
|
||||
@@ -1457,6 +1493,12 @@ CHAN_ACCESS_LIST_AXS_FORMAT
|
||||
%3d %4d %s
|
||||
CHAN_ACCESS_CLEAR
|
||||
La llista d'accés pel canal %s ha estat netegada.
|
||||
CHAN_ACCESS_VIEW_XOP_FORMAT
|
||||
%3d %s %s
|
||||
by %s, last seen %s
|
||||
CHAN_ACCESS_VIEW_AXS_FORMAT
|
||||
%3d %4d %s
|
||||
by %s, last seen %s
|
||||
|
||||
# AKICK responses
|
||||
CHAN_AKICK_SYNTAX
|
||||
@@ -1511,6 +1553,8 @@ CHAN_LEVELS_RANGE
|
||||
El nivell ha d'estar entre %d i %d inclosos.
|
||||
CHAN_LEVELS_CHANGED
|
||||
Nivell per a %s en el canal %s cambiat a %d.
|
||||
CHAN_LEVELS_CHANGED_FOUNDER
|
||||
Level for %s on channel %s changed to founder only.
|
||||
CHAN_LEVELS_UNKNOWN
|
||||
Opció %s no coneguda. Escriu %R%s HELP LEVELS DESC per a una llista de opcións valides.
|
||||
CHAN_LEVELS_DISABLED
|
||||
@@ -1593,6 +1637,8 @@ CHAN_INFO_OPT_TOPICLOCK
|
||||
Lock de tòpic
|
||||
CHAN_INFO_OPT_XOP
|
||||
Sistema de llistes xOP
|
||||
CHAN_INFO_OPT_PERSIST
|
||||
Persistant
|
||||
CHAN_INFO_OPT_NONE
|
||||
Cap
|
||||
CHAN_INFO_MODE_LOCK
|
||||
@@ -1621,12 +1667,17 @@ CHAN_INVITE_ALREADY_IN
|
||||
You are already in %s!
|
||||
CHAN_INVITE_SUCCESS
|
||||
You have been invited to %s.
|
||||
CHAN_INVITE_OTHER_SUCCESS
|
||||
%s has been invited to %s.
|
||||
|
||||
|
||||
# UNBAN responses
|
||||
CHAN_UNBAN_SYNTAX
|
||||
UNBAN canal
|
||||
UNBAN canal [nick]
|
||||
CHAN_UNBANNED
|
||||
Has estat desbanegat de %s.
|
||||
CHAN_UNBANNED_OTHER
|
||||
%s has been unbanned from %s.
|
||||
|
||||
# TOPIC responses
|
||||
CHAN_TOPIC_SYNTAX
|
||||
@@ -1651,16 +1702,8 @@ CHAN_CLEARED_USERS
|
||||
Tots els usuaris han estat kickegats del canal %s.
|
||||
CHAN_CLEARED_INVITES
|
||||
All invites on channel %s have been removed.
|
||||
|
||||
# GETPASS responses
|
||||
CHAN_GETPASS_SYNTAX
|
||||
GETPASS canal
|
||||
CHAN_GETPASS_UNAVAILABLE
|
||||
Comanda GETPASS no permessa per que encriptació esta en ús.
|
||||
CHAN_GETPASS_PASSWORD_IS
|
||||
La clau pel canal %s es %s.
|
||||
|
||||
# SENDPASS responses
|
||||
# GETKEY responses
|
||||
CHAN_GETKEY_SYNTAX
|
||||
GETKEY channel
|
||||
CHAN_GETKEY_NOKEY
|
||||
@@ -1668,28 +1711,6 @@ CHAN_GETKEY_NOKEY
|
||||
CHAN_GETKEY_KEY
|
||||
Key for channel %s is %s.
|
||||
|
||||
# SENDPASS responses
|
||||
CHAN_SENDPASS_SYNTAX
|
||||
SENDPASS canal
|
||||
CHAN_SENDPASS_UNAVAILABLE
|
||||
Comanda SENDPASS no permessa per que encriptació esta en ús.
|
||||
CHAN_SENDPASS_SUBJECT
|
||||
Clau del canal (%s)
|
||||
CHAN_SENDPASS_HEAD
|
||||
Hola,
|
||||
CHAN_SENDPASS_LINE_1
|
||||
Has sol.licitat rebre la clau del canal %s per e-mail.
|
||||
CHAN_SENDPASS_LINE_2
|
||||
La clau es %s. Per raons de seguretat hauries de cambiar-la quant rebis aquest mail.
|
||||
CHAN_SENDPASS_LINE_3
|
||||
Si no saps per que has rebut aquest mail, per favor ignora'l.
|
||||
CHAN_SENDPASS_LINE_4
|
||||
Per favor NO RESPONGUIS a aquest email!
|
||||
CHAN_SENDPASS_LINE_5
|
||||
Administradors de %s.
|
||||
CHAN_SENDPASS_OK
|
||||
La clau de %s ha estat enviada.
|
||||
|
||||
# FORBID responses
|
||||
CHAN_FORBID_SYNTAX
|
||||
FORBID canal [raó]
|
||||
@@ -2162,6 +2183,8 @@ BOT_UNASSIGN_SYNTAX
|
||||
UNASSIGN canal
|
||||
BOT_UNASSIGN_UNASSIGNED
|
||||
Ja no hi ha un bot assignat a %s.
|
||||
BOT_UNASSIGN_PERSISTANT_CHAN
|
||||
You can not unassign bots while persist is set on the channel.
|
||||
|
||||
# INFO responses
|
||||
BOT_INFO_SYNTAX
|
||||
@@ -2985,8 +3008,6 @@ OPER_DEFCON_SYNTAX
|
||||
DEFCON [1|2|3|4|5]
|
||||
OPER_DEFCON_DENIED
|
||||
This service is temporarly disabled, please try again later
|
||||
OPER_DEFCON_NO_CONF
|
||||
The Defcon system must be enabled in the services.conf file
|
||||
OPER_DEFCON_CHANGED
|
||||
Services are now at DEFCON %d
|
||||
OPER_DEFCON_WALL
|
||||
@@ -3006,6 +3027,10 @@ OPER_MODULE_REMOVE_FAIL
|
||||
Unable to remove module %s
|
||||
OPER_MODULE_NO_UNLOAD
|
||||
This module can not be unloaded.
|
||||
OPER_MODULE_ALREADY_LOADED
|
||||
Module %s is already loaded.
|
||||
OPER_MODULE_ISNT_LOADED
|
||||
Module %s isn't loaded.
|
||||
OPER_MODULE_LOAD_SYNTAX
|
||||
MODLOAD FileName
|
||||
OPER_MODULE_UNLOAD_SYNTAX
|
||||
@@ -3401,6 +3426,8 @@ NICK_HELP_CMD_RELEASE
|
||||
RELEASE Repren possesió del teu nick després de RECOVER
|
||||
NICK_HELP_CMD_SENDPASS
|
||||
SENDPASS Vas oblidar la teva clau? Intenta això
|
||||
NICK_HELP_CMD_RESETPASS
|
||||
RESETPASS Helps you reset lost passwords.
|
||||
NICK_HELP_CMD_GHOST
|
||||
GHOST Disconnects a "ghost" IRC session using your nick
|
||||
NICK_HELP_CMD_ALIST
|
||||
@@ -3996,6 +4023,12 @@ NICK_HELP_SENDPASS
|
||||
Pot ser limitat a operadors d'IRC en certes
|
||||
xarxes.
|
||||
|
||||
NICK_HELP_RESETPASS
|
||||
Syntax: RESETPASS nickname
|
||||
|
||||
Sends a code key to the nickname with instructions on how to
|
||||
reset their password.
|
||||
|
||||
NICK_HELP_CONFIRM
|
||||
Syntax: CONFIRM passcode
|
||||
|
||||
@@ -4005,6 +4038,14 @@ NICK_HELP_CONFIRM
|
||||
is sent to your e-mail address in the first step of the
|
||||
registration process. For more information about the first
|
||||
stage of the registration process, type: %R%S HELP REGISTER
|
||||
|
||||
This is also used after the RESETPASS command has been used to
|
||||
force identify you to your nick so you may change your password.
|
||||
|
||||
NICK_HELP_CONFIRM_OPER
|
||||
|
||||
Additionally, Services Operators with the nickserv/confirm permission can
|
||||
replace passcode with a users nick to force validate them.
|
||||
|
||||
NICK_HELP_RESEND
|
||||
Syntax: RESEND
|
||||
@@ -4167,10 +4208,10 @@ CHAN_HELP_CMD_STATUS
|
||||
on a channel
|
||||
CHAN_HELP_CMD_REGISTER
|
||||
REGISTER Registra un canal
|
||||
CHAN_HELP_CMD_IDENTIFY
|
||||
IDENTIFY T'identifica amb la teva clau
|
||||
CHAN_HELP_CMD_SET
|
||||
SET Establir opcions i informació d'un canal
|
||||
CHAN_HELP_CMD_QOP
|
||||
QOP Modify the list of QOP users
|
||||
CHAN_HELP_CMD_AOP
|
||||
AOP Modifica la llista d'usuaris AOP
|
||||
CHAN_HELP_CMD_SOP
|
||||
@@ -4183,8 +4224,6 @@ CHAN_HELP_CMD_AKICK
|
||||
AKICK Manté la llista d'AutoKick
|
||||
CHAN_HELP_CMD_DROP
|
||||
DROP Cancel.la l'enregistrament d'un canal
|
||||
CHAN_HELP_CMD_SENDPASS
|
||||
SENDPASS Ajuda a recuperar claus perdudes
|
||||
CHAN_HELP_CMD_BAN
|
||||
BAN Bans a selected nick on a channel
|
||||
CHAN_HELP_CMD_CLEAR
|
||||
@@ -4201,14 +4240,12 @@ CHAN_HELP_CMD_KICK
|
||||
KICK Kicks a selected nick from a channel
|
||||
CHAN_HELP_CMD_LIST
|
||||
LIST Lists all registered channels matching the given pattern
|
||||
CHAN_HELP_CMD_LOGOUT
|
||||
LOGOUT This command will logout the selected nickname
|
||||
CHAN_HELP_CMD_OP
|
||||
OP Gives Op status to a selected nick on a channel
|
||||
CHAN_HELP_CMD_TOPIC
|
||||
TOPIC Manipulate the topic of the specified channel
|
||||
CHAN_HELP_CMD_UNBAN
|
||||
UNBAN Remove all bans preventing you from entering a channel
|
||||
UNBAN Remove all bans preventing a user from entering a channel
|
||||
CHAN_HELP_CMD_VOICE
|
||||
VOICE Voices a selected nick on a channel
|
||||
CHAN_HELP_CMD_VOP
|
||||
@@ -4227,10 +4264,6 @@ CHAN_HELP_CMD_OWNER
|
||||
OWNER Gives you owner status on channel
|
||||
CHAN_HELP_CMD_PROTECT
|
||||
PROTECT Protects a selected nick on a channel
|
||||
CHAN_HELP_CMD_ADMIN
|
||||
ADMIN Protects a selected nick on a channel
|
||||
CHAN_HELP_CMD_DEADMIN
|
||||
DEADMIN Deprotects a selected nick on a channel
|
||||
CHAN_HELP_CMD_DEOP
|
||||
DEOP Deops a selected nick on a channel
|
||||
|
||||
@@ -4253,53 +4286,32 @@ CHAN_HELP_EXPIRES
|
||||
automaticament eliminat.
|
||||
|
||||
CHAN_HELP_REGISTER
|
||||
Sintaxis: REGISTER canal clau descripció
|
||||
Sintaxis: REGISTER canal descripció
|
||||
|
||||
Registra un canal en la base de dades de %S. Per a
|
||||
utilitzar aquesta comanda, has de ser un operador en el
|
||||
canal que intentis registrar. La clau es utilitzada amb
|
||||
la comanda IDENTIFY per a permetre a altres fer
|
||||
canvis en les opcions del canal posteriorment.
|
||||
L'últim parametre, el qual ha de ser inclòs, és
|
||||
una descripció general del propòsit del canal.
|
||||
|
||||
Quant registres un canal, ets reconegut com el
|
||||
"fundador" del canal. El fundador del canal pot
|
||||
canviar tots els parametres pel canal;
|
||||
%S també donarà al fundador privilegis d'operador
|
||||
automaticamente quant l'usuari entri al canal.
|
||||
Esbrina sobre la comanda ACCESS
|
||||
(%R%S HELP ACCESS) Per més informació sobre
|
||||
com donar aquests privilegis a altres usuaris del canal.
|
||||
|
||||
NOTA: Per registrar un canal has d'haver registrat
|
||||
el teu nickname primer. Si encara no ho has fet, escriu
|
||||
%R%s HELP per més informació de com fer-ho.
|
||||
Registers a channel in the %S database. In order
|
||||
to use this command, you must first be a channel operator
|
||||
on the channel you're trying to register.
|
||||
The description, which must be included, is a
|
||||
general description of the channel's purpose.
|
||||
|
||||
CHAN_HELP_IDENTIFY
|
||||
Sintaxis: IDENTIFY canal clau
|
||||
|
||||
T'identifica amb %S com el fundador del canal especificat.
|
||||
Moltes comandes requereixen que utilitzis aquesta comanda abans
|
||||
d'utilitzar-los. La clau hauria de ser la mateixa que
|
||||
vas enviar amb la comanda REGISTER.
|
||||
|
||||
CHAN_HELP_LOGOUT
|
||||
Sintaxis: LOGOUT canal nickname
|
||||
|
||||
Aquest comanda fa que el nickname donat ja no siguis identificat
|
||||
en el canal especificat.
|
||||
|
||||
Si ets el fundador del canal, pots desconectar a
|
||||
qui sigui, d'altra banda tan sols et pots desconnectar
|
||||
a tu mateix.
|
||||
When you register a channel, you are recorded as the
|
||||
"founder" of the channel. The channel founder is allowed
|
||||
to change all of the channel settings for the channel;
|
||||
%S will also automatically give the founder
|
||||
channel-operator privileges when s/he enters the channel.
|
||||
See the ACCESS command (%R%S HELP ACCESS) for
|
||||
information on giving a subset of these privileges to
|
||||
other channel users.
|
||||
|
||||
NOTICE: In order to register a channel, you must have
|
||||
first registered your nickname. If you haven't,
|
||||
%R%s HELP for information on how to do so.
|
||||
|
||||
CHAN_HELP_DROP
|
||||
Sintaxis: DROP canal
|
||||
|
||||
Desenregistra el canal especificat. Nomès pot ser utilitzat pel
|
||||
fundador del canal, qui ha d'utilitzar primer la comanda
|
||||
IDENTIFY.
|
||||
fundador del canal.
|
||||
|
||||
CHAN_HELP_SET
|
||||
Sintaxis: SET canal opció parametres
|
||||
@@ -4311,7 +4323,6 @@ CHAN_HELP_SET
|
||||
|
||||
FOUNDER Estableix el fundador d'un canal
|
||||
SUCCESSOR Estableix el successor d'un canal
|
||||
PASSWORD Estableix el password del fundador
|
||||
DESC Estableix la descripció del canal
|
||||
URL Associa una URL amb el canal
|
||||
EMAIL Associa un E-mail amb el canal
|
||||
@@ -4335,6 +4346,7 @@ CHAN_HELP_SET
|
||||
TOPICLOCK El topic sols pot ser canviat amb
|
||||
TOPIC
|
||||
XOP Canvia el sistema de privilegis d'usuari
|
||||
PERSIST Set the channel as permanent
|
||||
|
||||
Escriu %R%S HELP opció per més informació
|
||||
sobre una opció en particular.
|
||||
@@ -4356,12 +4368,6 @@ CHAN_HELP_SET_SUCCESSOR
|
||||
si no hi haguès un successor. El nou nickname ha de ser un
|
||||
d'enregistrat.
|
||||
|
||||
CHAN_HELP_SET_PASSWORD
|
||||
Sintaxis: SET canal PASSWORD clau
|
||||
|
||||
Estableix la clau utilitzada per identificar-se com el
|
||||
fundador del canal.
|
||||
|
||||
CHAN_HELP_SET_DESC
|
||||
Sintaxis: SET canal DESC descripció
|
||||
|
||||
@@ -4546,6 +4552,29 @@ CHAN_HELP_SET_XOP
|
||||
Canviar de llistes xOP al sistema de llistes d'accés no causa cap
|
||||
problema.
|
||||
|
||||
CHAN_HELP_SET_PERSIST
|
||||
Syntax: SET channel PERSIST {ON | OFF}
|
||||
|
||||
Enables or disables the persistant channel setting.
|
||||
When persistant is set, the service bot will remain
|
||||
in the channel when it has emptied of users.
|
||||
|
||||
If your IRCd does not a permanent (persistant) channel
|
||||
mode you must have a service bot in your channel to
|
||||
set persist on, and it can not be unassigned while persist
|
||||
is on.
|
||||
|
||||
If this network does not have BotServ enabled and does
|
||||
not have a permanent channel mode, ChanServ will
|
||||
join your channel when you set persist on (and leave when
|
||||
it has been set off).
|
||||
|
||||
If your IRCd has a permanent (persistant) channel mode
|
||||
and is is set or unset (for any reason, including MLOCK),
|
||||
persist is automatically set and unset for the channel aswell.
|
||||
Additionally, services will set or unset this mode when you
|
||||
set persist on or off.
|
||||
|
||||
CHAN_HELP_SET_OPNOTICE
|
||||
Sintàxi: SET canal OPNOTICE {ON | OFF}
|
||||
|
||||
@@ -4554,6 +4583,45 @@ CHAN_HELP_SET_OPNOTICE
|
||||
a l'usuari del canal quan les comandes OP o DEOP siguin
|
||||
utilitzades per a un usuari en el canal.
|
||||
|
||||
CHAN_HELP_QOP
|
||||
Syntax: QOP channel ADD nick
|
||||
QOP channel DEL {nick | entry-num | list}
|
||||
QOP channel LIST [mask | list]
|
||||
QOP channel CLEAR
|
||||
|
||||
Maintains the QOP (AutoOwner) list for a channel. The QOP
|
||||
list gives users the right to be auto-owner on your channel,
|
||||
which gives them almost (or potentially, total) access.
|
||||
|
||||
The QOP ADD command adds the given nickname to the
|
||||
QOP list.
|
||||
|
||||
The QOP DEL command removes the given nick from the
|
||||
QOP list. If a list of entry numbers is given, those
|
||||
entries are deleted. (See the example for LIST below.)
|
||||
|
||||
The QOP LIST command displays the QOP list. If
|
||||
a wildcard mask is given, only those entries matching the
|
||||
mask are displayed. If a list of entry numbers is given,
|
||||
only those entries are shown; for example:
|
||||
|
||||
QOP #channel LIST 2-5,7-9
|
||||
Lists AOP entries numbered 2 through 5 and
|
||||
7 through 9.
|
||||
|
||||
The QOP CLEAR command clears all entries of the
|
||||
QOP list.
|
||||
|
||||
The QOP commands are limited to
|
||||
founders (unless SECUREOPS is off). However, any user on the
|
||||
QOP list may use the QOP LIST command.
|
||||
|
||||
This command may have been disabled for your channel, and
|
||||
in that case you need to use the access list. See
|
||||
%R%S HELP ACCESS for information about the access list,
|
||||
and %R%S HELP SET XOP to know how to toggle between
|
||||
the access list and xOP list systems.
|
||||
|
||||
CHAN_HELP_AOP
|
||||
Sintàxi: AOP canal ADD nick
|
||||
AOP canal DEL {nick | instancia | llista}
|
||||
@@ -4727,6 +4795,7 @@ CHAN_HELP_ACCESS
|
||||
Sintàxi: ACCESS canal ADD nick nivell
|
||||
ACCESS canal DEL {nick | indices | llista}
|
||||
ACCESS canal LIST [mascara | llista]
|
||||
ACCESS canal VIEW [mascara | llista]
|
||||
ACCESS canal CLEAR
|
||||
|
||||
Manté la llista d'accés per a un canal. La llista
|
||||
@@ -4760,7 +4829,10 @@ CHAN_HELP_ACCESS
|
||||
ACCESS #canal LIST 2-5,7-9
|
||||
llista instàncies d'accés numerades 2 fins 5 i
|
||||
7 fins a 9.
|
||||
|
||||
|
||||
The ACCESS VIEW command displays the access list similar
|
||||
to ACCESS LIST but shows the creator and last used time.
|
||||
|
||||
La comanda ACCESS CLEAR neteja totes les instàncies
|
||||
de la llista d'accés.
|
||||
|
||||
@@ -4839,30 +4911,30 @@ CHAN_HELP_AKICK
|
||||
de la llista de akicks.
|
||||
|
||||
CHAN_HELP_LEVELS
|
||||
Sintàxi: LEVELS canal SET tipo nivell
|
||||
Sintàxi: LEVELS canal SET tipo [nivell|FOUNDER]
|
||||
LEVELS canal {DIS | DISABLE} tipo
|
||||
LEVELS canal LIST
|
||||
LEVELS canal RESET
|
||||
|
||||
La comanda LEVELS permet un control fin sobre el
|
||||
significat dels nivellls d'accés numèrics per a
|
||||
canals. Amb aquesta comanda, pots definir el nivelll d'accés
|
||||
requerit per a la majoria de les funcions de %S.
|
||||
(Les comandes SET FOUNDER i SET PASSWORD, així com
|
||||
aquesta comanda estan sempre restringidws al fundador del
|
||||
canal.)
|
||||
The LEVELS command allows fine control over the meaning of
|
||||
the numeric access levels used for channels. With this
|
||||
command, you can define the access level required for most
|
||||
of %S's functions. (The SET FOUNDER and this command
|
||||
are always restricted to the channel founder.)
|
||||
|
||||
LEVELS SET permet canviar el nivelll d'accés per a una funció
|
||||
o un grup de funcions. LEVELS DISABLE (o DIS abreviat)
|
||||
deshabilita una característica automàtica o prohibeix accés a una
|
||||
funció per a totss excepte el fundador del canal.
|
||||
LEVELS LIST mostra els nivellls actuals per a cada funció o
|
||||
grup de funcions. LEVELS RESET restableix els nivellls als
|
||||
nivellls per defecte d'un canal acabat de crear (Veure
|
||||
HELP ACCESS LEVELS).
|
||||
LEVELS SET allows the access level for a function or group of
|
||||
functions to be changed. LEVELS DISABLE (or DIS for short)
|
||||
disables an automatic feature or disallows access to a
|
||||
function by anyone, INCLUDING the founder (although, the founder
|
||||
can always reenable it).
|
||||
|
||||
Per a una llista de les características i funcions a les que
|
||||
se'ls pot canviar els nivellls, Veure HELP LEVELS DESC.
|
||||
LEVELS LIST shows the current levels for each function or
|
||||
group of functions. LEVELS RESET resets the levels to the
|
||||
default levels of a newly-created channel (see
|
||||
HELP ACCESS LEVELS).
|
||||
|
||||
For a list of the features and functions whose levels can be
|
||||
set, see HELP LEVELS DESC.
|
||||
|
||||
CHAN_HELP_LEVELS_DESC
|
||||
Els següents nombres de característiques/funcions són
|
||||
@@ -4993,10 +5065,10 @@ CHAN_HELP_INVITE
|
||||
i major en el canal.
|
||||
|
||||
CHAN_HELP_UNBAN
|
||||
Sintàxi: UNBAN canal
|
||||
Sintàxi: UNBAN canal [nick]
|
||||
|
||||
Li diu a %S que esborri tots els bans que no permeten que
|
||||
entris al canal donat.
|
||||
Tells %S to remove all bans preventing you or the given
|
||||
user from entering the given channel.
|
||||
|
||||
Per defecte, limitat a AOPs o aquells amb nivell 5
|
||||
i major en el canal.
|
||||
@@ -5057,15 +5129,6 @@ CHAN_HELP_GETKEY
|
||||
Sintàxi: GETKEY canal
|
||||
|
||||
Retorna la clau del canal donat.
|
||||
|
||||
CHAN_HELP_SENDPASS
|
||||
Sintàxi: SENDPASS canal
|
||||
|
||||
Envia la clau del canal donat a l'adresa email establerta
|
||||
en l'arxiu del nickname del fundador. Aquesta comanda
|
||||
és sumament útil per a recuperar claus perdudes.
|
||||
|
||||
pot ser limitat a Operadors de IRC en certas xarxes.
|
||||
|
||||
CHAN_SERVADMIN_HELP
|
||||
|
||||
@@ -5082,22 +5145,6 @@ CHAN_SERVADMIN_HELP
|
||||
Veure l'accés, AKICK, i paràmetres de les llistes de nivells per a
|
||||
qualsevol canal.
|
||||
|
||||
CHAN_SERVADMIN_HELP_LOGOUT
|
||||
Sintàxi: LOGOUT canal [nickname]
|
||||
|
||||
Aquesta comanda ha fa que el nick seleccionat no sigui identificat
|
||||
pel canal donat.
|
||||
|
||||
Si tu ets el fundador del canal, pots desconectar a
|
||||
qui sigui, sinó només et pots desconectar a
|
||||
tu mateix.
|
||||
|
||||
Si ets un administrador de serveis, pots
|
||||
desconectar a qui sigui d'un canal sense ser el fundador
|
||||
del canal. A més, pots omitir el paràmetro nickname;
|
||||
això desconectara a tots els usuaris identificados
|
||||
del canal.
|
||||
|
||||
CHAN_SERVADMIN_HELP_DROP
|
||||
Sintàxi: DROP canal
|
||||
|
||||
@@ -5123,8 +5170,8 @@ CHAN_SERVADMIN_HELP_SET_NOEXPIRE
|
||||
|
||||
CHAN_SERVADMIN_HELP_INFO
|
||||
|
||||
Administradors de serveis poden utilitzar el paràmetre
|
||||
ALL amb qualsevol canal
|
||||
Services Operators with the chanserv/auspex permission can
|
||||
use the ALL parameter with any channel.
|
||||
|
||||
CHAN_SERVADMIN_HELP_LIST
|
||||
Sintàxi: LIST patró [FORBIDDEN] [NOEXPIRE]
|
||||
@@ -6605,3 +6652,16 @@ OPER_UMODE_UNSUPPORTED
|
||||
|
||||
OPER_SUPER_ADMIN_NOT_ENABLED
|
||||
SuperAdmin setting not enabled in services.conf
|
||||
|
||||
OPER_HELP_SYNC
|
||||
Syntax: SQLSYNC
|
||||
|
||||
This command syncs your databases with SQL. You should
|
||||
only have to execute this command once, when you initially
|
||||
import your databases into SQL.
|
||||
OPER_HELP_CMD_SQLSYNC
|
||||
SQLSYNC Import your databases to SQL
|
||||
OPER_SYNC_UPDATING
|
||||
Updating MySQL.
|
||||
OPER_SYNC_UPDATED
|
||||
Finished updating MySQL.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Deutsches Language file.
|
||||
#
|
||||
# (C) 2003-2008 Anope Team
|
||||
# (C) 2003-2010 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Please read COPYING and README for furhter details.
|
||||
@@ -892,6 +892,24 @@ NICK_SENDPASS_LINE_5
|
||||
NICK_SENDPASS_OK
|
||||
Das Passwort von %s wurde per eMail verschickt.
|
||||
|
||||
# RESETPASS responces
|
||||
NICK_RESETPASS_SYNTAX
|
||||
RESETPASS nickname
|
||||
NICK_RESETPASS_SUBJECT
|
||||
Reset password request for %s
|
||||
NICK_RESETPASS_MESSAGE
|
||||
Hi,
|
||||
|
||||
You have requested to have the password for %s reset.
|
||||
To reset your password, type %R%s CONFIRM %s
|
||||
If you don't know why this mail is sent to you, please ignore it silently.
|
||||
|
||||
PLEASE DON'T ANSWER TO THIS MAIL!
|
||||
|
||||
%s administrators.
|
||||
NICK_RESETPASS_COMPLETE
|
||||
Password reset email for %s has been sent.
|
||||
|
||||
# FORBID responses
|
||||
NICK_SUSPEND_SYNTAX
|
||||
SUSPEND Nickname Grund
|
||||
@@ -929,10 +947,6 @@ NICK_IS_PREREG
|
||||
Dieser Nickname benötigt das Email Bestätigungs Passwort vor Abschluß der Registrierung.
|
||||
NICK_ENTER_REG_CODE
|
||||
Ein Password wurde zu %s gesendet, bitte tippe %R%s confirm <passcode> um die Registrierung abzuschließen.
|
||||
NICK_CONFIRM_NOT_FOUND
|
||||
Registrieungs Stufe 1 ist eventuell abgelaufen, bitte nutze zuerst "%R%s register <password> <email>".
|
||||
NICK_CONFIRM_INVALID
|
||||
Ein ungültiger Passcode wurde eingegeben, prüfe bitte deine Email und gib den Code erneut ein.
|
||||
NICK_REG_MAIL_SUBJECT
|
||||
Nickname Registrierung (%s)
|
||||
NICK_REG_MAIL_HEAD
|
||||
@@ -952,6 +966,16 @@ NICK_GETPASS_PASSCODE_IS
|
||||
NICK_FORCE_REG
|
||||
Nickname %s bestätigt
|
||||
|
||||
# Confirm responses
|
||||
NICK_CONFIRM_NOT_FOUND
|
||||
Registrieungs Stufe 1 ist eventuell abgelaufen, bitte nutze zuerst "%R%s register <password> <email>".
|
||||
NICK_CONFIRM_INVALID
|
||||
Ein ungültiger Passcode wurde eingegeben, prüfe bitte deine Email und gib den Code erneut ein.
|
||||
NICK_CONFIRM_EXPIRED
|
||||
Your password reset request has expired.
|
||||
NICK_CONFIRM_SUCCESS
|
||||
You are now identified for your nick. Change your password using "%R%s SET PASSWORD newpassword" now.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
# ChanServ messages
|
||||
@@ -1023,6 +1047,18 @@ CHAN_LEVEL_KICK
|
||||
KICK-Befehl erlaubt
|
||||
CHAN_LEVEL_SIGNKICK
|
||||
Kein signierter Kick wenn SIGNKICK LEVEL genutzt wird
|
||||
CHAN_LEVEL_AUTOOWNER
|
||||
Automatic mode +q
|
||||
CHAN_LEVEL_OWNER
|
||||
Allowed to use OWNER command
|
||||
CHAN_LEVEL_OWNERME
|
||||
Allowed to (de)owner him/herself
|
||||
CHAN_ACCESS_VIEW_XOP_FORMAT
|
||||
%3d %s %s
|
||||
by %s, last seen %s
|
||||
CHAN_ACCESS_VIEW_AXS_FORMAT
|
||||
%3d %4d %s
|
||||
by %s, last seen %s
|
||||
|
||||
# Automatic responses
|
||||
CHAN_LEVEL_BANME
|
||||
@@ -1050,7 +1086,7 @@ CHAN_X_INVALID
|
||||
|
||||
# REGISTER responses
|
||||
CHAN_REGISTER_SYNTAX
|
||||
REGISTER Channel Passwort Beschreibung
|
||||
REGISTER Channel Beschreibung
|
||||
CHAN_REGISTER_DISABLED
|
||||
Die Registrierung von Channels ist derzeit deaktiviert.
|
||||
CHAN_REGISTER_NOT_LOCAL
|
||||
@@ -1069,34 +1105,12 @@ CHAN_REGISTRATION_FAILED
|
||||
Registrierung fehlgeschlagen.
|
||||
CHAN_REGISTERED
|
||||
Der Channel %s ist registriert unter deinem Nicknamen: %s
|
||||
CHAN_PASSWORD_IS
|
||||
Dein Channel-Passwort ist %s - behalte es für spätere Benutzung.
|
||||
CHAN_REGISTER_NONE_CHANNEL
|
||||
Du hast versucht ein nicht existierender Channel %s zu registrieren.
|
||||
CHAN_SYMBOL_REQUIRED
|
||||
Verwende bitte nur das Symbol # wenn du versuchst ein
|
||||
Channel zu registrieren.
|
||||
|
||||
# IDENTIFY responses
|
||||
CHAN_IDENTIFY_SYNTAX
|
||||
IDENTIFY Channel Passwort
|
||||
CHAN_IDENTIFY_FAILED
|
||||
Identifizierung ist fehlgeschlagen.
|
||||
CHAN_IDENTIFY_SUCCEEDED
|
||||
Passwort akzeptiert - du hast jetzt Founderlevel-Zugriff auf %s.
|
||||
|
||||
# LOGOUT responses
|
||||
CHAN_LOGOUT_SYNTAX
|
||||
LOGOUT Channel Nickname
|
||||
CHAN_LOGOUT_SERVADMIN_SYNTAX
|
||||
LOGOUT Channel [Nickname]
|
||||
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).
|
||||
CHAN_LOGOUT_NOT_LOGGEDIN
|
||||
%s was not logged into %s.
|
||||
|
||||
# DROP responses
|
||||
CHAN_DROP_SYNTAX
|
||||
DROP Channel
|
||||
@@ -1127,14 +1141,6 @@ CHAN_SUCCESSOR_UNSET
|
||||
CHAN_SUCCESSOR_IS_FOUNDER
|
||||
%s kann nicht gleichzeitig Gründer und Vertreter im Channel %s sein.
|
||||
|
||||
# SET PASSWORD responses
|
||||
CHAN_SET_PASSWORD_FAILED
|
||||
Konnte das Passwort nicht ändern.
|
||||
CHAN_PASSWORD_CHANGED
|
||||
%s Passwort wurde geändert.
|
||||
CHAN_PASSWORD_CHANGED_TO
|
||||
%s Passwort wurde geändert zu %s.
|
||||
|
||||
# SET DESC responses
|
||||
CHAN_DESC_CHANGED
|
||||
Beschreibung von %s wurde geändert zu %s.
|
||||
@@ -1266,6 +1272,14 @@ CHAN_SET_XOP_ON
|
||||
CHAN_SET_XOP_OFF
|
||||
XOP System für %s ist jetzt OFF.
|
||||
|
||||
# SET PERSISTANT responces
|
||||
CHAN_SET_PERSIST_SYNTAX
|
||||
SET channel PERSIST {ON | OFF}
|
||||
CHAN_SET_PERSIST_ON
|
||||
Channel %s is now persistant.
|
||||
CHAN_SET_PERSIST_OFF
|
||||
Channel %s is no longer persistant.
|
||||
|
||||
# SET NOEXPIRE responses
|
||||
CHAN_SET_NOEXPIRE_SYNTAX
|
||||
SET channel NOEXPIRE {ON | OFF}
|
||||
@@ -1285,6 +1299,37 @@ CHAN_XOP_ACCESS
|
||||
CHAN_XOP_NOT_AVAILABLE
|
||||
XOP System ist nicht verfügbar.
|
||||
|
||||
# QOP messages
|
||||
CHAN_QOP_SYNTAX
|
||||
QOP channel {ADD|DEL|LIST|CLEAR} [nick | entry-list]
|
||||
CHAN_QOP_DISABLED
|
||||
Sorry, channel QOP list modification is temporarily disabled.
|
||||
CHAN_QOP_NICKS_ONLY
|
||||
Channel QOP lists may only contain registered nicknames.
|
||||
CHAN_QOP_ADDED
|
||||
%s added to %s QOP list.
|
||||
CHAN_QOP_MOVED
|
||||
%s moved to %s QOP list.
|
||||
CHAN_QOP_NO_SUCH_ENTRY
|
||||
No such entry (#%d) on %s QOP list.
|
||||
CHAN_QOP_NOT_FOUND
|
||||
%s not found on %s QOP list.
|
||||
CHAN_QOP_NO_MATCH
|
||||
No matching entries on %s QOP list.
|
||||
CHAN_QOP_DELETED
|
||||
%s deleted from %s QOP list.
|
||||
CHAN_QOP_DELETED_ONE
|
||||
Deleted 1 entry from %s QOP list.
|
||||
CHAN_QOP_DELETED_SEVERAL
|
||||
Deleted %d entries from %s QOP list.
|
||||
CHAN_QOP_LIST_EMPTY
|
||||
%s QOP list is empty.
|
||||
CHAN_QOP_LIST_HEADER
|
||||
QOP list for %s:
|
||||
Num Nick
|
||||
CHAN_QOP_CLEAR
|
||||
Channel %s QOP list has been cleared.
|
||||
|
||||
# AOP messages
|
||||
CHAN_AOP_SYNTAX
|
||||
AOP Channel {ADD|DEL|LIST|CLEAR} [Nickname | entry-liste]
|
||||
@@ -1515,6 +1560,8 @@ CHAN_LEVELS_RANGE
|
||||
Der Level kann nur zwischen %d und einschliesslich %d liegen.
|
||||
CHAN_LEVELS_CHANGED
|
||||
Der Level für %s für den Channel %s wurde geändert auf %d.
|
||||
CHAN_LEVELS_CHANGED_FOUNDER
|
||||
Level for %s on channel %s changed to founder only.
|
||||
CHAN_LEVELS_UNKNOWN
|
||||
Einstellung %s ist unbekannt. Tippe %R%s HELP LEVELS DESC für eine ausführliche Einstellungsliste.
|
||||
CHAN_LEVELS_DISABLED
|
||||
@@ -1597,6 +1644,8 @@ CHAN_INFO_OPT_TOPICLOCK
|
||||
Topic-Sperre
|
||||
CHAN_INFO_OPT_XOP
|
||||
xOP Listen-System
|
||||
CHAN_INFO_OPT_PERSIST
|
||||
Persistant
|
||||
CHAN_INFO_OPT_NONE
|
||||
Keine
|
||||
CHAN_INFO_MODE_LOCK
|
||||
@@ -1625,12 +1674,17 @@ CHAN_INVITE_ALREADY_IN
|
||||
You are already in %s!
|
||||
CHAN_INVITE_SUCCESS
|
||||
You have been invited to %s.
|
||||
CHAN_INVITE_OTHER_SUCCESS
|
||||
%s has been invited to %s.
|
||||
|
||||
|
||||
# UNBAN responses
|
||||
CHAN_UNBAN_SYNTAX
|
||||
UNBAN Channel
|
||||
UNBAN Channel [nick]
|
||||
CHAN_UNBANNED
|
||||
Dein Ban in %s wurde entfernt.
|
||||
CHAN_UNBANNED_OTHER
|
||||
%s has been unbanned from %s.
|
||||
|
||||
# CLEAR responses
|
||||
CHAN_TOPIC_SYNTAX
|
||||
@@ -1655,16 +1709,8 @@ CHAN_CLEARED_USERS
|
||||
Alle User wurden aus Channel %s gekicked.
|
||||
CHAN_CLEARED_INVITES
|
||||
Alle Invites wurden im Channel %s entfernt.
|
||||
|
||||
# GETPASS responses
|
||||
CHAN_GETPASS_SYNTAX
|
||||
GETPASS Channel
|
||||
CHAN_GETPASS_UNAVAILABLE
|
||||
GETPASS Befehl nicht verfügbar, da die Datenbank verschlüsselt ist.
|
||||
CHAN_GETPASS_PASSWORD_IS
|
||||
Passwort für Channel %s ist %s.
|
||||
|
||||
# SENDPASS responses
|
||||
# GETKEY responses
|
||||
CHAN_GETKEY_SYNTAX
|
||||
GETKEY Channel
|
||||
CHAN_GETKEY_NOKEY
|
||||
@@ -1672,28 +1718,6 @@ CHAN_GETKEY_NOKEY
|
||||
CHAN_GETKEY_KEY
|
||||
Key for channel %s is %s.
|
||||
|
||||
# SENDPASS responses
|
||||
CHAN_SENDPASS_SYNTAX
|
||||
SENDPASS Channel
|
||||
CHAN_SENDPASS_UNAVAILABLE
|
||||
SENDPASS Befehl nicht verfügbar, da die Datenbank verschlüsselt ist.
|
||||
CHAN_SENDPASS_SUBJECT
|
||||
Channel-Passwort (%s)
|
||||
CHAN_SENDPASS_HEAD
|
||||
Hi,
|
||||
CHAN_SENDPASS_LINE_1
|
||||
Du hast das Passwortes für deinen Channel %s angefordert.
|
||||
CHAN_SENDPASS_LINE_2
|
||||
Das Passwort ist %s. Aus Sicherheitsgründen solltest du das Passwort bei Erhalt dieser Nachricht ändern.
|
||||
CHAN_SENDPASS_LINE_3
|
||||
Wenn du nicht weisst, warum du diese Mail empfangen hast, ignoriere Sie bitte.
|
||||
CHAN_SENDPASS_LINE_4
|
||||
AUF DIESE MAIL BITTE NICHT ANTWORTEN!
|
||||
CHAN_SENDPASS_LINE_5
|
||||
%s, die Administration.
|
||||
CHAN_SENDPASS_OK
|
||||
Passwort von %s wurde per eMail versandt.
|
||||
|
||||
# FORBID responses
|
||||
CHAN_FORBID_SYNTAX
|
||||
FORBID Channel [Grund]
|
||||
@@ -2139,6 +2163,8 @@ BOT_UNASSIGN_SYNTAX
|
||||
UNASSIGN channel
|
||||
BOT_UNASSIGN_UNASSIGNED
|
||||
Der Bot von %s wurde entfernt.
|
||||
BOT_UNASSIGN_PERSISTANT_CHAN
|
||||
You can not unassign bots while persist is set on the channel.
|
||||
|
||||
# INFO responses
|
||||
BOT_INFO_SYNTAX
|
||||
@@ -2937,8 +2963,6 @@ OPER_DEFCON_SYNTAX
|
||||
DEFCON [1|2|3|4|5]
|
||||
OPER_DEFCON_DENIED
|
||||
Dieser Service ist derzeit deaktiviert, bitte versuche es später nochmal
|
||||
OPER_DEFCON_NO_CONF
|
||||
Das Defcon-System muss in der services.conf aktiviert worden sein
|
||||
OPER_DEFCON_CHANGED
|
||||
Services sind jetzt beim DEFCON %d
|
||||
OPER_DEFCON_WALL
|
||||
@@ -2958,6 +2982,10 @@ OPER_MODULE_REMOVE_FAIL
|
||||
Kann Modul %s nicht entfernen
|
||||
OPER_MODULE_NO_UNLOAD
|
||||
Modul KANN NICHT entfernt werden.
|
||||
OPER_MODULE_ALREADY_LOADED
|
||||
Module %s is already loaded.
|
||||
OPER_MODULE_ISNT_LOADED
|
||||
Module %s isn't loaded.
|
||||
OPER_MODULE_LOAD_SYNTAX
|
||||
MODLOAD Modul-Name
|
||||
OPER_MODULE_UNLOAD_SYNTAX
|
||||
@@ -3354,6 +3382,8 @@ NICK_HELP_CMD_RELEASE
|
||||
verwendung des RECOVER Befehls
|
||||
NICK_HELP_CMD_SENDPASS
|
||||
SENDPASS Passwort vergessen? Versuch das hier.
|
||||
NICK_HELP_CMD_RESETPASS
|
||||
RESETPASS Helps you reset lost passwords
|
||||
NICK_HELP_CMD_GHOST
|
||||
GHOST Trennt eine "ghost" IRC-Verbindung mit deinen Nicknamen
|
||||
NICK_HELP_CMD_ALIST
|
||||
@@ -3926,7 +3956,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
|
||||
@@ -4027,6 +4057,12 @@ NICK_HELP_SENDPASS
|
||||
Kann in manchen Netzen auf IRC Operatoren begrenzt
|
||||
sein.
|
||||
|
||||
NICK_HELP_RESETPASS
|
||||
Syntax: RESETPASS nickname
|
||||
|
||||
Sends a code key to the nickname with instructions on how to
|
||||
reset their password.
|
||||
|
||||
NICK_HELP_CONFIRM
|
||||
Syntax: CONFIRM passcode
|
||||
|
||||
@@ -4037,6 +4073,14 @@ NICK_HELP_CONFIRM
|
||||
Registrationsprozesses. Für mehr Informationen über die erste
|
||||
Stufe des Registrationsprozesses tippe: %R%S HELP REGISTER
|
||||
|
||||
This is also used after the RESETPASS command has been used to
|
||||
force identify you to your nick so you may change your password.
|
||||
|
||||
NICK_HELP_CONFIRM_OPER
|
||||
|
||||
Additionally, Services Operators with the nickserv/confirm permission can
|
||||
replace passcode with a users nick to force validate them.
|
||||
|
||||
NICK_HELP_RESEND
|
||||
Syntax: RESEND
|
||||
|
||||
@@ -4195,12 +4239,11 @@ CHAN_HELP_CMD_STATUS
|
||||
in dem Channel
|
||||
CHAN_HELP_CMD_REGISTER
|
||||
REGISTER Einen Channel registrieren
|
||||
CHAN_HELP_CMD_IDENTIFY
|
||||
IDENTIFY Sich mit Passwort als Founder (z.B.)
|
||||
des Channels identifizieren
|
||||
CHAN_HELP_CMD_SET
|
||||
SET Bestimmte Channel-Optionen und
|
||||
Informationen einstellen
|
||||
CHAN_HELP_CMD_QOP
|
||||
QOP Verwaltet die QOP-Liste von einem Channel
|
||||
CHAN_HELP_CMD_AOP
|
||||
AOP Verwaltet die AOP-Liste von einen Channel
|
||||
CHAN_HELP_CMD_SOP
|
||||
@@ -4215,8 +4258,6 @@ CHAN_HELP_CMD_AKICK
|
||||
AKICK Die Autokick-Liste bearbeiten
|
||||
CHAN_HELP_CMD_DROP
|
||||
DROP Registrierung eines Channels aufheben
|
||||
CHAN_HELP_CMD_SENDPASS
|
||||
SENDPASS Hilft bei vergessenen Passwörtern
|
||||
CHAN_HELP_CMD_BAN
|
||||
BAN Bant den angegebenen Nicknamen aus einen Channel
|
||||
CHAN_HELP_CMD_CLEAR
|
||||
@@ -4234,14 +4275,12 @@ CHAN_HELP_CMD_KICK
|
||||
KICK Kickt den angegebenen Nicknamen aus einen Channel
|
||||
CHAN_HELP_CMD_LIST
|
||||
LIST Listet alle registrieten Channels des angegebene Muster
|
||||
CHAN_HELP_CMD_LOGOUT
|
||||
LOGOUT Das Befehl wir den angegegenen Nickname abmelden
|
||||
CHAN_HELP_CMD_OP
|
||||
OP Gibt den angegebenen Nicknamen Op-Status in einen 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 Remove all bans preventing a user from entering a channel
|
||||
CHAN_HELP_CMD_VOICE
|
||||
VOICE Gibt den angegebenen User Voice-Status in einen Channel
|
||||
CHAN_HELP_CMD_VOP
|
||||
@@ -4262,11 +4301,6 @@ CHAN_HELP_CMD_OWNER
|
||||
OWNER Gibt dir Gründer Staus in einen Channel
|
||||
CHAN_HELP_CMD_PROTECT
|
||||
PROTECT Schützt den angegebenen Nicknamen in einen Channel
|
||||
CHAN_HELP_CMD_ADMIN
|
||||
ADMIN Schützt den angegebenen Nicknamen in einen Channel
|
||||
CHAN_HELP_CMD_DEADMIN
|
||||
DEADMIN Entfernt den Schutz des angegebenen Nicknamens
|
||||
in einen Channel
|
||||
CHAN_HELP_CMD_DEOP
|
||||
DEOP Enfernt den OP-Status des angegebenen Nicknamens
|
||||
in einen Channel
|
||||
@@ -4288,49 +4322,26 @@ CHAN_HELP_EXPIRES
|
||||
genutzt wird,automatisch auslaufen wird.
|
||||
|
||||
CHAN_HELP_REGISTER
|
||||
Syntax: REGISTER Channel Password Beschreibung
|
||||
Syntax: REGISTER Channel Beschreibung
|
||||
|
||||
Registriert einen Channel in der Datenbank von %S.
|
||||
Wenn du dieses Befehl nutzen möchtest, musst du
|
||||
Operator-Status in dem Channel besitzen. Das
|
||||
Passwort, dass du mit dem IDENTIFY Befehl
|
||||
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.
|
||||
|
||||
Wenn du einen Channel registrierst, wird dein Nickname
|
||||
als Founder (Gründer) eingetragen. Der Channel-Founder
|
||||
kann alle Einstellungen des Channels bearbeiten, und
|
||||
wird automatisch beim Joinen des Channels durch %S mit
|
||||
Founder/Operator Privilegien ausgestattet. Mit Hilfe
|
||||
des ACCESS Befehls (%R%S HELP ACCESS) kann man
|
||||
einen Teil dieser Privilegien anderen registrierten
|
||||
Nicknamen ebenfalls erteilen.
|
||||
|
||||
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
|
||||
um weitere Informationen darüber zu erhalten.
|
||||
Registers a channel in the %S database. In order
|
||||
to use this command, you must first be a channel operator
|
||||
on the channel you're trying to register.
|
||||
The description, which must be included, is a
|
||||
general description of the channel's purpose.
|
||||
|
||||
CHAN_HELP_IDENTIFY
|
||||
Syntax: IDENTIFY Channel Passwort
|
||||
|
||||
Identifiziert ein Nickname gegenüber %S als
|
||||
Gründer (Founder) 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
|
||||
Channels zu erhalten.
|
||||
|
||||
CHAN_HELP_LOGOUT
|
||||
Syntax: LOGOUT Channel Nickname
|
||||
|
||||
Hebt die Identifizierung als Channel-Founder für
|
||||
den angegebenen Channel wieder auf.
|
||||
|
||||
Wenn du der Channel-Founder bist, kannst du jeden
|
||||
ausloggen, jeder andere nur sich selbst.
|
||||
When you register a channel, you are recorded as the
|
||||
"founder" of the channel. The channel founder is allowed
|
||||
to change all of the channel settings for the channel;
|
||||
%S will also automatically give the founder
|
||||
channel-operator privileges when s/he enters the channel.
|
||||
See the ACCESS command (%R%S HELP ACCESS) for
|
||||
information on giving a subset of these privileges to
|
||||
other channel users.
|
||||
|
||||
NOTICE: In order to register a channel, you must have
|
||||
first registered your nickname. If you haven't,
|
||||
%R%s HELP for information on how to do so.
|
||||
|
||||
CHAN_HELP_DROP
|
||||
Syntax: DROP Channel
|
||||
@@ -4348,7 +4359,6 @@ CHAN_HELP_SET
|
||||
|
||||
FOUNDER Stellt den Gründer des Channels ein
|
||||
SUCCESSOR Stellt den Vertreter des Founders ein
|
||||
PASSWORD Ändert das Passwort des Channel-Founders
|
||||
DESC Ändert die Channel-Beschreibung
|
||||
URL Verbindet eine URL mit dem Channel
|
||||
EMAIL Verbindet eine eMail-Adresse mit dem
|
||||
@@ -4372,6 +4382,7 @@ CHAN_HELP_SET
|
||||
OPNOTICE Sendet eine Notice wenn Op/Deop-Befehl
|
||||
benutzt werden
|
||||
XOP Schaltet das Listen System ein oder aus
|
||||
PERSIST Set the channel as permanent
|
||||
|
||||
Tippe %R%S HELP Option für weitere Informationen
|
||||
zu einem bestimmten Befehl.
|
||||
@@ -4394,12 +4405,6 @@ CHAN_HELP_SET_SUCCESSOR
|
||||
|
||||
Der Nickname des Vertreters muss registriert sein.
|
||||
|
||||
CHAN_HELP_SET_PASSWORD
|
||||
Syntax: SET Channel PASSWORD Passwort
|
||||
|
||||
Ändert das Passwort, dass dich als Founder (Gründer)
|
||||
des Channels identifiziert.
|
||||
|
||||
CHAN_HELP_SET_DESC
|
||||
Syntax: SET Channel DESC Beschreibung
|
||||
|
||||
@@ -4585,6 +4590,29 @@ CHAN_HELP_SET_XOP
|
||||
Der Wechsel vom xOP System zum Access System fuktioniert
|
||||
jedoch fehlerfrei.
|
||||
|
||||
CHAN_HELP_SET_PERSIST
|
||||
Syntax: SET channel PERSIST {ON | OFF}
|
||||
|
||||
Enables or disables the persistant channel setting.
|
||||
When persistant is set, the service bot will remain
|
||||
in the channel when it has emptied of users.
|
||||
|
||||
If your IRCd does not a permanent (persistant) channel
|
||||
mode you must have a service bot in your channel to
|
||||
set persist on, and it can not be unassigned while persist
|
||||
is on.
|
||||
|
||||
If this network does not have BotServ enabled and does
|
||||
not have a permanent channel mode, ChanServ will
|
||||
join your channel when you set persist on (and leave when
|
||||
it has been set off).
|
||||
|
||||
If your IRCd has a permanent (persistant) channel mode
|
||||
and is is set or unset (for any reason, including MLOCK),
|
||||
persist is automatically set and unset for the channel aswell.
|
||||
Additionally, services will set or unset this mode when you
|
||||
set persist on or off.
|
||||
|
||||
CHAN_HELP_SET_OPNOTICE
|
||||
Syntax: SET Channel OPNOTICE {ON | OFF}
|
||||
|
||||
@@ -4594,6 +4622,45 @@ CHAN_HELP_SET_OPNOTICE
|
||||
Notice an den Channel wenn OP oder DEOP Befehle
|
||||
benutzt werden.
|
||||
|
||||
CHAN_HELP_QOP
|
||||
Syntax: QOP channel ADD nick
|
||||
QOP channel DEL {nick | entry-num | list}
|
||||
QOP channel LIST [mask | list]
|
||||
QOP channel CLEAR
|
||||
|
||||
Maintains the QOP (AutoOwner) list for a channel. The QOP
|
||||
list gives users the right to be auto-owner on your channel,
|
||||
which gives them almost (or potentially, total) access.
|
||||
|
||||
The QOP ADD command adds the given nickname to the
|
||||
QOP list.
|
||||
|
||||
The QOP DEL command removes the given nick from the
|
||||
QOP list. If a list of entry numbers is given, those
|
||||
entries are deleted. (See the example for LIST below.)
|
||||
|
||||
The QOP LIST command displays the QOP list. If
|
||||
a wildcard mask is given, only those entries matching the
|
||||
mask are displayed. If a list of entry numbers is given,
|
||||
only those entries are shown; for example:
|
||||
|
||||
QOP #channel LIST 2-5,7-9
|
||||
Lists QOP entries numbered 2 through 5 and
|
||||
7 through 9.
|
||||
|
||||
The QOP CLEAR command clears all entries of the
|
||||
QOP list.
|
||||
|
||||
The QOP commands are limited to
|
||||
founders (unless SECUREOPS is off). However, any user on the
|
||||
QOP list may use the QOP LIST command.
|
||||
|
||||
This command may have been disabled for your channel, and
|
||||
in that case you need to use the access list. See
|
||||
%R%S HELP ACCESS for information about the access list,
|
||||
and %R%S HELP SET XOP to know how to toggle between
|
||||
the access list and xOP list systems.
|
||||
|
||||
CHAN_HELP_AOP
|
||||
Syntax: AOP Channel ADD Nickname
|
||||
AOP Channel DEL {Nickname | entry-num | Liste}
|
||||
@@ -4751,6 +4818,7 @@ CHAN_HELP_ACCESS
|
||||
Syntax: ACCESS Channel ADD Nickname Level
|
||||
ACCESS Channel DEL {Nickname | entry-num | Liste}
|
||||
ACCESS Channel LIST [Maske | Liste]
|
||||
ACCESS Channel VIEW [Maske | Liste]
|
||||
ACCESS Channel CLEAR
|
||||
|
||||
Verwaltet die Zugriffsliste für einen Channel. Diese
|
||||
@@ -4786,6 +4854,9 @@ CHAN_HELP_ACCESS
|
||||
Zeigt Einträge mit den Nummern 2 bis 5 und
|
||||
7 bis 9 an.
|
||||
|
||||
The ACCESS VIEW command displays the access list similar
|
||||
to ACCESS LIST but shows the creator and last used time.
|
||||
|
||||
Durch ACCESS CLEAR werden alle Einträge der
|
||||
Zugriffsliste entfernt.
|
||||
|
||||
@@ -4870,32 +4941,30 @@ CHAN_HELP_AKICK
|
||||
Der AutoKick-Liste.
|
||||
|
||||
CHAN_HELP_LEVELS
|
||||
Syntax: LEVELS channel SET Typ Level
|
||||
Syntax: LEVELS channel SET Typ [Level|FOUNDER]
|
||||
LEVELS channel {DIS | DISABLE} Typ
|
||||
LEVELS channel LIST
|
||||
LEVELS channel RESET
|
||||
|
||||
The LEVELS command allows fine control over the meaning of
|
||||
the numeric access levels used for channels. With this
|
||||
command, you can define the access level required for most
|
||||
of %S's functions. (The SET FOUNDER and this command
|
||||
are always restricted to the channel founder.)
|
||||
|
||||
Der LEVELS Befehl erlaubt eine feinere Regelung
|
||||
der Zugriffslevel eines Channels. Mit diesem Befehl
|
||||
kann man Zugriffslevel definieren, die die meisten
|
||||
Funktionen von %S abdecken. (SET FOUNDER und SET PASSWORD,
|
||||
genau wie dieser Befehl, sind beschränkt auf den Channel-
|
||||
Founder.)
|
||||
LEVELS SET allows the access level for a function or group of
|
||||
functions to be changed. LEVELS DISABLE (or DIS for short)
|
||||
disables an automatic feature or disallows access to a
|
||||
function by anyone, INCLUDING the founder (although, the founder
|
||||
can always reenable it).
|
||||
|
||||
LEVELS SET erlaubt einem Zugriffslevel eine Änderung seiner
|
||||
Funktion bzw Gruppe von Funktionen. LEVELS DISABLE (oder
|
||||
DIS als Abkürzung) deaktiviert eine automatische Funktion
|
||||
oder verweigert den Zugriff auf jeden anderen ausser den
|
||||
Channel-Founder.
|
||||
|
||||
Durch LEVELS LIST werden die aktuellen Levels und ihre
|
||||
Funktionen aufgelistet. LEVELS RESET setzt alle Level auf
|
||||
die Standardwerte eines neu erzeugten Channels zurück
|
||||
(siehe HELP ACCESS LEVELS).
|
||||
|
||||
Für eine Auflistung der Funktionen, die diese Parameter
|
||||
haben, siehe HELP LEVELS DESC.
|
||||
LEVELS LIST shows the current levels for each function or
|
||||
group of functions. LEVELS RESET resets the levels to the
|
||||
default levels of a newly-created channel (see
|
||||
HELP ACCESS LEVELS).
|
||||
|
||||
For a list of the features and functions whose levels can be
|
||||
set, see HELP LEVELS DESC.
|
||||
|
||||
CHAN_HELP_LEVELS_DESC
|
||||
Die folgenden Befehle/Funktionen werden unterstützt.
|
||||
@@ -5035,13 +5104,14 @@ CHAN_HELP_INVITE
|
||||
(oder INVITE) hat.
|
||||
|
||||
CHAN_HELP_UNBAN
|
||||
Syntax: UNBAN Channel
|
||||
Syntax: UNBAN Channel [nick]
|
||||
|
||||
Durch %S werden alle Bans entfernt, die dich am joinen
|
||||
des Channels hindern. Eine Vorraussetzung dafür ist
|
||||
allerdings, dass dein Level in dem Channel grösser als
|
||||
5 (oder UNBAN)ist.
|
||||
Tells %S to remove all bans preventing you or the given
|
||||
user from entering the given channel.
|
||||
|
||||
By default, limited to AOPs or those with level 5 and above
|
||||
on the channel.
|
||||
|
||||
CHAN_HELP_KICK
|
||||
Syntax: KICK Channel Nickname [Grund]
|
||||
|
||||
@@ -5097,39 +5167,12 @@ CHAN_HELP_GETKEY
|
||||
Syntax: GETKEY Channel
|
||||
|
||||
Liefert den Key des angegebenen Channels zurück.
|
||||
|
||||
CHAN_HELP_SENDPASS
|
||||
Syntax: SENDPASS Channel
|
||||
|
||||
Sendet das Passwort des angegebenen Channels an die
|
||||
eMail-Adresse, die dem Founder in der Datenbank
|
||||
assoziiert ist. Dieser Befehl ist sehr nützlich,
|
||||
wenn man mit dem Problem des vergessenen Passwortes
|
||||
konfrontiert wird.
|
||||
|
||||
Kann in einigen Netzen auf IRC Operatoren beschränkt
|
||||
sein.
|
||||
|
||||
CHAN_SERVADMIN_HELP
|
||||
|
||||
Services Administratoren können weiterhin beliebige Channels
|
||||
DROPEN (löschen), Zugriffslisten oder Channel-Einstellungen
|
||||
ansehen ohne sich vorher für den Channel identifizieren zu müssen.
|
||||
|
||||
CHAN_SERVADMIN_HELP_LOGOUT
|
||||
Syntax: LOGOUT Channel [Nickname]
|
||||
|
||||
Durch dieser Befehl wird dich ChanServ nicht mehr als
|
||||
identifiziert für den angegebenen Channel betrachten.
|
||||
|
||||
Wenn du der Founder (Gründer) dieses Channels bist, kannst
|
||||
du jeden ausloggen, ansonsten nur dich selbst.
|
||||
|
||||
Bist du ein Services Administrator, kannst du jeden des
|
||||
angegebenen Channels ausloggen, ohne Founder-Rechte
|
||||
des Channels zu besitzen. Weiterhin musst du den
|
||||
Parameter Nickname nicht unbedingt angeben, dies hat zur
|
||||
Folge, dass jeder Nickname aus dem Channel ausgeloggt wird.
|
||||
|
||||
CHAN_SERVADMIN_HELP_DROP
|
||||
Syntax: DROP Channel
|
||||
@@ -5161,8 +5204,8 @@ CHAN_SERVADMIN_HELP_SET_NOEXPIRE
|
||||
|
||||
CHAN_SERVADMIN_HELP_INFO
|
||||
|
||||
Services Administratoren können den ALL Parameter bei jedem
|
||||
Channel benutzen.
|
||||
Services Operators with the chanserv/auspex permission can
|
||||
use the ALL parameter with any channel.
|
||||
|
||||
CHAN_SERVADMIN_HELP_LIST
|
||||
Syntax: LIST Muster [FORBIDDEN] [NOEXPIRE]
|
||||
@@ -6599,3 +6642,16 @@ OPER_UMODE_UNSUPPORTED
|
||||
|
||||
OPER_SUPER_ADMIN_NOT_ENABLED
|
||||
SuperAdmin muss in der services.conf eingeschaltet werden.
|
||||
|
||||
OPER_HELP_SYNC
|
||||
Syntax: SQLSYNC
|
||||
|
||||
This command syncs your databases with SQL. You should
|
||||
only have to execute this command once, when you initially
|
||||
import your databases into SQL.
|
||||
OPER_HELP_CMD_SQLSYNC
|
||||
SQLSYNC Import your databases to SQL
|
||||
OPER_SYNC_UPDATING
|
||||
Updating MySQL.
|
||||
OPER_SYNC_UPDATED
|
||||
Finished updating MySQL.
|
||||
|
||||
+225
-163
@@ -1,6 +1,6 @@
|
||||
# United States English language file.
|
||||
#
|
||||
# (C) 2003-2008 Anope Team
|
||||
# (C) 2003-2010 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Please read COPYING and README for further details.
|
||||
@@ -857,6 +857,23 @@ NICK_SENDPASS_LINE_5
|
||||
NICK_SENDPASS_OK
|
||||
Password of %s has been sent.
|
||||
|
||||
# RESETPASS responses
|
||||
NICK_RESETPASS_SYNTAX
|
||||
RESETPASS nickname
|
||||
NICK_RESETPASS_SUBJECT
|
||||
Reset password request for %s
|
||||
NICK_RESETPASS_MESSAGE
|
||||
Hi,
|
||||
|
||||
You have requested to have the password for %s reset.
|
||||
To reset your password, type %R%s CONFIRM %s
|
||||
If you don't know why this mail is sent to you, please ignore it silently.
|
||||
PLEASE DON'T ANSWER TO THIS MAIL!
|
||||
|
||||
%s administrators.
|
||||
NICK_RESETPASS_COMPLETE
|
||||
Password reset email for %s has been sent.
|
||||
|
||||
# SUSPEND responses
|
||||
NICK_SUSPEND_SYNTAX
|
||||
SUSPEND nickname reason
|
||||
@@ -894,10 +911,6 @@ NICK_IS_PREREG
|
||||
This nick is awaiting an e-mail verification code before completing registration.
|
||||
NICK_ENTER_REG_CODE
|
||||
A passcode has been sent to %s, please type %R%s confirm <passcode> to complete registration
|
||||
NICK_CONFIRM_NOT_FOUND
|
||||
Registration step 1 may have expired, please use "%R%s register <password> <email>" first.
|
||||
NICK_CONFIRM_INVALID
|
||||
Invalid passcode has been entered, please check the e-mail again, and retry
|
||||
NICK_REG_MAIL_SUBJECT
|
||||
Nickname Registration (%s)
|
||||
NICK_REG_MAIL_HEAD
|
||||
@@ -917,6 +930,15 @@ NICK_GETPASS_PASSCODE_IS
|
||||
NICK_FORCE_REG
|
||||
Nickname %s confirmed
|
||||
|
||||
# Confirm responses
|
||||
NICK_CONFIRM_NOT_FOUND
|
||||
Registration step 1 may have expired, please use "%R%s register <password> <email>" first.
|
||||
NICK_CONFIRM_INVALID
|
||||
Invalid passcode has been entered, please check the e-mail again, and retry
|
||||
NICK_CONFIRM_EXPIRED
|
||||
Your password reset request has expired.
|
||||
NICK_CONFIRM_SUCCESS
|
||||
You are now identified for your nick. Change your password using "%R%s SET PASSWORD newpassword" now.
|
||||
|
||||
|
||||
###########################################################################
|
||||
@@ -998,6 +1020,12 @@ CHAN_LEVEL_TOPIC
|
||||
Allowed to use TOPIC command
|
||||
CHAN_LEVEL_INFO
|
||||
Allowed to use INFO command with ALL option
|
||||
CHAN_LEVEL_AUTOOWNER
|
||||
Automatic mode +q
|
||||
CHAN_LEVEL_OWNER
|
||||
Allowed to use OWNER command
|
||||
CHAN_LEVEL_OWNERME
|
||||
Allowed to (de)owner him/herself
|
||||
|
||||
# Automatic responses
|
||||
CHAN_IS_REGISTERED
|
||||
@@ -1013,7 +1041,7 @@ CHAN_X_INVALID
|
||||
|
||||
# REGISTER responses
|
||||
CHAN_REGISTER_SYNTAX
|
||||
REGISTER channel password description
|
||||
REGISTER channel description
|
||||
CHAN_REGISTER_DISABLED
|
||||
Sorry, channel registration is temporarily disabled.
|
||||
CHAN_REGISTER_NOT_LOCAL
|
||||
@@ -1032,37 +1060,11 @@ CHAN_REGISTRATION_FAILED
|
||||
Sorry, registration failed.
|
||||
CHAN_REGISTERED
|
||||
Channel %s registered under your nickname: %s
|
||||
CHAN_PASSWORD_IS
|
||||
Your channel password is %s - remember it for later use.
|
||||
CHAN_REGISTER_NONE_CHANNEL
|
||||
You have attempted to register a nonexistent channel %s
|
||||
CHAN_SYMBOL_REQUIRED
|
||||
Please use the symbol of # when attempting to register
|
||||
|
||||
|
||||
# IDENTIFY responses
|
||||
CHAN_IDENTIFY_SYNTAX
|
||||
IDENTIFY channel password
|
||||
CHAN_IDENTIFY_FAILED
|
||||
Sorry, identification failed.
|
||||
CHAN_IDENTIFY_SUCCEEDED
|
||||
Password accepted - you now have founder-level access to %s.
|
||||
|
||||
# LOGOUT responses
|
||||
CHAN_LOGOUT_SYNTAX
|
||||
LOGOUT channel nickname
|
||||
CHAN_LOGOUT_SERVADMIN_SYNTAX
|
||||
LOGOUT channel [nickname]
|
||||
CHAN_LOGOUT_SUCCEEDED
|
||||
User %s has been logged out of channel %s.
|
||||
CHAN_LOGOUT_ALL_SUCCEEDED
|
||||
All users identified have been logged out of channel %s (except the channel founder).
|
||||
CHAN_LOGOUT_FOUNDER_FAILED
|
||||
You may not log out of %s (you are founder).
|
||||
CHAN_LOGOUT_NOT_LOGGEDIN
|
||||
%s was not logged into %s.
|
||||
|
||||
|
||||
# DROP responses
|
||||
CHAN_DROP_SYNTAX
|
||||
DROP channel
|
||||
@@ -1093,14 +1095,6 @@ CHAN_SUCCESSOR_UNSET
|
||||
CHAN_SUCCESSOR_IS_FOUNDER
|
||||
%s cannot be the successor on channel %s because he is its founder.
|
||||
|
||||
# SET PASSWORD responses
|
||||
CHAN_SET_PASSWORD_FAILED
|
||||
Sorry, couldn't set password.
|
||||
CHAN_PASSWORD_CHANGED
|
||||
%s password changed.
|
||||
CHAN_PASSWORD_CHANGED_TO
|
||||
%s password changed to %s.
|
||||
|
||||
# SET DESC responses
|
||||
CHAN_DESC_CHANGED
|
||||
Description of %s changed to %s.
|
||||
@@ -1232,6 +1226,14 @@ CHAN_SET_XOP_ON
|
||||
CHAN_SET_XOP_OFF
|
||||
xOP lists system for %s is now OFF.
|
||||
|
||||
# SET PERSISTANT responces
|
||||
CHAN_SET_PERSIST_SYNTAX
|
||||
SET channel PERSIST {ON | OFF}
|
||||
CHAN_SET_PERSIST_ON
|
||||
Channel %s is now persistant.
|
||||
CHAN_SET_PERSIST_OFF
|
||||
Channel %s is no longer persistant.
|
||||
|
||||
# SET NOEXPIRE responses
|
||||
CHAN_SET_NOEXPIRE_SYNTAX
|
||||
SET channel NOEXPIRE {ON | OFF}
|
||||
@@ -1251,6 +1253,37 @@ CHAN_XOP_ACCESS
|
||||
CHAN_XOP_NOT_AVAILABLE
|
||||
xOP system is not available.
|
||||
|
||||
# QOP messages
|
||||
CHAN_QOP_SYNTAX
|
||||
QOP channel {ADD|DEL|LIST|CLEAR} [nick | entry-list]
|
||||
CHAN_QOP_DISABLED
|
||||
Sorry, channel QOP list modification is temporarily disabled.
|
||||
CHAN_QOP_NICKS_ONLY
|
||||
Channel QOP lists may only contain registered nicknames.
|
||||
CHAN_QOP_ADDED
|
||||
%s added to %s QOP list.
|
||||
CHAN_QOP_MOVED
|
||||
%s moved to %s QOP list.
|
||||
CHAN_QOP_NO_SUCH_ENTRY
|
||||
No such entry (#%d) on %s QOP list.
|
||||
CHAN_QOP_NOT_FOUND
|
||||
%s not found on %s QOP list.
|
||||
CHAN_QOP_NO_MATCH
|
||||
No matching entries on %s QOP list.
|
||||
CHAN_QOP_DELETED
|
||||
%s deleted from %s QOP list.
|
||||
CHAN_QOP_DELETED_ONE
|
||||
Deleted 1 entry from %s QOP list.
|
||||
CHAN_QOP_DELETED_SEVERAL
|
||||
Deleted %d entries from %s QOP list.
|
||||
CHAN_QOP_LIST_EMPTY
|
||||
%s QOP list is empty.
|
||||
CHAN_QOP_LIST_HEADER
|
||||
QOP list for %s:
|
||||
Num Nick
|
||||
CHAN_QOP_CLEAR
|
||||
Channel %s QOP list has been cleared.
|
||||
|
||||
# AOP messages
|
||||
CHAN_AOP_SYNTAX
|
||||
AOP channel {ADD|DEL|LIST|CLEAR} [nick | entry-list]
|
||||
@@ -1377,7 +1410,7 @@ CHAN_VOP_CLEAR
|
||||
|
||||
# ACCESS messages
|
||||
CHAN_ACCESS_SYNTAX
|
||||
ACCESS channel {ADD|DEL|LIST|CLEAR} [nick [level] | entry-list]
|
||||
ACCESS channel {ADD|DEL|LIST|VIEW|CLEAR} [nick [level] | entry-list]
|
||||
CHAN_ACCESS_XOP
|
||||
You can't use this command.
|
||||
Use the AOP, SOP and VOP commands instead.
|
||||
@@ -1427,6 +1460,12 @@ CHAN_ACCESS_LIST_AXS_FORMAT
|
||||
%3d %4d %s
|
||||
CHAN_ACCESS_CLEAR
|
||||
Channel %s access list has been cleared.
|
||||
CHAN_ACCESS_VIEW_XOP_FORMAT
|
||||
%3d %s %s
|
||||
by %s, last seen %s
|
||||
CHAN_ACCESS_VIEW_AXS_FORMAT
|
||||
%3d %4d %s
|
||||
by %s, last seen %s
|
||||
|
||||
# AKICK responses
|
||||
CHAN_AKICK_SYNTAX
|
||||
@@ -1467,6 +1506,8 @@ CHAN_AKICK_VIEW_FORMAT
|
||||
CHAN_AKICK_VIEW_FORMAT_STUCK
|
||||
%3d %s (stuck) (by %s on %s)
|
||||
%s
|
||||
CHAN_AKICK_LAST_USED
|
||||
Last used %s
|
||||
CHAN_AKICK_ENFORCE_DONE
|
||||
AKICK ENFORCE for %s complete; %d users were affected.
|
||||
CHAN_AKICK_CLEAR
|
||||
@@ -1481,6 +1522,8 @@ CHAN_LEVELS_RANGE
|
||||
Level must be between %d and %d inclusive.
|
||||
CHAN_LEVELS_CHANGED
|
||||
Level for %s on channel %s changed to %d.
|
||||
CHAN_LEVELS_CHANGED_FOUNDER
|
||||
Level for %s on channel %s changed to founder only.
|
||||
CHAN_LEVELS_UNKNOWN
|
||||
Setting %s not known. Type %R%s HELP LEVELS DESC for a list of valid settings.
|
||||
CHAN_LEVELS_DISABLED
|
||||
@@ -1563,6 +1606,8 @@ CHAN_INFO_OPT_TOPICLOCK
|
||||
Topic Lock
|
||||
CHAN_INFO_OPT_XOP
|
||||
xOP lists system
|
||||
CHAN_INFO_OPT_PERSIST
|
||||
Persistant
|
||||
CHAN_INFO_OPT_NONE
|
||||
None
|
||||
CHAN_INFO_MODE_LOCK
|
||||
@@ -1591,13 +1636,16 @@ CHAN_INVITE_ALREADY_IN
|
||||
You are already in %s!
|
||||
CHAN_INVITE_SUCCESS
|
||||
You have been invited to %s.
|
||||
|
||||
CHAN_INVITE_OTHER_SUCCESS
|
||||
%s has been invited to %s.
|
||||
|
||||
# UNBAN responses
|
||||
CHAN_UNBAN_SYNTAX
|
||||
UNBAN channel
|
||||
UNBAN channel [nick]
|
||||
CHAN_UNBANNED
|
||||
You have been unbanned from %s.
|
||||
CHAN_UNBANNED_OTHER
|
||||
%s has been unbanned from %s.
|
||||
|
||||
# TOPIC responses
|
||||
CHAN_TOPIC_SYNTAX
|
||||
@@ -1623,14 +1671,6 @@ CHAN_CLEARED_USERS
|
||||
CHAN_CLEARED_INVITES
|
||||
All invites on channel %s have been removed.
|
||||
|
||||
# GETPASS responses
|
||||
CHAN_GETPASS_SYNTAX
|
||||
GETPASS channel
|
||||
CHAN_GETPASS_UNAVAILABLE
|
||||
GETPASS command unavailable because encryption is in use.
|
||||
CHAN_GETPASS_PASSWORD_IS
|
||||
Password for channel %s is %s.
|
||||
|
||||
# GETKEY responses
|
||||
CHAN_GETKEY_SYNTAX
|
||||
GETKEY channel
|
||||
@@ -1639,28 +1679,6 @@ CHAN_GETKEY_NOKEY
|
||||
CHAN_GETKEY_KEY
|
||||
Key for channel %s is %s.
|
||||
|
||||
# SENDPASS responses
|
||||
CHAN_SENDPASS_SYNTAX
|
||||
SENDPASS channel
|
||||
CHAN_SENDPASS_UNAVAILABLE
|
||||
SENDPASS command unavailable because encryption is in use.
|
||||
CHAN_SENDPASS_SUBJECT
|
||||
Channel password (%s)
|
||||
CHAN_SENDPASS_HEAD
|
||||
Hi,
|
||||
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.
|
||||
CHAN_SENDPASS_LINE_3
|
||||
If you don't know why this mail is sent to you, please ignore it silently.
|
||||
CHAN_SENDPASS_LINE_4
|
||||
PLEASE DON'T ANSWER TO THIS MAIL!
|
||||
CHAN_SENDPASS_LINE_5
|
||||
%s administrators.
|
||||
CHAN_SENDPASS_OK
|
||||
Password of %s has been sent.
|
||||
|
||||
# FORBID responses
|
||||
CHAN_FORBID_SYNTAX
|
||||
FORBID channel [reason]
|
||||
@@ -2099,7 +2117,9 @@ BOT_UNASSIGN_SYNTAX
|
||||
UNASSIGN chan
|
||||
BOT_UNASSIGN_UNASSIGNED
|
||||
There is no bot assigned to %s anymore.
|
||||
|
||||
BOT_UNASSIGN_PERSISTANT_CHAN
|
||||
You can not unassign bots while persist is set on the channel.
|
||||
|
||||
# INFO responses
|
||||
BOT_INFO_SYNTAX
|
||||
INFO {chan | nick}
|
||||
@@ -2879,8 +2899,6 @@ OPER_DEFCON_SYNTAX
|
||||
DEFCON [1|2|3|4|5]
|
||||
OPER_DEFCON_DENIED
|
||||
Services are in Defcon mode, Please try again later.
|
||||
OPER_DEFCON_NO_CONF
|
||||
The Defcon system must be enabled in the services.conf file
|
||||
OPER_DEFCON_CHANGED
|
||||
Services are now at DEFCON %d
|
||||
OPER_DEFCON_WALL
|
||||
@@ -2900,6 +2918,10 @@ OPER_MODULE_REMOVE_FAIL
|
||||
Unable to remove module %s
|
||||
OPER_MODULE_NO_UNLOAD
|
||||
This module can not be unloaded.
|
||||
OPER_MODULE_ALREADY_LOADED
|
||||
Module %s is already loaded.
|
||||
OPER_MODULE_ISNT_LOADED
|
||||
Module %s isn't loaded.
|
||||
OPER_MODULE_LOAD_SYNTAX
|
||||
MODLOAD FileName
|
||||
OPER_MODULE_UNLOAD_SYNTAX
|
||||
@@ -3265,6 +3287,8 @@ NICK_HELP_CMD_RELEASE
|
||||
RELEASE Regain custody of your nick after RECOVER
|
||||
NICK_HELP_CMD_SENDPASS
|
||||
SENDPASS Forgot your password? Try this
|
||||
NICK_HELP_CMD_RESETPASS
|
||||
RESETPASS Helps you reset lost passwords
|
||||
NICK_HELP_CMD_GHOST
|
||||
GHOST Disconnects a "ghost" IRC session using your nick
|
||||
NICK_HELP_CMD_ALIST
|
||||
@@ -3862,6 +3886,12 @@ NICK_HELP_SENDPASS
|
||||
|
||||
May be limited to IRC operators on certain networks.
|
||||
|
||||
NICK_HELP_RESETPASS
|
||||
Syntax: RESETPASS nickname
|
||||
|
||||
Sends a code key to the nickname with instructions on how to
|
||||
reset their password.
|
||||
|
||||
NICK_HELP_CONFIRM
|
||||
Syntax: CONFIRM passcode
|
||||
|
||||
@@ -3871,6 +3901,14 @@ NICK_HELP_CONFIRM
|
||||
is sent to your e-mail address in the first step of the
|
||||
registration process. For more information about the first
|
||||
stage of the registration process, type: %R%S HELP REGISTER
|
||||
|
||||
This is also used after the RESETPASS command has been used to
|
||||
force identify you to your nick so you may change your password.
|
||||
|
||||
NICK_HELP_CONFIRM_OPER
|
||||
|
||||
Additionally, Services Operators with the nickserv/confirm permission can
|
||||
replace passcode with a users nick to force validate them.
|
||||
|
||||
NICK_HELP_RESEND
|
||||
Syntax: RESEND
|
||||
@@ -4015,10 +4053,10 @@ CHAN_HELP_CMD_STATUS
|
||||
on a channel
|
||||
CHAN_HELP_CMD_REGISTER
|
||||
REGISTER Register a channel
|
||||
CHAN_HELP_CMD_IDENTIFY
|
||||
IDENTIFY Identify yourself with your password
|
||||
CHAN_HELP_CMD_SET
|
||||
SET Set channel options and information
|
||||
CHAN_HELP_CMD_QOP
|
||||
QOP Modify the list of QOP users
|
||||
CHAN_HELP_CMD_AOP
|
||||
AOP Modify the list of AOP users
|
||||
CHAN_HELP_CMD_SOP
|
||||
@@ -4031,8 +4069,6 @@ CHAN_HELP_CMD_AKICK
|
||||
AKICK Maintain the AutoKick list
|
||||
CHAN_HELP_CMD_DROP
|
||||
DROP Cancel the registration of a channel
|
||||
CHAN_HELP_CMD_SENDPASS
|
||||
SENDPASS Help retrieve lost passwords
|
||||
CHAN_HELP_CMD_BAN
|
||||
BAN Bans a selected nick on a channel
|
||||
CHAN_HELP_CMD_CLEAR
|
||||
@@ -4049,14 +4085,12 @@ CHAN_HELP_CMD_KICK
|
||||
KICK Kicks a selected nick from a channel
|
||||
CHAN_HELP_CMD_LIST
|
||||
LIST Lists all registered channels matching the given pattern
|
||||
CHAN_HELP_CMD_LOGOUT
|
||||
LOGOUT This command will logout the selected nickname
|
||||
CHAN_HELP_CMD_OP
|
||||
OP Gives Op status to a selected nick on a channel
|
||||
CHAN_HELP_CMD_TOPIC
|
||||
TOPIC Manipulate the topic of the specified channel
|
||||
CHAN_HELP_CMD_UNBAN
|
||||
UNBAN Remove all bans preventing you from entering a channel
|
||||
UNBAN Remove all bans preventing a user from entering a channel
|
||||
CHAN_HELP_CMD_VOICE
|
||||
VOICE Voices a selected nick on a channel
|
||||
CHAN_HELP_CMD_VOP
|
||||
@@ -4075,10 +4109,6 @@ CHAN_HELP_CMD_OWNER
|
||||
OWNER Gives you owner status on channel
|
||||
CHAN_HELP_CMD_PROTECT
|
||||
PROTECT Protects a selected nick on a channel
|
||||
CHAN_HELP_CMD_ADMIN
|
||||
ADMIN Protects a selected nick on a channel
|
||||
CHAN_HELP_CMD_DEADMIN
|
||||
DEADMIN Deprotects a selected nick on a channel
|
||||
CHAN_HELP_CMD_DEOP
|
||||
DEOP Deops a selected nick on a channel
|
||||
|
||||
@@ -4099,14 +4129,12 @@ CHAN_HELP_EXPIRES
|
||||
for that period of time) will be automatically dropped.
|
||||
|
||||
CHAN_HELP_REGISTER
|
||||
Syntax: REGISTER channel password description
|
||||
Syntax: REGISTER channel description
|
||||
|
||||
Registers a channel in the %S database. In order
|
||||
to use this command, you must first be a channel operator
|
||||
on the channel you're trying to register. The password
|
||||
is used with the IDENTIFY command to allow others to
|
||||
make changes to the channel settings at a later time.
|
||||
The last parameter, which must be included, is a
|
||||
on the channel you're trying to register.
|
||||
The description, which must be included, is a
|
||||
general description of the channel's purpose.
|
||||
|
||||
When you register a channel, you are recorded as the
|
||||
@@ -4122,28 +4150,11 @@ CHAN_HELP_REGISTER
|
||||
first registered your nickname. If you haven't,
|
||||
%R%s HELP for information on how to do so.
|
||||
|
||||
CHAN_HELP_IDENTIFY
|
||||
Syntax: IDENTIFY channel password
|
||||
|
||||
Authenticates you to %S as the founder of the given
|
||||
channel. Many commands require you to use this command
|
||||
before using them. The password should be the same one
|
||||
you sent with the REGISTER command.
|
||||
|
||||
CHAN_HELP_LOGOUT
|
||||
Syntax: LOGOUT channel nickname
|
||||
|
||||
This command will log the selected nickname out meaning they
|
||||
would have to reidentify themselves to regain their access.
|
||||
|
||||
If you are the founder of the channel, you can log out anybody,
|
||||
else you can only log out yourself.
|
||||
|
||||
CHAN_HELP_DROP
|
||||
Syntax: DROP channel
|
||||
|
||||
Unregisters the named channel. Can only be used by
|
||||
channel founder, who must use the IDENTIFY command first.
|
||||
channel founder.
|
||||
|
||||
CHAN_HELP_SET
|
||||
Syntax: SET channel option parameters
|
||||
@@ -4155,7 +4166,6 @@ CHAN_HELP_SET
|
||||
|
||||
FOUNDER Set the founder of a channel
|
||||
SUCCESSOR Set the successor for a channel
|
||||
PASSWORD Set the founder password
|
||||
DESC Set the channel description
|
||||
URL Associate a URL with the channel
|
||||
EMAIL Associate an E-mail address with the channel
|
||||
@@ -4174,6 +4184,7 @@ CHAN_HELP_SET
|
||||
SIGNKICK Sign kicks that are done with KICK command
|
||||
TOPICLOCK Topic can only be changed with TOPIC
|
||||
XOP Toggle the user privilege system
|
||||
PERSIST Set the channel as permanent
|
||||
|
||||
Type %R%S HELP SET option for more information on a
|
||||
particular option.
|
||||
@@ -4195,12 +4206,6 @@ CHAN_HELP_SET_SUCCESSOR
|
||||
instead, just as if no successor had been set. The new
|
||||
nickname must be a registered one.
|
||||
|
||||
CHAN_HELP_SET_PASSWORD
|
||||
Syntax: SET channel PASSWORD password
|
||||
|
||||
Sets the password used to identify as the founder of the
|
||||
channel.
|
||||
|
||||
CHAN_HELP_SET_DESC
|
||||
Syntax: SET channel DESC description
|
||||
|
||||
@@ -4299,8 +4304,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
|
||||
@@ -4375,6 +4380,29 @@ CHAN_HELP_SET_XOP
|
||||
Switching from xOP lists system to access list system
|
||||
causes no problem though.
|
||||
|
||||
CHAN_HELP_SET_PERSIST
|
||||
Syntax: SET channel PERSIST {ON | OFF}
|
||||
|
||||
Enables or disables the persistant channel setting.
|
||||
When persistant is set, the service bot will remain
|
||||
in the channel when it has emptied of users.
|
||||
|
||||
If your IRCd does not a permanent (persistant) channel
|
||||
mode you must have a service bot in your channel to
|
||||
set persist on, and it can not be unassigned while persist
|
||||
is on.
|
||||
|
||||
If this network does not have BotServ enabled and does
|
||||
not have a permanent channel mode, ChanServ will
|
||||
join your channel when you set persist on (and leave when
|
||||
it has been set off).
|
||||
|
||||
If your IRCd has a permanent (persistant) channel mode
|
||||
and is is set or unset (for any reason, including MLOCK),
|
||||
persist is automatically set and unset for the channel aswell.
|
||||
Additionally, services will set or unset this mode when you
|
||||
set persist on or off.
|
||||
|
||||
CHAN_HELP_SET_OPNOTICE
|
||||
Syntax: SET channel OPNOTICE {ON | OFF}
|
||||
|
||||
@@ -4383,6 +4411,45 @@ CHAN_HELP_SET_OPNOTICE
|
||||
channel whenever the OP or DEOP commands are used for a user
|
||||
in the channel.
|
||||
|
||||
CHAN_HELP_QOP
|
||||
Syntax: QOP channel ADD nick
|
||||
QOP channel DEL {nick | entry-num | list}
|
||||
QOP channel LIST [mask | list]
|
||||
QOP channel CLEAR
|
||||
|
||||
Maintains the QOP (AutoOwner) list for a channel. The QOP
|
||||
list gives users the right to be auto-owner on your channel,
|
||||
which gives them almost (or potentially, total) access.
|
||||
|
||||
The QOP ADD command adds the given nickname to the
|
||||
QOP list.
|
||||
|
||||
The QOP DEL command removes the given nick from the
|
||||
QOP list. If a list of entry numbers is given, those
|
||||
entries are deleted. (See the example for LIST below.)
|
||||
|
||||
The QOP LIST command displays the QOP list. If
|
||||
a wildcard mask is given, only those entries matching the
|
||||
mask are displayed. If a list of entry numbers is given,
|
||||
only those entries are shown; for example:
|
||||
|
||||
QOP #channel LIST 2-5,7-9
|
||||
Lists QOP entries numbered 2 through 5 and
|
||||
7 through 9.
|
||||
|
||||
The QOP CLEAR command clears all entries of the
|
||||
QOP list.
|
||||
|
||||
The QOP commands are limited to
|
||||
founders (unless SECUREOPS is off). However, any user on the
|
||||
QOP list may use the QOP LIST command.
|
||||
|
||||
This command may have been disabled for your channel, and
|
||||
in that case you need to use the access list. See
|
||||
%R%S HELP ACCESS for information about the access list,
|
||||
and %R%S HELP SET XOP to know how to toggle between
|
||||
the access list and xOP list systems.
|
||||
|
||||
CHAN_HELP_AOP
|
||||
Syntax: AOP channel ADD nick
|
||||
AOP channel DEL {nick | entry-num | list}
|
||||
@@ -4546,6 +4613,7 @@ CHAN_HELP_ACCESS
|
||||
Syntax: ACCESS channel ADD nick level
|
||||
ACCESS channel DEL {nick | entry-num | list}
|
||||
ACCESS channel LIST [mask | list]
|
||||
ACCESS channel VIEW [mask | list]
|
||||
ACCESS channel CLEAR
|
||||
|
||||
Maintains the access list for a channel. The access
|
||||
@@ -4577,7 +4645,10 @@ CHAN_HELP_ACCESS
|
||||
ACCESS #channel LIST 2-5,7-9
|
||||
Lists access entries numbered 2 through 5 and
|
||||
7 through 9.
|
||||
|
||||
|
||||
The ACCESS VIEW command displays the access list similar
|
||||
to ACCESS LIST but shows the creator and last used time.
|
||||
|
||||
The ACCESS CLEAR command clears all entries of the
|
||||
access list.
|
||||
|
||||
@@ -4663,14 +4734,15 @@ CHAN_HELP_LEVELS
|
||||
The LEVELS command allows fine control over the meaning of
|
||||
the numeric access levels used for channels. With this
|
||||
command, you can define the access level required for most
|
||||
of %S's functions. (The SET FOUNDER and SET PASSWORD
|
||||
commands, as well as this command, are always restricted to
|
||||
the channel founder.)
|
||||
of %S's functions. (The SET FOUNDER and this command
|
||||
are always restricted to the channel founder.)
|
||||
|
||||
LEVELS SET allows the access level for a function or group of
|
||||
functions to be changed. LEVELS DISABLE (or DIS for short)
|
||||
disables an automatic feature or disallows access to a
|
||||
function by anyone other than the channel founder.
|
||||
function by anyone, INCLUDING the founder (although, the founder
|
||||
can always reenable it).
|
||||
|
||||
LEVELS LIST shows the current levels for each function or
|
||||
group of functions. LEVELS RESET resets the levels to the
|
||||
default levels of a newly-created channel (see
|
||||
@@ -4806,10 +4878,10 @@ CHAN_HELP_INVITE
|
||||
on the channel.
|
||||
|
||||
CHAN_HELP_UNBAN
|
||||
Syntax: UNBAN channel
|
||||
Syntax: UNBAN channel [nick]
|
||||
|
||||
Tells %S to remove all bans preventing you from
|
||||
entering the given channel.
|
||||
Tells %S to remove all bans preventing you or the given
|
||||
user from entering the given channel.
|
||||
|
||||
By default, limited to AOPs or those with level 5 and above
|
||||
on the channel.
|
||||
@@ -4870,35 +4942,12 @@ CHAN_HELP_GETKEY
|
||||
Syntax: GETKEY channel
|
||||
|
||||
Returns the key of the given channel.
|
||||
|
||||
CHAN_HELP_SENDPASS
|
||||
Syntax: SENDPASS channel
|
||||
|
||||
Send the password of the given channel to the e-mail address
|
||||
set in the founder's nickname record. This command is really
|
||||
useful to deal with lost passwords.
|
||||
|
||||
May be limited to IRC operators on certain networks.
|
||||
|
||||
CHAN_SERVADMIN_HELP
|
||||
|
||||
Services Operators can also drop any channel without needing
|
||||
to identify via password, and may view the access, AKICK,
|
||||
and level setting lists for any channel.
|
||||
|
||||
CHAN_SERVADMIN_HELP_LOGOUT
|
||||
Syntax: LOGOUT channel [nickname]
|
||||
|
||||
This command will log the selected nickname out meaning they
|
||||
would have to reidentify themselves to regain their access.
|
||||
|
||||
If you are the founder of the channel, you can log out anybody,
|
||||
else you can only log out yourself.
|
||||
|
||||
If you are a Services Operators, you can log out
|
||||
anybody of any channel without having to be the founder
|
||||
of the channel. Also, you can omit the nickname parameter;
|
||||
this will log out all identified users from the channel.
|
||||
|
||||
CHAN_SERVADMIN_HELP_DROP
|
||||
Syntax: DROP channel
|
||||
@@ -4921,7 +4970,8 @@ CHAN_SERVADMIN_HELP_SET_NOEXPIRE
|
||||
|
||||
CHAN_SERVADMIN_HELP_INFO
|
||||
|
||||
Services Operators can use the ALL parameter with any channel.
|
||||
Services Operators with the chanserv/auspex permission can
|
||||
use the ALL parameter with any channel.
|
||||
|
||||
CHAN_SERVADMIN_HELP_LIST
|
||||
Syntax: LIST pattern [FORBIDDEN] [SUSPENDED] [NOEXPIRE]
|
||||
@@ -5909,7 +5959,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.
|
||||
|
||||
@@ -5919,7 +5969,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.
|
||||
|
||||
@@ -5929,7 +5979,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.
|
||||
|
||||
@@ -5939,7 +5989,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.
|
||||
|
||||
@@ -5955,7 +6005,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.
|
||||
|
||||
@@ -5967,7 +6017,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.
|
||||
|
||||
@@ -5979,7 +6029,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.
|
||||
|
||||
@@ -5994,7 +6044,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.
|
||||
|
||||
@@ -6011,12 +6061,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
|
||||
@@ -6274,3 +6324,15 @@ OPER_UMODE_UNSUPPORTED
|
||||
OPER_SUPER_ADMIN_NOT_ENABLED
|
||||
SuperAdmin setting not enabled in services.conf
|
||||
|
||||
OPER_HELP_SYNC
|
||||
Syntax: SQLSYNC
|
||||
|
||||
This command syncs your databases with SQL. You should
|
||||
only have to execute this command once, when you initially
|
||||
import your databases into SQL.
|
||||
OPER_HELP_CMD_SQLSYNC
|
||||
SQLSYNC Import your databases to SQL
|
||||
OPER_SYNC_UPDATING
|
||||
Updating MySQL.
|
||||
OPER_SYNC_UPDATED
|
||||
Finished updating MySQL.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Spanish Language File.
|
||||
#
|
||||
# (C) 2003-2008 Anope Team
|
||||
# (C) 2003-2010 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Please read COPYING and README for furhter details.
|
||||
@@ -877,6 +877,24 @@ NICK_SENDPASS_LINE_5
|
||||
NICK_SENDPASS_OK
|
||||
La clave de %s ha sido enviada.
|
||||
|
||||
# RESERTPASS responses
|
||||
NICK_RESETPASS_SYNTAX
|
||||
RESETPASS nickname
|
||||
NICK_RESETPASS_SUBJECT
|
||||
Reset password request for %s
|
||||
NICK_RESETPASS_MESSAGE
|
||||
Hi,
|
||||
|
||||
You have requested to have the password for %s reset.
|
||||
To reset your password, type %R%s CONFIRM %s
|
||||
If you don't know why this mail is sent to you, please ignore it silently.
|
||||
|
||||
PLEASE DON'T ANSWER TO THIS MAIL!
|
||||
|
||||
%s administrators.
|
||||
NICK_RESETPASS_COMPLETE
|
||||
Password reset email for %s has been sent.
|
||||
|
||||
# FORBID responses
|
||||
NICK_SUSPEND_SYNTAX
|
||||
SUSPEND nickname reason
|
||||
@@ -914,10 +932,6 @@ NICK_IS_PREREG
|
||||
Este nick esta esperando una verificacion por e-mail antes de poder completar el registro.
|
||||
NICK_ENTER_REG_CODE
|
||||
El password ha sido enviado a %s, tipea %R%s confirm <password> para completar el registro.
|
||||
NICK_CONFIRM_NOT_FOUND
|
||||
El paso de registro 1 puede haber expirado. Usa "%R%s register <password> <email>" primero.
|
||||
NICK_CONFIRM_INVALID
|
||||
Password invalido. Chequea el e-mail e intenta nuevamente.
|
||||
NICK_REG_MAIL_SUBJECT
|
||||
Registro de Nick (%s)
|
||||
NICK_REG_MAIL_HEAD
|
||||
@@ -937,6 +951,16 @@ NICK_GETPASS_PASSCODE_IS
|
||||
NICK_FORCE_REG
|
||||
Nick %s confirmado.
|
||||
|
||||
# Confirm responses
|
||||
NICK_CONFIRM_NOT_FOUND
|
||||
El paso de registro 1 puede haber expirado. Usa "%R%s register <password> <email>" primero.
|
||||
NICK_CONFIRM_INVALID
|
||||
Password invalido. Chequea el e-mail e intenta nuevamente.
|
||||
NICK_CONFIRM_EXPIRED
|
||||
Your password reset request has expired.
|
||||
NICK_CONFIRM_SUCCESS
|
||||
You are now identified for your nick. Change your password using "%R%s SET PASSWORD newpassword" now.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
# ChanServ messages
|
||||
@@ -1017,6 +1041,12 @@ CHAN_LEVEL_TOPIC
|
||||
CHAN_LEVEL_INFO
|
||||
Permitido usar el comando INFO con
|
||||
la opcion ALL
|
||||
CHAN_LEVEL_AUTOOWNER
|
||||
Automatic mode +q
|
||||
CHAN_LEVEL_OWNER
|
||||
Allowed to use OWNER command
|
||||
CHAN_LEVEL_OWNERME
|
||||
Allowed to (de)owner him/herself
|
||||
|
||||
# Automatic responses
|
||||
CHAN_IS_REGISTERED
|
||||
@@ -1034,7 +1064,7 @@ CHAN_X_INVALID
|
||||
|
||||
# REGISTER responses
|
||||
CHAN_REGISTER_SYNTAX
|
||||
REGISTER canal clave descripcion
|
||||
REGISTER canal descripcion
|
||||
CHAN_REGISTER_DISABLED
|
||||
Lo siento, el registro de canales esta temporalmente deshabilitado.
|
||||
CHAN_REGISTER_NOT_LOCAL
|
||||
@@ -1053,36 +1083,11 @@ CHAN_REGISTRATION_FAILED
|
||||
Lo siento, el registro ha fallado.
|
||||
CHAN_REGISTERED
|
||||
El canal %s esta registrado bajo tu nickname: %s
|
||||
CHAN_PASSWORD_IS
|
||||
Tu clave para el canal es %s - Recuerdala para uso futuro.
|
||||
CHAN_REGISTER_NONE_CHANNEL
|
||||
Has intentado registrar el canal %s, el cual no existe.
|
||||
CHAN_SYMBOL_REQUIRED
|
||||
Por favor usar el simbolo # cuando intentes registrar un canal.
|
||||
|
||||
|
||||
# IDENTIFY responses
|
||||
CHAN_IDENTIFY_SYNTAX
|
||||
IDENTIFY canal clave
|
||||
CHAN_IDENTIFY_FAILED
|
||||
Lo siento, la identificacion ha fallado.
|
||||
CHAN_IDENTIFY_SUCCEEDED
|
||||
Clave aceptada - ahora tienes nivel de fundador en %s.
|
||||
|
||||
# LOGOUT responses
|
||||
CHAN_LOGOUT_SYNTAX
|
||||
LOGOUT canal nickname
|
||||
CHAN_LOGOUT_SERVADMIN_SYNTAX
|
||||
LOGOUT canal [nickname]
|
||||
CHAN_LOGOUT_SUCCEEDED
|
||||
El usuario %s ha sido desconectado del canal %s.
|
||||
CHAN_LOGOUT_ALL_SUCCEEDED
|
||||
Todos los usuarios identificados han sido desconectados del canal %s (except the channel founder).
|
||||
CHAN_LOGOUT_FOUNDER_FAILED
|
||||
You may not log out of %s (you are founder).
|
||||
CHAN_LOGOUT_NOT_LOGGEDIN
|
||||
%s was not logged into %s.
|
||||
|
||||
# DROP responses
|
||||
CHAN_DROP_SYNTAX
|
||||
DROP canal
|
||||
@@ -1113,14 +1118,6 @@ CHAN_SUCCESSOR_UNSET
|
||||
CHAN_SUCCESSOR_IS_FOUNDER
|
||||
%s no puede ser el sucesor en el canal %s ya que el es el fundador.
|
||||
|
||||
# SET PASSWORD responses
|
||||
CHAN_SET_PASSWORD_FAILED
|
||||
Lo siento, el seteo de la clave no fue posible.
|
||||
CHAN_PASSWORD_CHANGED
|
||||
Clave para %s cambiada.
|
||||
CHAN_PASSWORD_CHANGED_TO
|
||||
La clave para %s cambiado a %s.
|
||||
|
||||
# SET DESC responses
|
||||
CHAN_DESC_CHANGED
|
||||
La descripcion de %s cambiada a%s.
|
||||
@@ -1254,6 +1251,14 @@ CHAN_SET_XOP_ON
|
||||
CHAN_SET_XOP_OFF
|
||||
El sistema de listas xOP para %s esta ahora Apagado.
|
||||
|
||||
# SET PERSISTANT responces
|
||||
CHAN_SET_PERSIST_SYNTAX
|
||||
SET channel PERSIST {ON | OFF}
|
||||
CHAN_SET_PERSIST_ON
|
||||
Channel %s is now persistant.
|
||||
CHAN_SET_PERSIST_OFF
|
||||
Channel %s is no longer persistant.
|
||||
|
||||
# SET NOEXPIRE responses
|
||||
CHAN_SET_NOEXPIRE_SYNTAX
|
||||
SET canal NOEXPIRE {ON | OFF}
|
||||
@@ -1274,6 +1279,37 @@ CHAN_XOP_ACCESS
|
||||
CHAN_XOP_NOT_AVAILABLE
|
||||
El sistema xOP no esta disponible.
|
||||
|
||||
# QOP messages
|
||||
CHAN_QOP_SYNTAX
|
||||
QOP channel {ADD|DEL|LIST|CLEAR} [nick | entry-list]
|
||||
CHAN_QOP_DISABLED
|
||||
Sorry, channel QOP list modification is temporarily disabled.
|
||||
CHAN_QOP_NICKS_ONLY
|
||||
Channel QOP lists may only contain registered nicknames.
|
||||
CHAN_QOP_ADDED
|
||||
%s added to %s QOP list.
|
||||
CHAN_QOP_MOVED
|
||||
%s moved to %s QOP list.
|
||||
CHAN_QOP_NO_SUCH_ENTRY
|
||||
No such entry (#%d) on %s QOP list.
|
||||
CHAN_QOP_NOT_FOUND
|
||||
%s not found on %s QOP list.
|
||||
CHAN_QOP_NO_MATCH
|
||||
No matching entries on %s QOP list.
|
||||
CHAN_QOP_DELETED
|
||||
%s deleted from %s QOP list.
|
||||
CHAN_QOP_DELETED_ONE
|
||||
Deleted 1 entry from %s QOP list.
|
||||
CHAN_QOP_DELETED_SEVERAL
|
||||
Deleted %d entries from %s QOP list.
|
||||
CHAN_QOP_LIST_EMPTY
|
||||
%s QOP list is empty.
|
||||
CHAN_QOP_LIST_HEADER
|
||||
QOP list for %s:
|
||||
Num Nick
|
||||
CHAN_QOP_CLEAR
|
||||
Channel %s QOP list has been cleared.
|
||||
|
||||
# AOP messages
|
||||
CHAN_AOP_SYNTAX
|
||||
AOP canal {ADD|DEL|LIST|CLEAR} [nick | instancia]
|
||||
@@ -1405,7 +1441,7 @@ CHAN_VOP_CLEAR
|
||||
|
||||
# ACCESS messages
|
||||
CHAN_ACCESS_SYNTAX
|
||||
ACCESS canal {ADD|DEL|LIST|CLEAR} [nick [nivel] | lista]
|
||||
ACCESS canal {ADD|DEL|LIST|VIEW|CLEAR} [nick [nivel] | lista]
|
||||
CHAN_ACCESS_XOP
|
||||
No puedes usar este comando.
|
||||
Usa los comandos AOP, SOP y VOP en vez.
|
||||
@@ -1455,6 +1491,12 @@ CHAN_ACCESS_LIST_AXS_FORMAT
|
||||
%3d %4d %s
|
||||
CHAN_ACCESS_CLEAR
|
||||
La lista de acceso para el canal %s ha sido limpiada.
|
||||
CHAN_ACCESS_VIEW_XOP_FORMAT
|
||||
%3d %s %s
|
||||
by %s, last seen %s
|
||||
CHAN_ACCESS_VIEW_AXS_FORMAT
|
||||
%3d %4d %s
|
||||
by %s, last seen %s
|
||||
|
||||
# AKICK responses
|
||||
CHAN_AKICK_SYNTAX
|
||||
@@ -1509,6 +1551,8 @@ CHAN_LEVELS_RANGE
|
||||
El nivel debe ser entre %d a %d inclusive.
|
||||
CHAN_LEVELS_CHANGED
|
||||
Nivel para %s en el canal %s cambiado a %d.
|
||||
CHAN_LEVELS_CHANGED_FOUNDER
|
||||
Level for %s on channel %s changed to founder only.
|
||||
CHAN_LEVELS_UNKNOWN
|
||||
Opcion %s no conocida. Tipea %R%s HELP LEVELS DESC para una lista de opciones validas.
|
||||
CHAN_LEVELS_DISABLED
|
||||
@@ -1591,6 +1635,8 @@ CHAN_INFO_OPT_TOPICLOCK
|
||||
Lock de topic
|
||||
CHAN_INFO_OPT_XOP
|
||||
Sistema de listas xOP
|
||||
CHAN_INFO_OPT_PERSIST
|
||||
Persistant
|
||||
CHAN_INFO_OPT_NONE
|
||||
Ninguno
|
||||
CHAN_INFO_MODE_LOCK
|
||||
@@ -1619,12 +1665,17 @@ CHAN_INVITE_ALREADY_IN
|
||||
You are already in %s!
|
||||
CHAN_INVITE_SUCCESS
|
||||
You have been invited to %s.
|
||||
CHAN_INVITE_OTHER_SUCCESS
|
||||
%s has been invited to %s.
|
||||
|
||||
|
||||
# UNBAN responses
|
||||
CHAN_UNBAN_SYNTAX
|
||||
UNBAN canal
|
||||
UNBAN canal [nick]
|
||||
CHAN_UNBANNED
|
||||
Has sido desbaneado de %s.
|
||||
CHAN_UNBANNED_OTHER
|
||||
%s has been unbanned from %s.
|
||||
|
||||
# TOPIC responses
|
||||
CHAN_TOPIC_SYNTAX
|
||||
@@ -1650,14 +1701,6 @@ CHAN_CLEARED_USERS
|
||||
CHAN_CLEARED_INVITES
|
||||
Todos los invites en el canal %s han sido removidos.
|
||||
|
||||
# GETPASS responses
|
||||
CHAN_GETPASS_SYNTAX
|
||||
GETPASS canal
|
||||
CHAN_GETPASS_UNAVAILABLE
|
||||
Comando GETPASS no permitido porque encriptacion esta en uso.
|
||||
CHAN_GETPASS_PASSWORD_IS
|
||||
La clave para el canal %s es %s.
|
||||
|
||||
# GETKEY responses
|
||||
CHAN_GETKEY_SYNTAX
|
||||
GETKEY canal
|
||||
@@ -1666,28 +1709,6 @@ CHAN_GETKEY_NOKEY
|
||||
CHAN_GETKEY_KEY
|
||||
Key for channel %s is %s.
|
||||
|
||||
# SENDPASS responses
|
||||
CHAN_SENDPASS_SYNTAX
|
||||
SENDPASS canal
|
||||
CHAN_SENDPASS_UNAVAILABLE
|
||||
Comando SENDPASS no permitido porque encriptacion esta en uso.
|
||||
CHAN_SENDPASS_SUBJECT
|
||||
Clave del canal (%s)
|
||||
CHAN_SENDPASS_HEAD
|
||||
Hola,
|
||||
CHAN_SENDPASS_LINE_1
|
||||
Has solicitado recibir la clave del canal %s por e-mail.
|
||||
CHAN_SENDPASS_LINE_2
|
||||
La clave es %s. Por razones de seguridad deberas cambiarla en cuanto recibas este mail.
|
||||
CHAN_SENDPASS_LINE_3
|
||||
Si no sabes porque recibiste este mail, por favor ignoralo.
|
||||
CHAN_SENDPASS_LINE_4
|
||||
POR FAVOR NO RESPONDER A ESTE EMAIL!
|
||||
CHAN_SENDPASS_LINE_5
|
||||
Administradores de %s.
|
||||
CHAN_SENDPASS_OK
|
||||
La clave de %s ha sido enviada.
|
||||
|
||||
# FORBID responses
|
||||
CHAN_FORBID_SYNTAX
|
||||
FORBID canal [razon]
|
||||
@@ -2133,6 +2154,8 @@ BOT_UNASSIGN_SYNTAX
|
||||
UNASSIGN canal
|
||||
BOT_UNASSIGN_UNASSIGNED
|
||||
Ya no hay un bot asignado a %s.
|
||||
BOT_UNASSIGN_PERSISTANT_CHAN
|
||||
You can not unassign bots while persist is set on the channel.
|
||||
|
||||
# INFO responses
|
||||
BOT_INFO_SYNTAX
|
||||
@@ -2957,8 +2980,6 @@ OPER_DEFCON_SYNTAX
|
||||
DEFCON [1|2|3|4|5]
|
||||
OPER_DEFCON_DENIED
|
||||
Los servicios estan deshabilitados temporalmente, por favor intenta mas tarde
|
||||
OPER_DEFCON_NO_CONF
|
||||
El sistema Defcon debe ser habilitado en el archivo services.conf
|
||||
OPER_DEFCON_CHANGED
|
||||
Servicios estan ahora en DEFCON %d
|
||||
OPER_DEFCON_WALL
|
||||
@@ -2978,6 +2999,10 @@ OPER_MODULE_REMOVE_FAIL
|
||||
Imposible quitar modulo %s
|
||||
OPER_MODULE_NO_UNLOAD
|
||||
This module can not be unloaded.
|
||||
OPER_MODULE_ALREADY_LOADED
|
||||
Module %s is already loaded.
|
||||
OPER_MODULE_ISNT_LOADED
|
||||
Module %s isn't loaded.
|
||||
OPER_MODULE_LOAD_SYNTAX
|
||||
MODLOAD NombreArchivo
|
||||
OPER_MODULE_UNLOAD_SYNTAX
|
||||
@@ -3373,6 +3398,8 @@ NICK_HELP_CMD_RELEASE
|
||||
RELEASE Retoma custodia de tu nick luego de RECOVER
|
||||
NICK_HELP_CMD_SENDPASS
|
||||
SENDPASS Olvidaste tu clave? Intenta esto
|
||||
NICK_HELP_CMD_RESETPASS
|
||||
RESETPASS Helps you reset lost passwords.
|
||||
NICK_HELP_CMD_GHOST
|
||||
GHOST Disconnects a "ghost" IRC session using your nick
|
||||
NICK_HELP_CMD_ALIST
|
||||
@@ -3968,6 +3995,12 @@ NICK_HELP_SENDPASS
|
||||
Puede ser limitado a operadores de IRC en ciertas
|
||||
redes.
|
||||
|
||||
NICK_HELP_RESETPASS
|
||||
Syntax: RESETPASS nickname
|
||||
|
||||
Sends a code key to the nickname with instructions on how to
|
||||
reset their password.
|
||||
|
||||
NICK_HELP_CONFIRM
|
||||
Sintaxis: CONFIRM passcode
|
||||
|
||||
@@ -3977,6 +4010,14 @@ NICK_HELP_CONFIRM
|
||||
enviado a tu direccion e-mail en el primer paso del proceso de
|
||||
registo. Para mas informacion sobre la primera etpa del proceso
|
||||
de registro, escribe: %R%S HELP REGISTER
|
||||
|
||||
This is also used after the RESETPASS command has been used to
|
||||
force identify you to your nick so you may change your password.
|
||||
|
||||
NICK_HELP_CONFIRM_OPER
|
||||
|
||||
Additionally, Services Operators with the nickserv/confirm permission can
|
||||
replace passcode with a users nick to force validate them.
|
||||
|
||||
NICK_HELP_RESEND
|
||||
Sintaxis: RESEND
|
||||
@@ -4138,10 +4179,10 @@ CHAN_HELP_CMD_STATUS
|
||||
usuario en un canal
|
||||
CHAN_HELP_CMD_REGISTER
|
||||
REGISTER Registra un canal
|
||||
CHAN_HELP_CMD_IDENTIFY
|
||||
IDENTIFY Te identifica con tu clave
|
||||
CHAN_HELP_CMD_SET
|
||||
SET Setea opciones e informacion de un canal
|
||||
CHAN_HELP_CMD_QOP
|
||||
QOP Modify the list of QOP users
|
||||
CHAN_HELP_CMD_AOP
|
||||
AOP Modifica la lista de usuarios AOP
|
||||
CHAN_HELP_CMD_SOP
|
||||
@@ -4154,8 +4195,6 @@ CHAN_HELP_CMD_AKICK
|
||||
AKICK Mantiene la lista de AutoKick
|
||||
CHAN_HELP_CMD_DROP
|
||||
DROP Cancela la registracion de un canal
|
||||
CHAN_HELP_CMD_SENDPASS
|
||||
SENDPASS Ayuda a recuperar claves perdidas
|
||||
CHAN_HELP_CMD_BAN
|
||||
BAN Bans a selected nick on a channel
|
||||
CHAN_HELP_CMD_CLEAR
|
||||
@@ -4172,14 +4211,12 @@ CHAN_HELP_CMD_KICK
|
||||
KICK Kicks a selected nick from a channel
|
||||
CHAN_HELP_CMD_LIST
|
||||
LIST Lists all registered channels matching the given pattern
|
||||
CHAN_HELP_CMD_LOGOUT
|
||||
LOGOUT This command will logout the selected nickname
|
||||
CHAN_HELP_CMD_OP
|
||||
OP Gives Op status to a selected nick on a channel
|
||||
CHAN_HELP_CMD_TOPIC
|
||||
TOPIC Manipulate the topic of the specified channel
|
||||
CHAN_HELP_CMD_UNBAN
|
||||
UNBAN Remove all bans preventing you from entering a channel
|
||||
UNBAN Remove all bans preventing a user from entering a channel
|
||||
CHAN_HELP_CMD_VOICE
|
||||
VOICE Voices a selected nick on a channel
|
||||
CHAN_HELP_CMD_VOP
|
||||
@@ -4198,10 +4235,6 @@ CHAN_HELP_CMD_OWNER
|
||||
OWNER Gives you owner status on channel
|
||||
CHAN_HELP_CMD_PROTECT
|
||||
PROTECT Protects a selected nick on a channel
|
||||
CHAN_HELP_CMD_ADMIN
|
||||
ADMIN Protects a selected nick on a channel
|
||||
CHAN_HELP_CMD_DEADMIN
|
||||
DEADMIN Deprotects a selected nick on a channel
|
||||
CHAN_HELP_CMD_DEOP
|
||||
DEOP Deops a selected nick on a channel
|
||||
|
||||
@@ -4224,53 +4257,32 @@ CHAN_HELP_EXPIRES
|
||||
automaticamente botado.
|
||||
|
||||
CHAN_HELP_REGISTER
|
||||
Sintaxis: REGISTER canal clave descripcion
|
||||
|
||||
Registra un canal en la base de datos de %S. Para
|
||||
usar este comando, debes primero ser un operador en el
|
||||
canal que intentas registrar. La clave es usada con
|
||||
el comando IDENTIFY para permitir a otros hacer
|
||||
cambios al seteo del canal posteriormente.
|
||||
El ultimo parametro, el cual debe ser incluido, es
|
||||
una descripcion general del proposito del canal.
|
||||
|
||||
Cuando registras un canal, eres reconocido como el
|
||||
"fundador" del canal. El fundador del canal puede
|
||||
cambiar todos los seteos para el canal;
|
||||
%S tambien dara al fundador prvilegios de operador
|
||||
automaticamente cuando el usuario entre al canal.
|
||||
Averigua sobre el comando ACCESS
|
||||
(%R%S HELP ACCESS) para informacion sobre
|
||||
como dar estos privilegios a otros usuarios del canal.
|
||||
|
||||
NOTESE: Para registrar un canal debes haber registrado
|
||||
tu nickname primero. Si aun no lo haz hecho, tipea
|
||||
%R%s HELP para mayor informacion en como hacerlo.
|
||||
Sintaxis: REGISTER canal descripcion
|
||||
|
||||
CHAN_HELP_IDENTIFY
|
||||
Sintaxis: IDENTIFY canal clave
|
||||
|
||||
Te identifica con %S como el fundador del canal dado.
|
||||
Muchos comandos requieren que uses este comando antes
|
||||
de usarlos. La clave deberia ser la misma que
|
||||
enviaste con el comando REGISTER.
|
||||
|
||||
CHAN_HELP_LOGOUT
|
||||
Sintaxis: LOGOUT canal nickname
|
||||
|
||||
Este comando hace al nickname dado ya no identificado
|
||||
en el canal dado.
|
||||
|
||||
Si eres el fundador del canal, puedes desconectar a
|
||||
quien sea, de otra forma solo te puedes desconectar
|
||||
a ti mismo.
|
||||
Registers a channel in the %S database. In order
|
||||
to use this command, you must first be a channel operator
|
||||
on the channel you're trying to register.
|
||||
The description, which must be included, is a
|
||||
general description of the channel's purpose.
|
||||
|
||||
When you register a channel, you are recorded as the
|
||||
"founder" of the channel. The channel founder is allowed
|
||||
to change all of the channel settings for the channel;
|
||||
%S will also automatically give the founder
|
||||
channel-operator privileges when s/he enters the channel.
|
||||
See the ACCESS command (%R%S HELP ACCESS) for
|
||||
information on giving a subset of these privileges to
|
||||
other channel users.
|
||||
|
||||
NOTICE: In order to register a channel, you must have
|
||||
first registered your nickname. If you haven't,
|
||||
%R%s HELP for information on how to do so.
|
||||
|
||||
CHAN_HELP_DROP
|
||||
Sintaxis: DROP canal
|
||||
|
||||
Desregistra el canal dado. Solo puede ser usado por el
|
||||
fundador del canal, quien debe primero usar el comando
|
||||
IDENTIFY.
|
||||
fundador del canal.
|
||||
|
||||
CHAN_HELP_SET
|
||||
Sintaxis: SET canal opcion parametros
|
||||
@@ -4282,7 +4294,6 @@ CHAN_HELP_SET
|
||||
|
||||
FOUNDER Setea el fundador de un canal
|
||||
SUCCESSOR Setea el sucesor de un canal
|
||||
PASSWORD Setea el pasword del fundador
|
||||
DESC Setea la descripcion del canal
|
||||
URL Asocia una URL con el canal
|
||||
EMAIL Asocia un E-mail con el canal
|
||||
@@ -4307,6 +4318,7 @@ CHAN_HELP_SET
|
||||
TOPIC
|
||||
XOP Cambia el sistema de privilegios de
|
||||
usuario
|
||||
PERSIST Set the channel as permanent
|
||||
|
||||
Tipea %R%S HELP opcion para mayor informacion
|
||||
acerca de una opcion en particular.
|
||||
@@ -4328,12 +4340,6 @@ CHAN_HELP_SET_SUCCESSOR
|
||||
si no hubiese un sucesor. El nuevo nickname debe ser uno
|
||||
registrado.
|
||||
|
||||
CHAN_HELP_SET_PASSWORD
|
||||
Sintaxis: SET canal PASSWORD clave
|
||||
|
||||
Setea la clave usado para identificarse como el
|
||||
fundador del canal.
|
||||
|
||||
CHAN_HELP_SET_DESC
|
||||
Sintaxis: SET canal DESC descripcion
|
||||
|
||||
@@ -4518,6 +4524,29 @@ CHAN_HELP_SET_XOP
|
||||
Cambiar de listas xOP al sistema de listas de acceso no causa
|
||||
problema alguno.
|
||||
|
||||
CHAN_HELP_SET_PERSIST
|
||||
Syntax: SET channel PERSIST {ON | OFF}
|
||||
|
||||
Enables or disables the persistant channel setting.
|
||||
When persistant is set, the service bot will remain
|
||||
in the channel when it has emptied of users.
|
||||
|
||||
If your IRCd does not a permanent (persistant) channel
|
||||
mode you must have a service bot in your channel to
|
||||
set persist on, and it can not be unassigned while persist
|
||||
is on.
|
||||
|
||||
If this network does not have BotServ enabled and does
|
||||
not have a permanent channel mode, ChanServ will
|
||||
join your channel when you set persist on (and leave when
|
||||
it has been set off).
|
||||
|
||||
If your IRCd has a permanent (persistant) channel mode
|
||||
and is is set or unset (for any reason, including MLOCK),
|
||||
persist is automatically set and unset for the channel aswell.
|
||||
Additionally, services will set or unset this mode when you
|
||||
set persist on or off.
|
||||
|
||||
CHAN_HELP_SET_OPNOTICE
|
||||
Sintaxis: SET canal OPNOTICE {ON | OFF}
|
||||
|
||||
@@ -4526,6 +4555,45 @@ CHAN_HELP_SET_OPNOTICE
|
||||
al usuario del canal cuando los comandos OP o DEOP sean
|
||||
usados para un usuario en el canal.
|
||||
|
||||
CHAN_HELP_QOP
|
||||
Syntax: QOP channel ADD nick
|
||||
QOP channel DEL {nick | entry-num | list}
|
||||
QOP channel LIST [mask | list]
|
||||
QOP channel CLEAR
|
||||
|
||||
Maintains the QOP (AutoOwner) list for a channel. The QOP
|
||||
list gives users the right to be auto-owner on your channel,
|
||||
which gives them almost (or potentially, total) access.
|
||||
|
||||
The QOP ADD command adds the given nickname to the
|
||||
QOP list.
|
||||
|
||||
The QOP DEL command removes the given nick from the
|
||||
QOP list. If a list of entry numbers is given, those
|
||||
entries are deleted. (See the example for LIST below.)
|
||||
|
||||
The QOP LIST command displays the QOP list. If
|
||||
a wildcard mask is given, only those entries matching the
|
||||
mask are displayed. If a list of entry numbers is given,
|
||||
only those entries are shown; for example:
|
||||
|
||||
QOP #channel LIST 2-5,7-9
|
||||
Lists QOP entries numbered 2 through 5 and
|
||||
7 through 9.
|
||||
|
||||
The QOP CLEAR command clears all entries of the
|
||||
QOP list.
|
||||
|
||||
The QOP commands are limited to
|
||||
founders (unless SECUREOPS is off). However, any user on the
|
||||
QOP list may use the QOP LIST command.
|
||||
|
||||
This command may have been disabled for your channel, and
|
||||
in that case you need to use the access list. See
|
||||
%R%S HELP ACCESS for information about the access list,
|
||||
and %R%S HELP SET XOP to know how to toggle between
|
||||
the access list and xOP list systems.
|
||||
|
||||
CHAN_HELP_AOP
|
||||
Sintaxis: AOP canal ADD nick
|
||||
AOP canal DEL {nick | instancia | lista}
|
||||
@@ -4699,6 +4767,7 @@ CHAN_HELP_ACCESS
|
||||
Sintaxis: ACCESS canal ADD nick nivel
|
||||
ACCESS canal DEL {nick | indices | lista}
|
||||
ACCESS canal LIST [mascara | lista]
|
||||
ACCESS canal VIEW [mascara | lista]
|
||||
ACCESS canal CLEAR
|
||||
|
||||
Mantiene la lista de acceso para un canal. La lista
|
||||
@@ -4732,7 +4801,10 @@ CHAN_HELP_ACCESS
|
||||
ACCESS #canal LIST 2-5,7-9
|
||||
Lista instancias de acceso numeradas 2 hasta 5 y
|
||||
7 hasta 9.
|
||||
|
||||
|
||||
The ACCESS VIEW command displays the access list similar
|
||||
to ACCESS LIST but shows the creator and last used time.
|
||||
|
||||
El comando ACCESS CLEAR limpia todas las instancias
|
||||
de la lista de acceso.
|
||||
|
||||
@@ -4811,30 +4883,30 @@ CHAN_HELP_AKICK
|
||||
de ka lista de akicks.
|
||||
|
||||
CHAN_HELP_LEVELS
|
||||
Sintaxis: LEVELS canal SET tipo nivel
|
||||
Sintaxis: LEVELS canal SET tipo [nivel|FOUNDER]
|
||||
LEVELS canal {DIS | DISABLE} tipo
|
||||
LEVELS canal LIST
|
||||
LEVELS canal RESET
|
||||
|
||||
El comando LEVELS permite un control fino sobre el
|
||||
significado de los niveles de acceso numericos usados para
|
||||
canales. Con este comando, puedes definir el nivel de acceso
|
||||
requerido para la mayoria de las funciones de %S.
|
||||
(Los comandos SET FOUNDER y SET PASSWORD, asi como
|
||||
este comando estan siempre restringidos al fundador del
|
||||
canal.)
|
||||
The LEVELS command allows fine control over the meaning of
|
||||
the numeric access levels used for channels. With this
|
||||
command, you can define the access level required for most
|
||||
of %S's functions. (The SET FOUNDER and this command
|
||||
are always restricted to the channel founder.)
|
||||
|
||||
LEVELS SET permite cambiar el nivel de acceso para una funcion
|
||||
o un grupo de funciones. LEVELS DISABLE (o DIS para corto)
|
||||
desabilita una caracteristica automatica o prohibe acceso a una
|
||||
funcion para todos excepto el fundador del canal.
|
||||
LEVELS LIST muestra los niveles actuales para cada funcion o
|
||||
grupo de funciones. LEVELS RESET resetea los niveles a los
|
||||
niveles por defecto de un canal recien creado (ver
|
||||
HELP ACCESS LEVELS).
|
||||
LEVELS SET allows the access level for a function or group of
|
||||
functions to be changed. LEVELS DISABLE (or DIS for short)
|
||||
disables an automatic feature or disallows access to a
|
||||
function by anyone, INCLUDING the founder (although, the founder
|
||||
can always reenable it).
|
||||
|
||||
LEVELS LIST shows the current levels for each function or
|
||||
group of functions. LEVELS RESET resets the levels to the
|
||||
default levels of a newly-created channel (see
|
||||
HELP ACCESS LEVELS).
|
||||
|
||||
Para una lista de las caracteristicas y funciones a los que
|
||||
se les puede cambiar los niveles, ver HELP LEVELS DESC.
|
||||
For a list of the features and functions whose levels can be
|
||||
set, see HELP LEVELS DESC.
|
||||
|
||||
CHAN_HELP_LEVELS_DESC
|
||||
Los siguientes nombres de decaracteristicas/funciones son
|
||||
@@ -4966,10 +5038,10 @@ CHAN_HELP_INVITE
|
||||
y mayor en el canal.
|
||||
|
||||
CHAN_HELP_UNBAN
|
||||
Sintaxis: UNBAN canal
|
||||
Sintaxis: UNBAN canal [nick]
|
||||
|
||||
Le dice a %S que remueva todos los bans previeniendo
|
||||
que entres al canal dado.
|
||||
Tells %S to remove all bans preventing you or the given
|
||||
user from entering the given channel.
|
||||
|
||||
Por defecto, limitado a AOPs o aquellos con nivel 5
|
||||
y mayor en el canal.
|
||||
@@ -5030,15 +5102,6 @@ CHAN_HELP_GETKEY
|
||||
Sintaxis: GETKEY canal
|
||||
|
||||
Retorna la key del canal dado.
|
||||
|
||||
CHAN_HELP_SENDPASS
|
||||
Sintaxis: SENDPASS canal
|
||||
|
||||
Envia la clave del canal dado a la direccion email seteada
|
||||
en el archivo del nickname del fundador. Este comando
|
||||
es sumamente util para lidiar con claves perdidas.
|
||||
|
||||
Puede ser limitado a Operadores de IRC en ciertas redes.
|
||||
|
||||
CHAN_SERVADMIN_HELP
|
||||
|
||||
@@ -5047,22 +5110,6 @@ CHAN_SERVADMIN_HELP
|
||||
ver el acceso, AKICK, y seteos de las listas de niveles para
|
||||
cualquier canal.
|
||||
|
||||
CHAN_SERVADMIN_HELP_LOGOUT
|
||||
Sintaxis: LOGOUT canal [nickname]
|
||||
|
||||
Este comando hace al nick seleccionado ya no identificado
|
||||
para el canal dado.
|
||||
|
||||
Si tu eres el fundador del canal, puedes desconectar a
|
||||
quien sea, de otra manera solo te puedes desconectar a
|
||||
ti mismo.
|
||||
|
||||
Si eres un administrador de Servicios, puedes
|
||||
desconectar a quien sea de un canal sin ser el fundador
|
||||
del canal. Ademas, puedes omitir el parametro nickname;
|
||||
esto desconectara a todos los usuarios identificados
|
||||
del canal.
|
||||
|
||||
CHAN_SERVADMIN_HELP_DROP
|
||||
Sintaxis: DROP canal
|
||||
|
||||
@@ -5088,8 +5135,8 @@ CHAN_SERVADMIN_HELP_SET_NOEXPIRE
|
||||
|
||||
CHAN_SERVADMIN_HELP_INFO
|
||||
|
||||
Administradores de Servicios pueden usar el parametro
|
||||
ALL con cualquier canal.
|
||||
Services Operators with the chanserv/auspex permission can
|
||||
use the ALL parameter with any channel.
|
||||
|
||||
CHAN_SERVADMIN_HELP_LIST
|
||||
Sintaxis: LIST patron [FORBIDDEN] [SUSPENDED] [NOEXPIRE]
|
||||
@@ -6571,3 +6618,15 @@ OPER_UMODE_UNSUPPORTED
|
||||
OPER_SUPER_ADMIN_NOT_ENABLED
|
||||
SuperAdmin setting not enabled in services.conf
|
||||
|
||||
OPER_HELP_SYNC
|
||||
Syntax: SQLSYNC
|
||||
|
||||
This command syncs your databases with SQL. You should
|
||||
only have to execute this command once, when you initially
|
||||
import your databases into SQL.
|
||||
OPER_HELP_CMD_SQLSYNC
|
||||
SQLSYNC Import your databases to SQL
|
||||
OPER_SYNC_UPDATING
|
||||
Updating MySQL.
|
||||
OPER_SYNC_UPDATED
|
||||
Finished updating MySQL.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Greek language file.
|
||||
#
|
||||
# (C) 2003-2008 Anope Team
|
||||
# (C) 2003-2010 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Please read COPYING and README for furhter details.
|
||||
@@ -236,7 +236,7 @@ MAIL_X_INVALID
|
||||
MAIL_LATER
|
||||
Äåí ìðïñåß íá óôáëåß óôç äéåýèõíóç ôï ìÞíõìá ãéá ôçí þñá; ðáñáêáëþ ðñïóðÜèçóå ëßãï áñãüôåñá.
|
||||
MAIL_DELAYED
|
||||
Ðáñáêáëþ ðåñßìåíå ^B%d^B äåõôåñüëåðôá êáé îáíáðñïóðÜèçóå.
|
||||
Ðáñáêáëþ ðåñßìåíå %d äåõôåñüëåðôá êáé îáíáðñïóðÜèçóå.
|
||||
|
||||
NO_REASON
|
||||
×ùñßò ëüãïò
|
||||
@@ -366,7 +366,7 @@ NICK_GROUP_SAME
|
||||
Åßóáé Þäç ìÝëïò ôçò ïìÜäáò ôïõ %s.
|
||||
NICK_GROUP_TOO_MANY
|
||||
Åßíáé ðÜñá ðïëëÜ øåõäþíõìá ìÝóá %s's ïìÜäá; êñÜôá ìåñéêÜ êáé âãÜëå êÜðïéá.
|
||||
ÃñÜøå ^B%R%s HELP GLIST^B êáé %R%s HELP DROP
|
||||
ÃñÜøå %R%s HELP GLIST êáé %R%s HELP DROP
|
||||
ãéá ðåñéóóüôåñåò ðëçñïöïñßåò.
|
||||
NICK_GROUP_JOINED
|
||||
Åßóáé ôþñá ìÝóá óôçí ïìÜäá ôïõ %s.
|
||||
@@ -872,6 +872,24 @@ NICK_SENDPASS_LINE_5
|
||||
NICK_SENDPASS_OK
|
||||
Ï êùäéêüò ôïõ %s Ý÷åé óôáëèåß.
|
||||
|
||||
# RESETPASS responses
|
||||
NICK_RESETPASS_SYNTAX
|
||||
RESETPASS nickname
|
||||
NICK_RESETPASS_SUBJECT
|
||||
Reset password request for %s
|
||||
NICK_RESETPASS_MESSAGE
|
||||
Hi,
|
||||
|
||||
You have requested to have the pasword for %s reset.
|
||||
To reset your password, type %R%s CONFIRM %s
|
||||
If you don't know why this mail is sent to you, please ignore it silently.
|
||||
|
||||
PLEASE DON'T ANSWER TO THIS MAIL!
|
||||
|
||||
%s administrators.
|
||||
NICK_RESETPASS_COMPLETE
|
||||
Password reset email for %s has been sent.
|
||||
|
||||
# FORBID responses
|
||||
NICK_SUSPEND_SYNTAX
|
||||
SUSPEND nickname reason
|
||||
@@ -915,10 +933,6 @@ NICK_IS_PREREG
|
||||
This nick is awaiting an e-mail verification code before completing registration.
|
||||
NICK_ENTER_REG_CODE
|
||||
A passcode has been sent to %s, please type %R%s confirm <passcode> to complete registration
|
||||
NICK_CONFIRM_NOT_FOUND
|
||||
Registration step 1 may have expired, please use "%R%s register <password> <email>" first.
|
||||
NICK_CONFIRM_INVALID
|
||||
Invalid passcode has been entered, please check the e-mail again, and retry
|
||||
NICK_REG_MAIL_SUBJECT
|
||||
Nickname Registration (%s)
|
||||
NICK_REG_MAIL_HEAD
|
||||
@@ -938,6 +952,16 @@ NICK_GETPASS_PASSCODE_IS
|
||||
NICK_FORCE_REG
|
||||
Nickname %s confirmed
|
||||
|
||||
# Confirm responses
|
||||
NICK_CONFIRM_NOT_FOUND
|
||||
Registration step 1 may have expired, please use "%R%s register <password> <email>" first.
|
||||
NICK_CONFIRM_INVALID
|
||||
Invalid passcode has been entered, please check the e-mail again, and retry.
|
||||
NICK_CONFIRM_EXPIRED
|
||||
Your password reset request has expired.
|
||||
NICK_CONFIRM_SUCCESS
|
||||
You are now identified for your nick. Change your password using "%R%s SET PASSWORD newpassword" now.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
# ChanServ messages
|
||||
@@ -1017,6 +1041,12 @@ CHAN_LEVEL_TOPIC
|
||||
ÅðéôñÝðåôáé íá ÷ñçóéìïðïéÞóåéò ôçí TOPIC åíôïëÞ
|
||||
CHAN_LEVEL_INFO
|
||||
ÅðéôñÝðåôáé íá ÷ñçóéìïðïéÞóåéò ôçí INFO åíôïëÞ ìå ôçí ALL åðéëïãÞ
|
||||
CHAN_LEVEL_AUTOOWNER
|
||||
Automatic mode +q
|
||||
CHAN_LEVEL_OWNER
|
||||
Allowed to use OWNER command
|
||||
CHAN_LEVEL_OWNERME
|
||||
Allowed to (de)owner him/herself
|
||||
|
||||
# Automatic responses
|
||||
CHAN_IS_REGISTERED
|
||||
@@ -1034,7 +1064,7 @@ CHAN_X_INVALID
|
||||
|
||||
# REGISTER responses
|
||||
CHAN_REGISTER_SYNTAX
|
||||
REGISTER channel password description
|
||||
REGISTER channel description
|
||||
CHAN_REGISTER_DISABLED
|
||||
Óõãíþìç, ç õðçñåóßá êáôï÷ýñùóåéò êáíáëéþí äåí ëåéôïõñãåß ãéá ôçí þñá.
|
||||
CHAN_REGISTER_NOT_LOCAL
|
||||
@@ -1053,36 +1083,11 @@ CHAN_REGISTRATION_FAILED
|
||||
Óõãíþìç, ç êáôï÷ýñùóç áðÝôõ÷å.
|
||||
CHAN_REGISTERED
|
||||
Ôï êáíÜëé %s åßíáé êáôï÷õñùìÝíï áðü ôï øåõäþíõìü óïõ: %s
|
||||
CHAN_PASSWORD_IS
|
||||
Ï êùäéêüò ôïõ êáíáëéïý åßíáé %s - èõìÞóïõ ôïí ãéáôß èá ôïí ÷ñåéáóôåßò ìåôÜ.
|
||||
CHAN_REGISTER_NONE_CHANNEL
|
||||
You have attempted to register a nonexistent channel %s
|
||||
CHAN_SYMBOL_REQUIRED
|
||||
Please use the symbol of # when attempting to register
|
||||
|
||||
|
||||
# IDENTIFY responses
|
||||
CHAN_IDENTIFY_SYNTAX
|
||||
IDENTIFY channel password
|
||||
CHAN_IDENTIFY_FAILED
|
||||
Óõãíþìç, ç áíáãíþñéóç ãéá ôï êáíÜëé áðÝôõ÷å.
|
||||
CHAN_IDENTIFY_SUCCEEDED
|
||||
Ï êùäéêüò Ýãéíå äåêôüò - ôþñá Ý÷åéò founder-level ðñüóâáóç óôï %s.
|
||||
|
||||
# LOGOUT responses
|
||||
CHAN_LOGOUT_SYNTAX
|
||||
LOGOUT channel nickname
|
||||
CHAN_LOGOUT_SERVADMIN_SYNTAX
|
||||
LOGOUT channel [nickname]
|
||||
CHAN_LOGOUT_SUCCEEDED
|
||||
Ï ÷ñÞóôçò %s Ýãéíå logged out áðü ôï êáíÜëé %s.
|
||||
CHAN_LOGOUT_ALL_SUCCEEDED
|
||||
¼ëïé ïé ÷ñÞóôåò logged out áðü ôï êáíÜëé %s (except the channel founder).
|
||||
CHAN_LOGOUT_FOUNDER_FAILED
|
||||
You may not log out of %s (you are founder).
|
||||
CHAN_LOGOUT_NOT_LOGGEDIN
|
||||
%s was not logged into %s.
|
||||
|
||||
# DROP responses
|
||||
CHAN_DROP_SYNTAX
|
||||
DROP channel
|
||||
@@ -1113,14 +1118,6 @@ CHAN_SUCCESSOR_UNSET
|
||||
CHAN_SUCCESSOR_IS_FOUNDER
|
||||
%s äåí ìðïñåß íá åßíáé successor óôï êáíÜëé %s ãéáôß åßíáé founder óå áõôü.
|
||||
|
||||
# SET PASSWORD responses
|
||||
CHAN_SET_PASSWORD_FAILED
|
||||
Óõãíþìç, äåí ìðüñåóå íá ãßíåé äåêôüò ï êùäéêüò.
|
||||
CHAN_PASSWORD_CHANGED
|
||||
%s ï êùäéêüò Üëëáîå.
|
||||
CHAN_PASSWORD_CHANGED_TO
|
||||
%s ï êùäéêüò Üëëáîå óå %s.
|
||||
|
||||
# SET DESC responses
|
||||
CHAN_DESC_CHANGED
|
||||
ÐåñéãñáöÞ ôïõ %s Üëëáîå óå %s.
|
||||
@@ -1252,6 +1249,14 @@ CHAN_SET_XOP_ON
|
||||
CHAN_SET_XOP_OFF
|
||||
xOP lists system for %s is now OFF.
|
||||
|
||||
# SET PERSISTANT responces
|
||||
CHAN_SET_PERSIST_SYNTAX
|
||||
SET channel PERSIST {ON | OFF}
|
||||
CHAN_SET_PERSIST_ON
|
||||
Channel %s is now persistant.
|
||||
CHAN_SET_PERSIST_OFF
|
||||
Channel %s is no longer persistant.
|
||||
|
||||
# SET NOEXPIRE responses
|
||||
CHAN_SET_NOEXPIRE_SYNTAX
|
||||
SET channel NOEXPIRE {ON | OFF}
|
||||
@@ -1271,6 +1276,37 @@ CHAN_XOP_ACCESS
|
||||
CHAN_XOP_NOT_AVAILABLE
|
||||
xOP system is not available.
|
||||
|
||||
# QOP messages
|
||||
CHAN_QOP_SYNTAX
|
||||
QOP channel {ADD|DEL|LIST|CLEAR} [nick | entry-list]
|
||||
CHAN_QOP_DISABLED
|
||||
Sorry, channel QOP list modification is temporarily disabled.
|
||||
CHAN_QOP_NICKS_ONLY
|
||||
Channel QOP lists may only contain registered nicknames.
|
||||
CHAN_QOP_ADDED
|
||||
%s added to %s QOP list.
|
||||
CHAN_QOP_MOVED
|
||||
%s moved to %s QOP list.
|
||||
CHAN_QOP_NO_SUCH_ENTRY
|
||||
No such entry (#%d) on %s QOP list.
|
||||
CHAN_QOP_NOT_FOUND
|
||||
%s not found on %s QOP list.
|
||||
CHAN_QOP_NO_MATCH
|
||||
No matching entries on %s QOP list.
|
||||
CHAN_QOP_DELETED
|
||||
%s deleted from %s QOP list.
|
||||
CHAN_QOP_DELETED_ONE
|
||||
Deleted 1 entry from %s QOP list.
|
||||
CHAN_QOP_DELETED_SEVERAL
|
||||
Deleted %d entries from %s QOP list.
|
||||
CHAN_QOP_LIST_EMPTY
|
||||
%s QOP list is empty.
|
||||
CHAN_QOP_LIST_HEADER
|
||||
QOP list for %s:
|
||||
Num Nick
|
||||
CHAN_QOP_CLEAR
|
||||
Channel %s QOP list has been cleared.
|
||||
|
||||
# AOP messages
|
||||
CHAN_AOP_SYNTAX
|
||||
AOP channel {ADD|DEL|LIST|CLEAR} [nick | entry-list]
|
||||
@@ -1405,7 +1441,7 @@ CHAN_VOP_CLEAR
|
||||
|
||||
# ACCESS messages
|
||||
CHAN_ACCESS_SYNTAX
|
||||
ACCESS channel {ADD|DEL|LIST|CLEAR} [nick [level] | entry-list]
|
||||
ACCESS channel {ADD|DEL|LIST|VIEW|CLEAR} [nick [level] | entry-list]
|
||||
CHAN_ACCESS_XOP
|
||||
Äåí ìðïñåßò íá ÷ñçóéìïðïéÞóåéò áõôÞ ôçí åíôïëÞ.
|
||||
×ñçóéìïðïßçóå AOP, SOP êáé VOP åíôïëÝò áíôß ãéá ôçí access.
|
||||
@@ -1453,6 +1489,12 @@ CHAN_ACCESS_LIST_XOP_FORMAT
|
||||
%3d %s %s
|
||||
CHAN_ACCESS_LIST_AXS_FORMAT
|
||||
%3d %4d %s
|
||||
CHAN_ACCESS_VIEW_XOP_FORMAT
|
||||
%3d %s %s
|
||||
by %s, last seen %s
|
||||
CHAN_ACCESS_VIEW_AXS_FORMAT
|
||||
%3d %4d %s
|
||||
by %s, last seen %s
|
||||
|
||||
# AKICK responses
|
||||
CHAN_ACCESS_CLEAR
|
||||
@@ -1513,6 +1555,8 @@ CHAN_LEVELS_RANGE
|
||||
Ï âáèìüò ðñÝðåé íá åßíáé ìåôáîý %d êáé %d.
|
||||
CHAN_LEVELS_CHANGED
|
||||
Ï âáèìüò ãéá ôïí %s óôï êáíÜëé %s Üëëîå óå %d.
|
||||
CHAN_LEVELS_CHANGED_FOUNDER
|
||||
Level for %s on channel %s changed to founder only.
|
||||
CHAN_LEVELS_UNKNOWN
|
||||
Ç åðéëïãÞ %s äåí åßíáé ãíùóôÞ. ÃñÜøå %R%s HELP LEVELS DESC ãéá ôç ëßóôá ìå ôéó áíáëõôéêÝò åðéëïãÝò.
|
||||
CHAN_LEVELS_DISABLED
|
||||
@@ -1595,6 +1639,8 @@ CHAN_INFO_OPT_TOPICLOCK
|
||||
Êëåßäùìá ôïõ Topic
|
||||
CHAN_INFO_OPT_XOP
|
||||
xOP ëßóôá óõóôÞìáôïò
|
||||
CHAN_INFO_OPT_PERSIST
|
||||
Persistant
|
||||
CHAN_INFO_OPT_NONE
|
||||
ÊáíÝíá
|
||||
CHAN_INFO_MODE_LOCK
|
||||
@@ -1623,12 +1669,17 @@ CHAN_INVITE_ALREADY_IN
|
||||
You are already in %s!
|
||||
CHAN_INVITE_SUCCESS
|
||||
You have been invited to %s.
|
||||
CHAN_INVITE_OTHER_SUCCESS
|
||||
%s has been invited to %s.
|
||||
|
||||
|
||||
# UNBAN responses
|
||||
CHAN_UNBAN_SYNTAX
|
||||
UNBAN êáíÜëé
|
||||
UNBAN êáíÜëé [nick]
|
||||
CHAN_UNBANNED
|
||||
ãéíåò unban áðü ôï %s.
|
||||
CHAN_UNBANNED_OTHER
|
||||
%s has been unbanned from %s.
|
||||
|
||||
# TOPIC responses
|
||||
CHAN_TOPIC_SYNTAX
|
||||
@@ -1653,16 +1704,8 @@ CHAN_CLEARED_USERS
|
||||
¼ëïé ïé ÷ñÞóôåò Ýãéíáí kick áðü ôï êáíÜëé %s.
|
||||
CHAN_CLEARED_INVITES
|
||||
All invites on channel %s have been removed.
|
||||
|
||||
# GETPASS responses
|
||||
CHAN_GETPASS_SYNTAX
|
||||
GETPASS êáíÜëé
|
||||
CHAN_GETPASS_UNAVAILABLE
|
||||
Ç åíôïëÞ GETPASS äåí åßíáé äéáèÝóéìç ãéáôß ç êùäéêïðïßçóç åßíáé óå ëåéôïõñãßá.
|
||||
CHAN_GETPASS_PASSWORD_IS
|
||||
Ï êùäéêüò ãéá ôï êáíÜëé %s åßíáé %s.
|
||||
|
||||
# SENDPASS responses
|
||||
# GETKEY responses
|
||||
CHAN_GETKEY_SYNTAX
|
||||
GETKEY channel
|
||||
CHAN_GETKEY_NOKEY
|
||||
@@ -1670,28 +1713,6 @@ CHAN_GETKEY_NOKEY
|
||||
CHAN_GETKEY_KEY
|
||||
Key for channel %s is %s.
|
||||
|
||||
# SENDPASS responses
|
||||
CHAN_SENDPASS_SYNTAX
|
||||
SENDPASS êáíÜëé
|
||||
CHAN_SENDPASS_UNAVAILABLE
|
||||
Ç åíôïëÞ SENDPASS äåí åßíáé äéáèÝóéìç ãéáôß ç êùäéêïðïßçóç åßíáé óå ëåéôïõñãßá.
|
||||
CHAN_SENDPASS_SUBJECT
|
||||
Ï êùäéêüò ôïõ êáíáëéïý (%s)
|
||||
CHAN_SENDPASS_HEAD
|
||||
Ãåéá,
|
||||
CHAN_SENDPASS_LINE_1
|
||||
Ìáò åéäïðïßçóåò íá óïõ óôåßëïõìå ôïí êùäéêü ôïõ êáíáëéïý %s ìÝóù e-mail.
|
||||
CHAN_SENDPASS_LINE_2
|
||||
Ï êùäéêüò åßíáé %s. Ãéá ðåñéóóüôåñç áóöÜëåéá, èá ðñÝðåé íá ôï áëëÜîåéò ôï ãñçãïñüñôåñï áðü ôç óôéãìÞ ðïõ Ýëáâåò áõôü ôï e-mail.
|
||||
CHAN_SENDPASS_LINE_3
|
||||
Áí äåí îÝñåéò ãéáôß óïõ óôÜëèçêå áõôü ôï mail, ðáñáêáëþ áãíïçóÝ ôï.
|
||||
CHAN_SENDPASS_LINE_4
|
||||
ÐÁÑÁÊÁËÙ ÌÇÍ ÁÐÁÍÔÇÓÅÉÓ ÓÅ ÁÕÔÏ ÔÏ MAIL!
|
||||
CHAN_SENDPASS_LINE_5
|
||||
%s administrators.
|
||||
CHAN_SENDPASS_OK
|
||||
Ï êùäéêüò ôïõ %s óôÜëèçêå åðéôõ÷þò.
|
||||
|
||||
# FORBID responses
|
||||
CHAN_FORBID_SYNTAX
|
||||
FORBID êáíÜëé [ëüãïò]
|
||||
@@ -2164,6 +2185,8 @@ BOT_UNASSIGN_SYNTAX
|
||||
UNASSIGN chan
|
||||
BOT_UNASSIGN_UNASSIGNED
|
||||
Äåí õðÜñ÷åé bot ðïõ íá åßíáé óôï %s ôþñá ðéá.
|
||||
BOT_UNASSIGN_PERSISTANT_CHAN
|
||||
You can not unassign bots while persist is set on the channel.
|
||||
|
||||
# INFO responses
|
||||
BOT_INFO_SYNTAX
|
||||
@@ -2988,8 +3011,6 @@ OPER_DEFCON_SYNTAX
|
||||
DEFCON [1|2|3|4|5]
|
||||
OPER_DEFCON_DENIED
|
||||
This service is temporarly disabled, please try again later
|
||||
OPER_DEFCON_NO_CONF
|
||||
The Defcon system must be enabled in the services.conf file
|
||||
OPER_DEFCON_CHANGED
|
||||
Services are now at DEFCON %d
|
||||
OPER_DEFCON_WALL
|
||||
@@ -3009,6 +3030,10 @@ OPER_MODULE_REMOVE_FAIL
|
||||
Unable to remove module %s
|
||||
OPER_MODULE_NO_UNLOAD
|
||||
This module can not be unloaded.
|
||||
OPER_MODULE_ALREADY_LOADED
|
||||
Module %s is already loaded.
|
||||
OPER_MODULE_ISNT_LOADED
|
||||
Module %s isn't loaded.
|
||||
OPER_MODULE_LOAD_SYNTAX
|
||||
MODLOAD FileName
|
||||
OPER_MODULE_UNLOAD_SYNTAX
|
||||
@@ -3393,6 +3418,8 @@ NICK_HELP_CMD_RELEASE
|
||||
RELEASE ÁíÜêôçóç ôçò êáôáêñÜôçóçò ôïõ øåõäùíýìïõ,ìåôÜ áðü RECOVER
|
||||
NICK_HELP_CMD_SENDPASS
|
||||
SENDPASS ÎÝ÷áóåò ôïí êùäéêü? Äïêßìáóå áõôü êáé èá óôï óôåßëïõìå åìåßò
|
||||
NICK_HELP_CMD_RESETPASS
|
||||
RESETPASS Helps you reset lost passwords.
|
||||
NICK_HELP_CMD_GHOST
|
||||
GHOST Disconnects a "ghost" IRC session using your nick
|
||||
NICK_HELP_CMD_ALIST
|
||||
@@ -3999,6 +4026,12 @@ NICK_HELP_SENDPASS
|
||||
|
||||
Ìüíï ïé IRC operators óôá äßêôõá ðïõ åßíáé ìðïñïýí íá ôï êÜíïõí.
|
||||
|
||||
NICK_HELP_RESETPASS
|
||||
Syntax: RESETPASS nickname
|
||||
|
||||
Sends a code key to the nickname which instructions on how to
|
||||
reset their password.
|
||||
|
||||
NICK_HELP_CONFIRM
|
||||
Syntax: CONFIRM passcode
|
||||
|
||||
@@ -4009,6 +4042,14 @@ NICK_HELP_CONFIRM
|
||||
registration process. For more information about the first
|
||||
stage of the registration process, type: %R%S HELP REGISTER
|
||||
|
||||
This is also used after the RESETPASS command has been used to
|
||||
force identify you to your nick so you may change your password.
|
||||
|
||||
NICK_HELP_CONFIRM_OPER
|
||||
|
||||
Additionally, Services Operators with the nickserv/confirm permission can
|
||||
replace passcode with a users nick to force validate them.
|
||||
|
||||
NICK_HELP_RESEND
|
||||
Syntax: RESEND
|
||||
|
||||
@@ -4156,11 +4197,11 @@ CHAN_HELP_CMD_STATUS
|
||||
êáíÜëé
|
||||
CHAN_HELP_CMD_REGISTER
|
||||
REGISTER Êáôï÷õñþíåé Ýíá êáíÜëé
|
||||
CHAN_HELP_CMD_IDENTIFY
|
||||
IDENTIFY Óáò áíáãíùñßæåé ìå êùäéêü
|
||||
CHAN_HELP_CMD_SET
|
||||
SET Ñõèìßæåé ôéò åðéëïãÝò êáé ôéò ðëçñïöïñßåò
|
||||
ôïõ êáíáëéïý
|
||||
CHAN_HELP_CMD_QOP
|
||||
QOP Modify the list of QOP users
|
||||
CHAN_HELP_CMD_AOP
|
||||
AOP ÁëëÜæåé ôçí ëßóôá ôùí AOP ÷ñçóôþí
|
||||
CHAN_HELP_CMD_SOP
|
||||
@@ -4173,8 +4214,6 @@ CHAN_HELP_CMD_AKICK
|
||||
AKICK Óõíôçñåß ôç ëßóôá áõôüìáôçò áðüññéøçò
|
||||
CHAN_HELP_CMD_DROP
|
||||
DROP Áêõñþíåé ôçí êáôï÷ýñùóç åíüò êáíáëéïý
|
||||
CHAN_HELP_CMD_SENDPASS
|
||||
SENDPASS ÓôÝëíåé ôïí ÷áìÝíï êùäéêü ôïõ êáíáëéïý
|
||||
CHAN_HELP_CMD_BAN
|
||||
BAN Bans a selected nick on a channel
|
||||
CHAN_HELP_CMD_CLEAR
|
||||
@@ -4191,14 +4230,12 @@ CHAN_HELP_CMD_KICK
|
||||
KICK Kicks a selected nick from a channel
|
||||
CHAN_HELP_CMD_LIST
|
||||
LIST Lists all registered channels matching the given pattern
|
||||
CHAN_HELP_CMD_LOGOUT
|
||||
LOGOUT This command will logout the selected nickname
|
||||
CHAN_HELP_CMD_OP
|
||||
OP Gives Op status to a selected nick on a channel
|
||||
CHAN_HELP_CMD_TOPIC
|
||||
TOPIC Manipulate the topic of the specified channel
|
||||
CHAN_HELP_CMD_UNBAN
|
||||
UNBAN Remove all bans preventing you from entering a channel
|
||||
UNBAN Remove all bans preventing a user from entering a channel
|
||||
CHAN_HELP_CMD_VOICE
|
||||
VOICE Voices a selected nick on a channel
|
||||
CHAN_HELP_CMD_VOP
|
||||
@@ -4217,10 +4254,6 @@ CHAN_HELP_CMD_OWNER
|
||||
OWNER Gives you owner status on channel
|
||||
CHAN_HELP_CMD_PROTECT
|
||||
PROTECT Protects a selected nick on a channel
|
||||
CHAN_HELP_CMD_ADMIN
|
||||
ADMIN Protects a selected nick on a channel
|
||||
CHAN_HELP_CMD_DEADMIN
|
||||
DEADMIN Deprotects a selected nick on a channel
|
||||
CHAN_HELP_CMD_DEOP
|
||||
DEOP Deops a selected nick on a channel
|
||||
|
||||
@@ -4242,51 +4275,32 @@ CHAN_HELP_EXPIRES
|
||||
ãéá åêåßíç ôçí ðåñßïäï ôùí çìåñþí) èá äéáãñáöåß áõôüìáôá.
|
||||
|
||||
CHAN_HELP_REGISTER
|
||||
Óýíôáîç: REGISTER êáíÜëé êùäéêüò ðåñéãñáöÞ
|
||||
Óýíôáîç: REGISTER êáíÜëé ðåñéãñáöÞ
|
||||
|
||||
Êáôï÷õñþíåé Ýíá êáíÜëé óôç âÜóç äåäïìÝíùí ôïõ %S. Ãéá
|
||||
íá ÷ñçóéìïðïéÞóåôå áõôÞ ôçí åíôïëÞ, ðñÝðåé ðñþôá íá åßóôå
|
||||
äéá÷åéñéóôÞò êáíáëéïý ìÝóá óôï êáíÜëé ðïõ ðñïóðáèåßôå íá
|
||||
êáôï÷õñþóåôå. Ï êùäéêüò ÷ñçóéìïðïéåßôáé ìå ôçí åíôïëÞ
|
||||
IDENTIFY ãéá íá óáò åðéôñÝðåé íá êÜíåôå áëëáãÝò óôéò
|
||||
ñõèìßóåéò ôïõ êáíáëéïý áñãüôåñá. Ç ôåëåõôáßá ðáñÜìåôñïò,
|
||||
ç ïðïßá êáé ðñÝðåé íá óõìðåñéëçöèåß, åßíáé ìßá ãåíéêÞ
|
||||
ðåñéãñáöÞ ãéá ôï óêïðü ýðáñîçò ôïõ êáíáëéïý.
|
||||
|
||||
¼ôáí êáôï÷õñþíåôå Ýíá êáíÜëé, ïñßæåóôå óáí "éäñõôÞò" ôïõ.
|
||||
Ï éäñõôÞò åíüò êáíáëéïý, åðéôñÝðåôáé íá áëëÜîåé üëåò ôéò
|
||||
ñõèìßóåéò ôïõ; Ï %S åðßóçò èá ôïõ äþóåé áõôüìáôá
|
||||
áñìïäéüôçôåò éäñõôÞ êáé äéá÷åéñéóôÞ êáíáëéïý, ìå ôçí åßóïäü
|
||||
ôïõ óôï êáíÜëé.Äåßôå ôçí åíôïëÞ ACCESS command.
|
||||
(%R%S HELP ACCESS) ãéá ðëçñïöïñßåò ó÷åôéêÜ ìå ôçí ðáñï÷Þ ìÝñïõò ôùí
|
||||
áñìïäéïôÞôùí áõôþí, óå Üëëïõò ÷ñÞóôåò ôïõ êáíáëéïý.
|
||||
|
||||
ÓÇÌÅÉÙÓÇ: Ãéá íá êáôï÷õñþóåôå Ýíá êáíÜëé, ðñÝðåé íá Ý÷åôå
|
||||
ðñþôá êáôï÷õñþóåé ôï øåõäþíõìü óáò. Áí äåí ôï Ý÷åôå êÜíåé,
|
||||
%R%s HELP ãéá ðåñéóóüôåñåò ðëçñïöïñßåò ó÷åôéêÜ.
|
||||
Registers a channel in the %S database. In order
|
||||
to use this command, you must first be a channel operator
|
||||
on the channel you're trying to register.
|
||||
The description, which must be included, is a
|
||||
general description of the channel's purpose.
|
||||
|
||||
CHAN_HELP_IDENTIFY
|
||||
Óýíôáîç: IDENTIFY êáíÜëé êùäéêüò
|
||||
|
||||
Óå áíáãíùñßæåé ï %S ùò founder ôïõ æçôïýìåíïõ êáíáëéïý.
|
||||
ÐïëëÝò åðéëïãÝò áðáéôïýí áõôÞ ôçí åíôïëÞ ðñéí óõíå÷ßóåôå ìå ôéò
|
||||
Üëëåò. Ï êùäéêüò èá ðñÝðåé íá åßíáé ï ßäéïò ìå áõôüí ðïõ êÜíáôå
|
||||
ôçí åíôïëÞ êáôï÷ýñùóçò.
|
||||
|
||||
CHAN_HELP_LOGOUT
|
||||
Óýíôáîç: LOGOUT êáíÜëé øåõäþíõìï
|
||||
|
||||
ÁõôÞ ç åíôïëÞ åßíáé ãéá øåõäþíõìá ðïõ äåí êÜíïõí åíôïëÞ áíáãíþñéóçò
|
||||
ãéá ôï æçôïýìåíï êáíÜëé.
|
||||
|
||||
Áí åßóáé ï founder ôïõ êáíáëéïý, ìðïñåßò íá êÜíåéò log out ïðïéïäÞðïôå,
|
||||
åêôüò êáé áí êÜíåéò ìüíï log out ôïí åáõôü óïõ.
|
||||
When you register a channel, you are recorded as the
|
||||
"founder" of the channel. The channel founder is allowed
|
||||
to change all of the channel settings for the channel;
|
||||
%S will also automatically give the founder
|
||||
channel-operator privileges when s/he enters the channel.
|
||||
See the ACCESS command (%R%S HELP ACCESS) for
|
||||
information on giving a subset of these privileges to
|
||||
other channel users.
|
||||
|
||||
NOTICE: In order to register a channel, you must have
|
||||
first registered your nickname. If you haven't,
|
||||
%R%s HELP for information on how to do so.
|
||||
|
||||
CHAN_HELP_DROP
|
||||
Óýíôáîç: DROP êáíÜëé
|
||||
|
||||
ÊÜíåé ôï êáíÜëé îåêáôï÷õñþóçìï,ôï áöÞíåé åëåýèåñï ÷ùñßò founder. Ãéá íá
|
||||
ãßíåé áõôü ðñÝðåé ï founder, íá êÜíåé IDENTIFY ðñþôá êáé ýóôåñá drop.
|
||||
ãßíåé áõôü ðñÝðåé ï founder.
|
||||
|
||||
CHAN_HELP_SET
|
||||
Óýíôáîç: SET êáíÜëé åðéëïãÞ ðáñÜìåôñïé
|
||||
@@ -4298,7 +4312,6 @@ CHAN_HELP_SET
|
||||
|
||||
FOUNDER ÁëëÜæåé ôïí founder ôïõ êáíáëéïý
|
||||
SUCCESSOR ÁëëÜæåé ôïí successor ôïõ êáíáëéïý
|
||||
PASSWORD ÁëëÜæåé ôïí êùäéêü ôïõ founder
|
||||
DESC ÁëëÜæåé ôçí ðåñéãñáöÞ ôïõ êáíáëéïý
|
||||
URL Óõó÷åôßæåé Ýíá URL ìå ôï êáíÜëé
|
||||
EMAIL Óõó÷åôßæåé Ýíá E-mail ìå ôï êáíÜëé
|
||||
@@ -4318,6 +4331,7 @@ CHAN_HELP_SET
|
||||
SIGNKICK Åìöáí. kicks ôá ïðïßá ãßíïíôáé ìå ôçí åíôïëÞ KICK
|
||||
TOPICLOCK Ôï Topic ìðïñåß íá áëëÜîåé ìå ôçí åíôïëÞ TOPIC
|
||||
XOP Áí åßíáé ON äïõëåýåé ìå AOP/SOP,áí åßíáé off ìå access
|
||||
PERSIST Set the channel as permanent
|
||||
|
||||
ÃñÜøå %R%S HELP åðéëïãÞ ãéá ðåñéóóüôåñåò ðëçñïöïñßåò
|
||||
ãéá ôçí êÜèå åíôïëÞ.
|
||||
@@ -4337,12 +4351,6 @@ CHAN_HELP_SET_SUCCESSOR
|
||||
Áí üìùò, ï successor Ý÷åé êáôï÷õñþóåé ðïëëÜ êáíÜëéá,
|
||||
áí äçë Ý÷åé (%d), ôï êáíÜëé èá óâçóôåß,óáí íá ìçí åß÷å ïñéóôåß
|
||||
successor. Ôï íÝï øåõäþíõìï èá ðñÝðåé íá åßíáé êáôï÷õñùìÝíï.
|
||||
|
||||
CHAN_HELP_SET_PASSWORD
|
||||
Óýíôáîç: SET êáíÜëé PASSWORD êùäéêü
|
||||
|
||||
ÁëëÜæåôå ôïí êùäéêü ðïõ êÜíåôå åíôïëÞ áíáãíþñéóçò ùò founder ôïõ
|
||||
êáíáëéïý.
|
||||
|
||||
CHAN_HELP_SET_DESC
|
||||
Óýíôáîç: SET êáíÜëé DESC ðåñéãñáöÞ
|
||||
@@ -4514,6 +4522,29 @@ CHAN_HELP_SET_XOP
|
||||
Áí áðü xOP system ôï ãõñßóåôå óå access system
|
||||
äåí èá õðÜñîåé êáíÝíá ðñüâëçìá.
|
||||
|
||||
CHAN_HELP_SET_PERSIST
|
||||
Syntax: SET channel PERSIST {ON | OFF}
|
||||
|
||||
Enables or disables the persistant channel setting.
|
||||
When persistant is set, the service bot will remain
|
||||
in the channel when it has emptied of users.
|
||||
|
||||
If your IRCd does not a permanent (persistant) channel
|
||||
mode you must have a service bot in your channel to
|
||||
set persist on, and it can not be unassigned while persist
|
||||
is on.
|
||||
|
||||
If this network does not have BotServ enabled and does
|
||||
not have a permanent channel mode, ChanServ will
|
||||
join your channel when you set persist on (and leave when
|
||||
it has been set off).
|
||||
|
||||
If your IRCd has a permanent (persistant) channel mode
|
||||
and is is set or unset (for any reason, including MLOCK),
|
||||
persist is automatically set and unset for the channel aswell.
|
||||
Additionally, services will set or unset this mode when you
|
||||
set persist on or off.
|
||||
|
||||
CHAN_HELP_SET_OPNOTICE
|
||||
Óýíôáîç: SET êáíÜëé OPNOTICE {ON | OFF}
|
||||
|
||||
@@ -4521,6 +4552,45 @@ CHAN_HELP_SET_OPNOTICE
|
||||
¼ôáí åíåñãïðïéåßôáé ç åíçìÝñùóç op, ï %S óôÝëíåé Ýíá notice óôïõò ops
|
||||
ôïõ êáíáëéïý, êÜèå öïñÜ ðïõ ÷ñçóéìïðïéïýíôáé ïé åíôïëÝò OP, DEOP, AKICK êáé
|
||||
ACCESS áðü êÜðïéï ÷ñÞóôç ãéá ôï êáíÜëé.
|
||||
|
||||
CHAN_HELP_QOP
|
||||
Syntax: QOP channel ADD nick
|
||||
QOP channel DEL {nick | entry-num | list}
|
||||
QOP channel LIST [mask | list]
|
||||
QOP channel CLEAR
|
||||
|
||||
Maintains the QOP (AutoOwner) list for a channel. The QOP
|
||||
list gives users the right to be auto-owner on your channel,
|
||||
which gives them almost (or potentially, total) access.
|
||||
|
||||
The QOP ADD command adds the given nickname to the
|
||||
QOP list.
|
||||
|
||||
The QOP DEL command removes the given nick from the
|
||||
QOP list. If a list of entry numbers is given, those
|
||||
entries are deleted. (See the example for LIST below.)
|
||||
|
||||
The QOP LIST command displays the QOP list. If
|
||||
a wildcard mask is given, only those entries matching the
|
||||
mask are displayed. If a list of entry numbers is given,
|
||||
only those entries are shown; for example:
|
||||
|
||||
QOP #channel LIST 2-5,7-9
|
||||
Lists QOP entries numbered 2 through 5 and
|
||||
7 through 9.
|
||||
|
||||
The QOP CLEAR command clears all entries of the
|
||||
QOP list.
|
||||
|
||||
The QOP commands are limited to
|
||||
founders (unless SECUREOPS is off). However, any user on the
|
||||
QOP list may use the QOP LIST command.
|
||||
|
||||
This command may have been disabled for your channel, and
|
||||
in that case you need to use the access list. See
|
||||
%R%S HELP ACCESS for information about the access list,
|
||||
and %R%S HELP SET XOP to know how to toggle between
|
||||
the access list and xOP list systems.
|
||||
|
||||
CHAN_HELP_AOP
|
||||
Óýíôáîç: AOP êáíÜëé ADD øåõäþíõìï
|
||||
@@ -4683,9 +4753,10 @@ CHAN_HELP_VOP
|
||||
|
||||
CHAN_HELP_ACCESS
|
||||
Óýíôáîç: ACCESS êáíÜëé ADD øåõäþíõìï âáèìüò
|
||||
ACCESS êáíÜëé DEL {øåõäþíõìï | èÝóåéò-íïõ | list}
|
||||
ACCESS êáíÜëé LIST [ìÜóêá | list]
|
||||
ACCESS êáíÜëé CLEAR
|
||||
ACCESS êáíÜëé DEL {øåõäþíõìï | èÝóåéò-íïõ | list}
|
||||
ACCESS êáíÜëé LIST [ìÜóêá | list]
|
||||
ACCESS êáíÜëé VIEW [ìÜóêá | list]
|
||||
ACCESS êáíÜëé CLEAR
|
||||
|
||||
ÁëëÜæåé ôçí access ëßóôá ôïõ êáíáëéïý. Ç ëßóôá access
|
||||
êáèïñßæåé ðïéïé ÷ñÞóôåò èá Ý÷ïõí op óôï êáíÜëé Þ
|
||||
@@ -4714,7 +4785,10 @@ CHAN_HELP_ACCESS
|
||||
ACCESS #êáíÜëé LIST 2-5,7-9
|
||||
Åìöáíßæåé áðü ôçí ëßóôá access ôéò èÝóåéò ìå ôá
|
||||
íïýìåñá 2 Ýùò 5 êáé 7 Ýùò 9.
|
||||
|
||||
|
||||
The ACCESS VIEW command displays the access list similar
|
||||
to ACCESS LIST but shows the creator and last used time.
|
||||
|
||||
Ç åíôïëÞ ACCESS CLEAR äéáãñÜöåé üëåò ôéó èÝóåéò ôçò ëßóôáò access.
|
||||
|
||||
CHAN_HELP_ACCESS_LEVELS
|
||||
@@ -4788,29 +4862,30 @@ CHAN_HELP_AKICK
|
||||
ëßóôá akick.
|
||||
|
||||
CHAN_HELP_LEVELS
|
||||
Óýíôáîç: LEVELS êáíÜëé SET ôýðïò âáèìüò
|
||||
LEVELS êáíÜëé {DIS | DISABLE} ôýðïò
|
||||
LEVELS êáíÜëé LIST
|
||||
LEVELS êáíÜëé RESET
|
||||
Óýíôáîç: LEVELS êáíÜëé SET ôýðïò [âáèìüò|FOUNDER]
|
||||
LEVELS êáíÜëé {DIS | DISABLE} ôýðïò
|
||||
LEVELS êáíÜëé LIST
|
||||
LEVELS êáíÜëé RESET
|
||||
|
||||
Ç åíôïëÞ LEVELS åðéôñÝðåé ôï êáëü ÷åéñéóìü üóïí áöïñÜ
|
||||
ôçí ñýèìéóç ôçò access levels ðïõ ÷ñçóéìïðïéåßôáé óôï êáíÜëé.
|
||||
Ìå áõôÞ ôçí åíôïëÞ, ìðïñåßôå íá ÷åéñßæåóôå ôçí access level ðïõ
|
||||
ðïõ åêôåëåß ï %S. (Ôéò åíôïëÝò SET FOUNDER êáé SET PASSWORD
|
||||
ôéò ÷åéñßæåôáé ìüíï ï founder.)
|
||||
|
||||
Ç åíôïëÞ LEVELS SET åðéôñÝðåé ôçí áëëáãÞ ôùí access level (âáèìþí).
|
||||
Ç åíôïëÞ LEVELS DISABLE (Þ DIS ãéá óõíôïìßá)
|
||||
áðåíåñãïðïéåß áõôüìáôá ìåëëïíôéêÜ Þ äåí äßíåé äéêáéþìáôá óå üóïõò Ý÷ïõí access
|
||||
åêôüò ôïõ founder êáíáëéïý áõôïý.
|
||||
Ç åíôïëÞ áõôÞ LEVELS LIST äåß÷íåé ôá levels (âáèìïýò) ðïõ Ý÷åé ç êÜèå
|
||||
åíôïëÞ.
|
||||
Ç åíôïëÞ LEVELS RESET óâÞíåé ôá levels (âáèìïýò) êáé åðáíáöÝñåé ôá
|
||||
default levels (âáèìïýò), äçë áõôÜ ôá levels ðïõ Ý÷åé Ýíá íÝï êáíÜëé (äåò
|
||||
ôçí åíôïëÞ HELP ACCESS LEVELS).
|
||||
The LEVELS command allows fine control over the meaning of
|
||||
the numeric access levels used for channels. With this
|
||||
command, you can define the access level required for most
|
||||
of %S's functions. (The SET FOUNDER and this command
|
||||
are always restricted to the channel founder.)
|
||||
|
||||
Ãéá íá äåßò ôçí ëßóôá ìå ôéò åíôïëÝò ðïõ ìðïñåßò íá áëëÜîåéò ôá levels, äåò
|
||||
ôçí åíôïëÞ HELP LEVELS DESC.
|
||||
LEVELS SET allows the access level for a function or group of
|
||||
functions to be changed. LEVELS DISABLE (or DIS for short)
|
||||
disables an automatic feature or disallows access to a
|
||||
function by anyone, INCLUDING the founder (although, the founder
|
||||
can always reenable it).
|
||||
|
||||
LEVELS LIST shows the current levels for each function or
|
||||
group of functions. LEVELS RESET resets the levels to the
|
||||
default levels of a newly-created channel (see
|
||||
HELP ACCESS LEVELS).
|
||||
|
||||
For a list of the features and functions whose levels can be
|
||||
set, see HELP LEVELS DESC.
|
||||
|
||||
CHAN_HELP_LEVELS_DESC
|
||||
Ôá áêüëïõèá feature/function êáôáëáâáßíïíôáé. Óçìåßùóç,
|
||||
@@ -4938,9 +5013,10 @@ CHAN_HELP_INVITE
|
||||
ðáñáðÜíù óôï êáíÜëé.
|
||||
|
||||
CHAN_HELP_UNBAN
|
||||
Óýíôáîç: UNBAN êáíÜëé
|
||||
Óýíôáîç: UNBAN êáíÜëé [nick]
|
||||
|
||||
ÆçôÜåé áðü ôïí %S íá áöáéñÝóåé üëá ôá bans áíÜëïãá ãéá ðïéï êáíÜëé ôïõ æçôÜò.
|
||||
Tells %S to remove all bans preventing you or the given
|
||||
user from entering the given channel.
|
||||
|
||||
Áðü default, ÷ñçóéìïðïéåßôáé áðü ôïõò AOPs Þ áõôïýò ðïõ Ý÷ïõí level 5 êáé
|
||||
ðáñáðÜíù óôï êáíÜëé.
|
||||
@@ -5000,15 +5076,6 @@ CHAN_HELP_GETKEY
|
||||
Óýíôáîç: GETKEY êáíÜëé
|
||||
|
||||
Óáò äåß÷íåé ôï êëåéäß ôïõ óõãêåêñéìÝíïõ êáíáëéïý.
|
||||
|
||||
CHAN_HELP_SENDPASS
|
||||
Óýíôáîç: SENDPASS êáíÜëé
|
||||
|
||||
ÓôÝëíåé ôïí êùäéêü ôïõ áíÜëïãïõ êáíáëéïý ìÝóù e-mail address
|
||||
óôïí founder ôïõ. ÁõôÞ ç åíôïëÞ åßíáé ÷ñÞóéìç
|
||||
ãéá üóïõò Ý÷ïõí ÷Üóåé ôïí êùäéêü.
|
||||
|
||||
×ñçóéìïðïéåßôáé ìüíï áðü IRC operators óå óõãêåêñéìÝíá äßêôõá.
|
||||
|
||||
CHAN_SERVADMIN_HELP
|
||||
|
||||
@@ -5016,21 +5083,6 @@ CHAN_SERVADMIN_HELP
|
||||
åíôïëÞ áíáãíþñéóçò ìÝóù êùäéêïý, ìðïñïýí íá äïýí ôçí access, AKICK,
|
||||
êáé ôá level ïðïéïõäÞðïôå êáíáëéïý.
|
||||
|
||||
CHAN_SERVADMIN_HELP_LOGOUT
|
||||
Óýíôáîç: LOGOUT êáíÜëé [øåõäþíõìï]
|
||||
|
||||
Ìå áõôÞ ôçí åíôïëÞ, Ýíáò founder Þ êÜðïéïò ðïõ Ý÷åé âáèìü founder êÜíåé ôï
|
||||
áíôßèåôï áðü ôçí åíôïëÞ áíáãíþñéóçò (no-identify).
|
||||
|
||||
Ìðïñåß Ýíáò founder åíüò êáíáëéïý, íá êÜíåé log out ïðïéïäÞðïôå,
|
||||
áêüìá êáé ôïí åáõôü ôïõ.
|
||||
|
||||
Áí åßóáé Services Operator, ìðïñåßò íá êÜíåéò log out
|
||||
ïðïéïäÞðïå áðü ôï êáíÜëé ÷ùñßò íá åßóáé ï founder Þ íá ãßíåéò ï founder
|
||||
ôïõ êáíáëéïý. Åðßóçò, ìðïñåßò íá ÷ñçóéìïðïéÞóåéò áõôÞ ôçí ðáñÜìåôñï ãéá
|
||||
øåõäþíõìï; ìå áõôü èá êÜíåéò log out üëïõò ôïõò áíáãíùñéóìÝíïõò (identified)
|
||||
÷ñÞóôåò ôïõ êáíáëéïý.
|
||||
|
||||
CHAN_SERVADMIN_HELP_DROP
|
||||
Óýíôáîç: DROP êáíÜëé
|
||||
|
||||
@@ -5056,8 +5108,8 @@ CHAN_SERVADMIN_HELP_SET_NOEXPIRE
|
||||
|
||||
CHAN_SERVADMIN_HELP_INFO
|
||||
|
||||
Ïé Services Operators ìðïñïýí íá ÷ñçóéìïðïéÞóïõí ôçí ðáñÜìåôñï ALL ãéá êÜèå
|
||||
êáíÜëé.
|
||||
Services Operators with the chanserv/auspex permission can
|
||||
use the ALL parameter with any channel.
|
||||
|
||||
CHAN_SERVADMIN_HELP_LIST
|
||||
Óýíôáîç: LIST pattern [FORBIDDEN] [NOEXPIRE]
|
||||
@@ -6484,3 +6536,15 @@ OPER_UMODE_UNSUPPORTED
|
||||
OPER_SUPER_ADMIN_NOT_ENABLED
|
||||
SuperAdmin setting not enabled in services.conf
|
||||
|
||||
OPER_HELP_SYNC
|
||||
Syntax: SQLSYNC
|
||||
|
||||
This command syncs your databases with SQL. You should
|
||||
only have to execute this command once, when you initially
|
||||
import your databases into SQL.
|
||||
OPER_HELP_CMD_SQLSYNC
|
||||
SQLSYNC Import your databases to SQL
|
||||
OPER_SYNC_UPDATING
|
||||
Updating MySQL.
|
||||
OPER_SYNC_UPDATED
|
||||
Finished updating MySQL.
|
||||
|
||||
+242
-183
@@ -1,6 +1,6 @@
|
||||
# Hungarian (magyar) language file.
|
||||
#
|
||||
# (C) 2003-2008 Anope Team
|
||||
# (C) 2003-2010 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Translated by:
|
||||
@@ -869,6 +869,24 @@ NICK_SENDPASS_LINE_5
|
||||
NICK_SENDPASS_OK
|
||||
%s nick jelszava elküldve.
|
||||
|
||||
# RESETPASS responces
|
||||
NICK_RESETPASS_SYNTAX
|
||||
RESETPASS nickname
|
||||
NICK_RESETPASS_SUBJECT
|
||||
Reset password request for %s
|
||||
NICK_RESETPASS_MESSAGE
|
||||
Hi,
|
||||
|
||||
You have requested to have the password for %s reset.
|
||||
To reset your password, type %R%s CONFIRM %s
|
||||
If you don't know why this mail is sent to you, please ignore it silently.
|
||||
|
||||
PLEASE DON'T ANSWER TO THIS MAIL
|
||||
|
||||
%s administrators.
|
||||
NICK_RESETPASS_COMPLETE
|
||||
Password reset email for %s has been sent.
|
||||
|
||||
# FORBID válaszok
|
||||
NICK_SUSPEND_SYNTAX
|
||||
SUSPEND nickname reason
|
||||
@@ -906,10 +924,6 @@ NICK_IS_PREREG
|
||||
A nick az emailben elküldött kóddal való aktíválásra vár a regisztráció befejezéséhez.
|
||||
NICK_ENTER_REG_CODE
|
||||
A kód a %s címre lett küldve, írd be %R%s confirm <kód> a regisztráció befejezéséhez.
|
||||
NICK_CONFIRM_NOT_FOUND
|
||||
Regisztráció 1 lépése lehet, hogy elévült, írd be: "%R%s register <jelszó> <email>".
|
||||
NICK_CONFIRM_INVALID
|
||||
Érvénytelen kód, ellenõrizze az e-mailben, majd próbálja újra.
|
||||
NICK_REG_MAIL_SUBJECT
|
||||
Nicknév Regisztráció (%s)
|
||||
NICK_REG_MAIL_HEAD
|
||||
@@ -929,6 +943,16 @@ NICK_GETPASS_PASSCODE_IS
|
||||
NICK_FORCE_REG
|
||||
A %s nicknév érvényesítve.
|
||||
|
||||
# CONFIRM responces
|
||||
NICK_CONFIRM_NOT_FOUND
|
||||
Regisztráció 1 lépése lehet, hogy elévült, írd be: "%R%s register <jelszó> <email>".
|
||||
NICK_CONFIRM_INVALID
|
||||
Érvénytelen kód, ellenõrizze az e-mailben, majd próbálja újra.
|
||||
NICK_CONFIRM_EXPIRED
|
||||
Your password request has expired.
|
||||
NICK_CONFIRM_SUCCESS
|
||||
You are now identified for your nick. Change your password using "%R%s SET PASSWORD newpassword" now.
|
||||
|
||||
###########################################################
|
||||
#
|
||||
# ChanServ üzenetek
|
||||
@@ -1008,6 +1032,12 @@ CHAN_LEVEL_TOPIC
|
||||
Használhatja a TOPIC parancsot
|
||||
CHAN_LEVEL_INFO
|
||||
Használhatja az INFO parancsot az ALL opcióval
|
||||
CHAN_LEVEL_AUTOOWNER
|
||||
Automatic mode +q
|
||||
CHAN_LEVEL_OWNER
|
||||
Allowed to use OWNER command
|
||||
CHAN_LEVEL_OWNERME
|
||||
Allowed to (de)owner him/herself
|
||||
|
||||
# Automatikus válaszok
|
||||
CHAN_IS_REGISTERED
|
||||
@@ -1025,7 +1055,7 @@ CHAN_X_INVALID
|
||||
|
||||
# REGISTER responses
|
||||
CHAN_REGISTER_SYNTAX
|
||||
REGISTER #szoba jelszó leírás
|
||||
REGISTER #szoba leírás
|
||||
CHAN_REGISTER_DISABLED
|
||||
Sajnálom, a csatorna regisztráció jelenleg szünetel.
|
||||
CHAN_REGISTER_NOT_LOCAL
|
||||
@@ -1044,36 +1074,11 @@ CHAN_REGISTRATION_FAILED
|
||||
Sajnálom, regisztráció sikertelen.
|
||||
CHAN_REGISTERED
|
||||
Regisztráltam a %s csatornát a (%s) nickre.
|
||||
CHAN_PASSWORD_IS
|
||||
Csatorna jelszava: %s - Jegyezd fel a késõbbi használathoz.
|
||||
CHAN_REGISTER_NONE_CHANNEL
|
||||
You have attempted to register a nonexistent channel %s
|
||||
CHAN_SYMBOL_REQUIRED
|
||||
Please use the symbol of # when attempting to register
|
||||
|
||||
|
||||
# IDENTIFY válaszok
|
||||
CHAN_IDENTIFY_SYNTAX
|
||||
IDENTIFY #szoba jelszó
|
||||
CHAN_IDENTIFY_FAILED
|
||||
Sajnálom, azonosítás sikertelen.
|
||||
CHAN_IDENTIFY_SUCCEEDED
|
||||
Jelszavad elfogadva - founder szintû a hozzáférésed a %s csatornán.
|
||||
|
||||
# LOGOUT válaszok
|
||||
CHAN_LOGOUT_SYNTAX
|
||||
LOGOUT #szoba nicknév
|
||||
CHAN_LOGOUT_SERVADMIN_SYNTAX
|
||||
LOGOUT #szoba [nicknév]
|
||||
CHAN_LOGOUT_SUCCEEDED
|
||||
%s felhasználó kijelentkezett a %s csatornáról.
|
||||
CHAN_LOGOUT_ALL_SUCCEEDED
|
||||
Minden felhasználó kijelentkezett a %s csatornáról (except the channel founder).
|
||||
CHAN_LOGOUT_FOUNDER_FAILED
|
||||
You may not log out of %s (you are founder).
|
||||
CHAN_LOGOUT_NOT_LOGGEDIN
|
||||
%s was not logged into %s.
|
||||
|
||||
# DROP válaszok
|
||||
CHAN_DROP_SYNTAX
|
||||
DROP #szoba
|
||||
@@ -1104,14 +1109,6 @@ CHAN_SUCCESSOR_UNSET
|
||||
CHAN_SUCCESSOR_IS_FOUNDER
|
||||
%s nem lehet a %s csatorna successora, mert õ a founder is.
|
||||
|
||||
# SET PASSWORD válaszok
|
||||
CHAN_SET_PASSWORD_FAILED
|
||||
A jelszó beállítása sikertelen.
|
||||
CHAN_PASSWORD_CHANGED
|
||||
%s csatorna jelszava megváltozott.
|
||||
CHAN_PASSWORD_CHANGED_TO
|
||||
%s csatorna új jelszava: %s.
|
||||
|
||||
# SET DESC válaszok
|
||||
CHAN_DESC_CHANGED
|
||||
%s csatorna leírás megváltoztatva: %s.
|
||||
@@ -1243,6 +1240,14 @@ CHAN_SET_XOP_ON
|
||||
CHAN_SET_XOP_OFF
|
||||
xOP lists system for %s is now OFF.
|
||||
|
||||
# SET PERSISTANT responces
|
||||
CHAN_SET_PERSIST_SYNTAX
|
||||
SET channel PERSIST {ON | OFF}
|
||||
CHAN_SET_PERSIST_ON
|
||||
Channel %s is now persistant.
|
||||
CHAN_SET_PERSIST_OFF
|
||||
Channel %s is no longer persistant.
|
||||
|
||||
# SET NOEXPIRE válaszok
|
||||
CHAN_SET_NOEXPIRE_SYNTAX
|
||||
SET #szoba NOEXPIRE {ON | OFF}
|
||||
@@ -1262,6 +1267,37 @@ CHAN_XOP_ACCESS
|
||||
CHAN_XOP_NOT_AVAILABLE
|
||||
xOP system is not available.
|
||||
|
||||
# QOP messages
|
||||
CHAN_QOP_SYNTAX
|
||||
QOP channel {ADD|DEL|LIST|CLEAR} [nick | entry-list]
|
||||
CHAN_QOP_DISABLED
|
||||
Sorry, channel QOP list modification is temporarily disabled.
|
||||
CHAN_QOP_NICKS_ONLY
|
||||
Channel QOP lists may only contain registered nicknames.
|
||||
CHAN_QOP_ADDED
|
||||
%s added to %s QOP list.
|
||||
CHAN_QOP_MOVED
|
||||
%s moved to %s QOP list.
|
||||
CHAN_QOP_NO_SUCH_ENTRY
|
||||
No such entry (#%d) on %s QOP list.
|
||||
CHAN_QOP_NOT_FOUND
|
||||
%s not found on %s QOP list.
|
||||
CHAN_QOP_NO_MATCH
|
||||
No matching entries on %s QOP list.
|
||||
CHAN_QOP_DELETED
|
||||
%s deleted from %s QOP list.
|
||||
CHAN_QOP_DELETED_ONE
|
||||
Deleted 1 entry from %s QOP list.
|
||||
CHAN_QOP_DELETED_SEVERAL
|
||||
Deleted %d entries from %s QOP list.
|
||||
CHAN_QOP_LIST_EMPTY
|
||||
%s QOP list is empty.
|
||||
CHAN_QOP_LIST_HEADER
|
||||
QOP list for %s:
|
||||
Num Nick
|
||||
CHAN_QOP_CLEAR
|
||||
Channel %s QOP list has been cleared.
|
||||
|
||||
# AOP üzenetek
|
||||
CHAN_AOP_SYNTAX
|
||||
AOP #szoba { ADD | DEL | LIST | CLEAR } [ nick | sorszám ]
|
||||
@@ -1396,7 +1432,7 @@ CHAN_VOP_CLEAR
|
||||
|
||||
# ACCESS messages
|
||||
CHAN_ACCESS_SYNTAX
|
||||
ACCESS#szoba{ ADD | DEL | LIST | CLEAR } [ nick [ szint ] | sorszám ]
|
||||
ACCESS #szoba { ADD | DEL | LIST | VIEW | CLEAR } [ nick [ szint ] | sorszám ]
|
||||
CHAN_ACCESS_XOP
|
||||
Nem használhatod ezt a parancsot.
|
||||
Használd az AOP, SOP és VOP parancsokat helyette.
|
||||
@@ -1445,6 +1481,12 @@ CHAN_ACCESS_LIST_XOP_FORMAT
|
||||
%3d %s %s
|
||||
CHAN_ACCESS_LIST_AXS_FORMAT
|
||||
%3d %4d %s
|
||||
CHAN_ACCESS_VIEW_XOP_FORMAT
|
||||
%3d %s %s
|
||||
by %s, last seen %s
|
||||
CHAN_ACCESS_VIEW_AXS_FORMAT
|
||||
%3d %4d %s
|
||||
by %s, last seen %s
|
||||
|
||||
# AKICK válaszok
|
||||
CHAN_ACCESS_CLEAR
|
||||
@@ -1506,6 +1548,8 @@ CHAN_LEVELS_RANGE
|
||||
A szintnek kizárólag %d és %d között kell lennie.
|
||||
CHAN_LEVELS_CHANGED
|
||||
%s szintjének új értéke a (%s) csatornán: %d.
|
||||
CHAN_LEVELS_CHANGED_FOUNDER
|
||||
Level for %s on channel %s changed to founder only.
|
||||
CHAN_LEVELS_UNKNOWN
|
||||
%s beállítás nem ismert. Írd be %R%s HELP LEVELS DESC
|
||||
az érvényes beállítások listájának megtekintéséhez.
|
||||
@@ -1589,6 +1633,8 @@ CHAN_INFO_OPT_TOPICLOCK
|
||||
Témaváltás lezárása
|
||||
CHAN_INFO_OPT_XOP
|
||||
xOP lista rendszer
|
||||
CHAN_INFO_OPT_PERSIST
|
||||
Persistant
|
||||
CHAN_INFO_OPT_NONE
|
||||
Nincs
|
||||
CHAN_INFO_MODE_LOCK
|
||||
@@ -1617,12 +1663,17 @@ CHAN_INVITE_ALREADY_IN
|
||||
You are already in %s!
|
||||
CHAN_INVITE_SUCCESS
|
||||
You have been invited to %s.
|
||||
CHAN_INVITE_OTHER_SUCCESS
|
||||
%s has been invited to %s.
|
||||
|
||||
|
||||
# UNBAN válaszok
|
||||
CHAN_UNBAN_SYNTAX
|
||||
UNBAN #szoba
|
||||
UNBAN #szoba [nick]
|
||||
CHAN_UNBANNED
|
||||
%s csatornán a tiltást levetetted magadról.
|
||||
CHAN_UNBANNED_OTHER
|
||||
%s has been unbanned from %s.
|
||||
|
||||
# TOPIC válaszok
|
||||
CHAN_TOPIC_SYNTAX
|
||||
@@ -1648,43 +1699,13 @@ CHAN_CLEARED_USERS
|
||||
CHAN_CLEARED_INVITES
|
||||
All invites on channel %s have been removed.
|
||||
|
||||
# GETPASS válaszok
|
||||
CHAN_GETPASS_SYNTAX
|
||||
GETPASS #szoba
|
||||
CHAN_GETPASS_UNAVAILABLE
|
||||
GETPASS elérhetetlen, mig az encryption használatban van.
|
||||
CHAN_GETPASS_PASSWORD_IS
|
||||
A (%s) csatorna jelszava: %s.
|
||||
|
||||
# SENDPASS válaszok
|
||||
# GETKEY válaszok
|
||||
CHAN_GETKEY_SYNTAX
|
||||
GETKEY channel
|
||||
CHAN_GETKEY_NOKEY
|
||||
The channel %s has no key.
|
||||
CHAN_GETKEY_KEY
|
||||
Key for channel %s is %s.
|
||||
|
||||
# SENDPASS responses
|
||||
CHAN_SENDPASS_SYNTAX
|
||||
SENDPASS #szoba
|
||||
CHAN_SENDPASS_UNAVAILABLE
|
||||
SENDPASS elérhetetlen, amíg az encryption használatban van
|
||||
CHAN_SENDPASS_SUBJECT
|
||||
Csatorna jelszava: (%s)
|
||||
CHAN_SENDPASS_HEAD
|
||||
Hi,
|
||||
CHAN_SENDPASS_LINE_1
|
||||
Kérted a szoba jelszavának megküldését %s címre.
|
||||
CHAN_SENDPASS_LINE_2
|
||||
%s a szobajeszó.Biztonság kedvéért váltóztasd meg olvasás után
|
||||
CHAN_SENDPASS_LINE_3
|
||||
Ha nem te kérted a levelet akkor töréld és feljts el
|
||||
CHAN_SENDPASS_LINE_4
|
||||
KÉRLEN NE VÁLASZOLJ A LEVÉLRE!
|
||||
CHAN_SENDPASS_LINE_5
|
||||
%s administrators.
|
||||
CHAN_SENDPASS_OK
|
||||
Jelszó %s elküldve.
|
||||
|
||||
# FORBID válaszok
|
||||
CHAN_FORBID_SYNTAX
|
||||
@@ -2138,6 +2159,8 @@ BOT_UNASSIGN_SYNTAX
|
||||
UNASSIGN #szoba
|
||||
BOT_UNASSIGN_UNASSIGNED
|
||||
Nincsen bot kijelölve %s szobában többet.
|
||||
BOT_UNASSIGN_PERSISTANT_CHAN
|
||||
You can not unassign bots while persist is set on the channel.
|
||||
|
||||
# INFO válaszok
|
||||
BOT_INFO_SYNTAX
|
||||
@@ -2930,8 +2953,6 @@ OPER_DEFCON_SYNTAX
|
||||
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
|
||||
A Defcon rendszert engedélyezni kell a services.conf-ban
|
||||
OPER_DEFCON_CHANGED
|
||||
Szervíz új DEFCON szintje %d
|
||||
OPER_DEFCON_WALL
|
||||
@@ -2950,6 +2971,10 @@ OPER_MODULE_REMOVE_FAIL
|
||||
Nem sikerült eltávolítani a %s modult
|
||||
OPER_MODULE_NO_UNLOAD
|
||||
This module can not be unloaded.
|
||||
OPER_MODULE_ALREADY_LOADED
|
||||
Module %s is already loaded.
|
||||
OPER_MODULE_ISNT_LOADED
|
||||
Module %s isn't loaded.
|
||||
OPER_MODULE_LOAD_SYNTAX
|
||||
MODLOAD Fájlnév
|
||||
OPER_MODULE_UNLOAD_SYNTAX
|
||||
@@ -3327,6 +3352,8 @@ NICK_HELP_CMD_RELEASE
|
||||
RELEASE Visszaadja a neved a RECOVER után
|
||||
NICK_HELP_CMD_SENDPASS
|
||||
SENDPASS Elfelejtetted a jelszavad? Próbáld ezt
|
||||
NICK_HELP_CMD_RESETPASS
|
||||
RESETPASS Helps you reset lost passwords.
|
||||
NICK_HELP_CMD_GHOST
|
||||
GHOST Disconnects a "ghost" IRC session using your nick
|
||||
NICK_HELP_CMD_ALIST
|
||||
@@ -3908,6 +3935,12 @@ NICK_HELP_SENDPASS
|
||||
|
||||
Korlátozni lehet IRC operátorokra egyes hálózatokon.
|
||||
|
||||
NICK_HELP_RESETPASS
|
||||
Syntax: RESETPASS nickname
|
||||
|
||||
Sends a code key to the nickname with instructions on how to
|
||||
reset their password.
|
||||
|
||||
NICK_HELP_CONFIRM
|
||||
Syntax: CONFIRM passcodE
|
||||
|
||||
@@ -3917,6 +3950,14 @@ NICK_HELP_CONFIRM
|
||||
is sent to your e-mail address in the first step of the
|
||||
registration process. For more information about the first
|
||||
stage of the registration process, type: %R%S HELP REGISTER
|
||||
|
||||
This is also used after the RESETPASS command has been used to
|
||||
force identify you to your nick so you may change your password.
|
||||
|
||||
NICK_HELP_CONFIRM_OPER
|
||||
|
||||
Additionally, Services Operators with the nickserv/confirm permission can
|
||||
replace passcode with a users nick to force validate them.
|
||||
|
||||
NICK_HELP_RESEND
|
||||
Syntax: RESEND
|
||||
@@ -4079,10 +4120,10 @@ CHAN_HELP_CMD_STATUS
|
||||
szintjét a megadott csatornán
|
||||
CHAN_HELP_CMD_REGISTER
|
||||
REGISTER Szoba regisztrálása
|
||||
CHAN_HELP_CMD_IDENTIFY
|
||||
IDENTIFY Azonosíthatod magad a jelszavaddal
|
||||
CHAN_HELP_CMD_SET
|
||||
SET Beállíthatod a csatornád opcióit
|
||||
CHAN_HELP_CMD_QOP
|
||||
QOP Modify the list of QOP users
|
||||
CHAN_HELP_CMD_AOP
|
||||
AOP AutoOperátor lista beállítása
|
||||
CHAN_HELP_CMD_SOP
|
||||
@@ -4095,8 +4136,6 @@ CHAN_HELP_CMD_AKICK
|
||||
AKICK AutoKirúgás listára teheted a "rossz" usereket
|
||||
CHAN_HELP_CMD_DROP
|
||||
DROP Törölheted a csatornád regisztrációját
|
||||
CHAN_HELP_CMD_SENDPASS
|
||||
SENDPASS Elveszett a jelszavad? Jelszó küldés.
|
||||
CHAN_HELP_CMD_BAN
|
||||
BAN Bans a selected nick on a channel
|
||||
CHAN_HELP_CMD_CLEAR
|
||||
@@ -4113,14 +4152,12 @@ CHAN_HELP_CMD_KICK
|
||||
KICK Kicks a selected nick from a channel
|
||||
CHAN_HELP_CMD_LIST
|
||||
LIST Lists all registered channels matching the given pattern
|
||||
CHAN_HELP_CMD_LOGOUT
|
||||
LOGOUT This command will logout the selected nickname
|
||||
CHAN_HELP_CMD_OP
|
||||
OP Gives Op status to a selected nick on a channel
|
||||
CHAN_HELP_CMD_TOPIC
|
||||
TOPIC Manipulate the topic of the specified channel
|
||||
CHAN_HELP_CMD_UNBAN
|
||||
UNBAN Remove all bans preventing you from entering a channel
|
||||
UNBAN Remove all bans preventing a user from entering a channel
|
||||
CHAN_HELP_CMD_VOICE
|
||||
VOICE Voices a selected nick on a channel
|
||||
CHAN_HELP_CMD_VOP
|
||||
@@ -4139,10 +4176,6 @@ CHAN_HELP_CMD_OWNER
|
||||
OWNER Gives you owner status on channel
|
||||
CHAN_HELP_CMD_PROTECT
|
||||
PROTECT Protects a selected nick on a channel
|
||||
CHAN_HELP_CMD_ADMIN
|
||||
ADMIN Protects a selected nick on a channel
|
||||
CHAN_HELP_CMD_DEADMIN
|
||||
DEADMIN Deprotects a selected nick on a channel
|
||||
CHAN_HELP_CMD_DEOP
|
||||
DEOP Deops a selected nick on a channel
|
||||
|
||||
@@ -4164,54 +4197,32 @@ CHAN_HELP_EXPIRES
|
||||
Automatikusan dropolásra kerülnek.
|
||||
|
||||
CHAN_HELP_REGISTER
|
||||
Syntax: REGISTER #szoba jelszó leírás
|
||||
Syntax: REGISTER #szoba leírás
|
||||
|
||||
A csatornádat regisztrálja a %S adatbázisába.
|
||||
Hogy kiadhasd ezt a paracsot operátornak kell lenned
|
||||
az adott csatornán.
|
||||
A jelszót használhatod az IDENTIFY parancs segitségével
|
||||
azonosításra, mielõtt beállításokat eszközölsz a
|
||||
késöbbiekben az adott csatonán.
|
||||
|
||||
Az utolsó paraméternek, tartalmaznia kell
|
||||
a szoba általános leírását.
|
||||
|
||||
Amikor regisztrálsz egy csatornát, te leszel a "founder".
|
||||
szoba founderjének van lehetõsége a szoba beállításait,
|
||||
a hozzáférési listáját, az autókirúgás listát, az infókat
|
||||
megváltoztatni; a %S automatikusan megadja belépéskor a
|
||||
founder hozzáférési jogot és szoba operátori jogokat.
|
||||
Nézd meg az ACCESS parancsot (%R%S HELP ACCESS),
|
||||
hogy infomálódj a különbözõ szintû kiváltságok adásáról
|
||||
(a szoba többi felhasználója részére).
|
||||
|
||||
Megjegyzés: Ha regisztrálsz egy csatornát, elõször
|
||||
regisztrálnod kell a nickneved és azonosítanod kell
|
||||
magad. (NickServ identify jelszó)
|
||||
Ha még nem nézted meg, akkor lásd még: %R%s HELP.
|
||||
|
||||
CHAN_HELP_IDENTIFY
|
||||
Syntax: IDENTIFY #szoba jelszó
|
||||
|
||||
%S a parancs beírása után founder szintet ad a csatornán.
|
||||
Több parancs kiadása elõtt szükséges, hogy használd ezt.
|
||||
A jelszónak egyeznie kell a megadott jelszóval.
|
||||
|
||||
CHAN_HELP_LOGOUT
|
||||
Syntax: LOGOUT #szoba nicknév
|
||||
|
||||
Ez a parancs kijelentkezésre birja a nicket, vagyis újra
|
||||
kell azonosítania, hogy újra megkapja a hozzáférést.
|
||||
|
||||
Ha te vagy a szoba founderje, akkor bárkit ki tudsz
|
||||
jelentkeztetni, vagy ki tudsz jelentkezni akár te is.
|
||||
Registers a channel in the %S database. In order
|
||||
to use this command, you must first be a channel operator
|
||||
on the channel you're trying to register.
|
||||
The description, which must be included, is a
|
||||
general description of the channel's purpose.
|
||||
|
||||
When you register a channel, you are recorded as the
|
||||
"founder" of the channel. The channel founder is allowed
|
||||
to change all of the channel settings for the channel;
|
||||
%S will also automatically give the founder
|
||||
channel-operator privileges when s/he enters the channel.
|
||||
See the ACCESS command (%R%S HELP ACCESS) for
|
||||
information on giving a subset of these privileges to
|
||||
other channel users.
|
||||
|
||||
NOTICE: In order to register a channel, you must have
|
||||
first registered your nickname. If you haven't,
|
||||
%R%s HELP for information on how to do so.
|
||||
|
||||
CHAN_HELP_DROP
|
||||
Syntax: DROP #szoba
|
||||
|
||||
Törli a megnevezett szoba regisztrációját.
|
||||
Csak a szoba founder használhatja, akinek
|
||||
elõbb használnia kell az IDENTIFY parancsot.
|
||||
Csak a szoba founder használhatja.
|
||||
|
||||
CHAN_HELP_SET
|
||||
Syntax: SET #szoba opció paraméterek
|
||||
@@ -4241,6 +4252,7 @@ CHAN_HELP_SET
|
||||
SIGNKICK Sign kickek, melyek a KICK paranccsal történnek
|
||||
TOPICLOCK Témaváltás letiltása
|
||||
XOP Xop (Sop, Aop, Hop, Vop) lista rendszer bekapcsolása
|
||||
PERSIST Set the channel as permanent
|
||||
|
||||
Írd be: %R%S HELP SET opció bõvebb információért az
|
||||
adott opcióról.
|
||||
@@ -4262,12 +4274,6 @@ CHAN_HELP_SET_SUCCESSOR
|
||||
is ez történik, ha nem volt megadva successor.
|
||||
A nicknek regisztrálnak kell lennie.
|
||||
|
||||
CHAN_HELP_SET_PASSWORD
|
||||
Syntax: SET #szoba PASSWORD jelszó
|
||||
|
||||
Beállítja a founder jelszót a csatornára, amivel
|
||||
a founder azonosíthatja magát.
|
||||
|
||||
CHAN_HELP_SET_DESC
|
||||
Syntax: SET #szoba DESC leírás
|
||||
|
||||
@@ -4430,6 +4436,29 @@ CHAN_HELP_SET_XOP
|
||||
|
||||
Az xOP lista rendszerrõl az access lista rendszerre való
|
||||
áttérés nem okoz gondot.
|
||||
|
||||
CHAN_HELP_SET_PERSIST
|
||||
Syntax: SET channel PERSIST {ON | OFF}
|
||||
|
||||
Enables or disables the persistant channel setting.
|
||||
When persistant is set, the service bot will remain
|
||||
in the channel when it has emptied of users.
|
||||
|
||||
If your IRCd does not a permanent (persistant) channel
|
||||
mode you must have a service bot in your channel to
|
||||
set persist on, and it can not be unassigned while persist
|
||||
is on.
|
||||
|
||||
If this network does not have BotServ enabled and does
|
||||
not have a permanent channel mode, ChanServ will
|
||||
join your channel when you set persist on (and leave when
|
||||
it has been set off).
|
||||
|
||||
If your IRCd has a permanent (persistant) channel mode
|
||||
and is is set or unset (for any reason, including MLOCK),
|
||||
persist is automatically set and unset for the channel aswell.
|
||||
Additionally, services will set or unset this mode when you
|
||||
set persist on or off.
|
||||
|
||||
CHAN_HELP_SET_OPNOTICE
|
||||
Syntax: SET #szoba OPNOTICE {ON | OFF}
|
||||
@@ -4439,6 +4468,45 @@ CHAN_HELP_SET_OPNOTICE
|
||||
fog küldeni a csatornára, amikor a felhasználók használják
|
||||
az OP, VOICE, vagy a hozzájuk kapcsolódó parancsokat a
|
||||
szoban.
|
||||
|
||||
CHAN_HELP_QOP
|
||||
Syntax: QOP channel ADD nick
|
||||
QOP channel DEL {nick | entry-num | list}
|
||||
QOP channel LIST [mask | list]
|
||||
QOP channel CLEAR
|
||||
|
||||
Maintains the QOP (AutoOwner) list for a channel. The QOP
|
||||
list gives users the right to be auto-owner on your channel,
|
||||
which gives them almost (or potentially, total) access.
|
||||
|
||||
The QOP ADD command adds the given nickname to the
|
||||
QOP list.
|
||||
|
||||
The QOP DEL command removes the given nick from the
|
||||
QOP list. If a list of entry numbers is given, those
|
||||
entries are deleted. (See the example for LIST below.)
|
||||
|
||||
The QOP LIST command displays the QOP list. If
|
||||
a wildcard mask is given, only those entries matching the
|
||||
mask are displayed. If a list of entry numbers is given,
|
||||
only those entries are shown; for example:
|
||||
|
||||
QOP #channel LIST 2-5,7-9
|
||||
Lists QOP entries numbered 2 through 5 and
|
||||
7 through 9.
|
||||
|
||||
The QOP CLEAR command clears all entries of the
|
||||
QOP list.
|
||||
|
||||
The QOP commands are limited to
|
||||
founders (unless SECUREOPS is off). However, any user on the
|
||||
QOP list may use the QOP LIST command.
|
||||
|
||||
This command may have been disabled for your channel, and
|
||||
in that case you need to use the access list. See
|
||||
%R%S HELP ACCESS for information about the access list,
|
||||
and %R%S HELP SET XOP to know how to toggle between
|
||||
the access list and xOP list systems.
|
||||
|
||||
CHAN_HELP_AOP
|
||||
Syntax: AOP #szoba ADD nick
|
||||
@@ -4618,6 +4686,7 @@ CHAN_HELP_ACCESS
|
||||
Syntax: ACCESS #szoba ADD nick szint
|
||||
ACCESS #szoba DEL {nick | sorszám | lista}
|
||||
ACCESS #szoba LIST [maszk | lista]
|
||||
ACCESS #szoba VIEW [maszk | lista]
|
||||
ACCESS #szoba CLEAR
|
||||
|
||||
Access lista a csatornán. A hozzáférési lista (access)
|
||||
@@ -4646,6 +4715,9 @@ CHAN_HELP_ACCESS
|
||||
Listázza azokat a usereket, akik 2 és 5 között illetve
|
||||
7-tõl 9-ig szerepelnek a listán.
|
||||
|
||||
The ACCESS VIEW command displays the access list similar
|
||||
to ACCESS LIST but shows the creator and last used time.
|
||||
|
||||
Az ACCESS CLEAR parancs töröl minden bejegyzés a szoba
|
||||
hozzáférési listájáról.
|
||||
|
||||
@@ -4720,33 +4792,31 @@ CHAN_HELP_AKICK
|
||||
törölhetõ.
|
||||
|
||||
CHAN_HELP_LEVELS
|
||||
Syntax: LEVELS #szoba SET típus szint
|
||||
Syntax: LEVELS #szoba SET típus [szint|FOUNDER]
|
||||
LEVELS #szoba {DIS | DISABLE} típus
|
||||
LEVELS #szoba LIST
|
||||
LEVELS #szoba RESET
|
||||
|
||||
A LEVELS segítségével a számokkal definiált hozzáférési
|
||||
szintek módosíthatók.
|
||||
Ezzel a paranccsal, definiálhatsz hozzáférési szinteket,
|
||||
melyek szükségesek a %S funkcióihoz.
|
||||
Ezt a parancsot csak a founder használhatja.
|
||||
The LEVELS command allows fine control over the meaning of
|
||||
the numeric access levels used for channels. With this
|
||||
command, you can define the access level required for most
|
||||
of %S's functions. (The SET FOUNDER and this command
|
||||
are always restricted to the channel founder.)
|
||||
|
||||
LEVELS SET biztosítja, hogy megváltoztasd a hozzáférési
|
||||
szintjét egy adott funkciónak vagy funkciók csoportjának.
|
||||
LEVELS SET allows the access level for a function or group of
|
||||
functions to be changed. LEVELS DISABLE (or DIS for short)
|
||||
disables an automatic feature or disallows access to a
|
||||
function by anyone, INCLUDING the founder (although, the founder
|
||||
can always reenable it).
|
||||
|
||||
A LEVELS DISABLE (vagy DIS röviden) letiltja
|
||||
az automatikus lehetõségeket, vagy megtiltja a hozzáférést
|
||||
bizonyos funkciókhoz, ezeket csak a founder változtathatja
|
||||
|
||||
LEVELS LIST kiírja a jelenlegi hozzáférési szintjeit
|
||||
a különbözõ funkcióknak.
|
||||
|
||||
LEVELS RESET visszaállítja az alapértelmezett értékeket.
|
||||
Lásd még: HELP ACCESS LEVELS.
|
||||
|
||||
Ha szeretnéd megnézni a funkciók és lehetõségek listáját.
|
||||
akkor lesd meg a HELP LEVELS DESC leírást is.
|
||||
LEVELS LIST shows the current levels for each function or
|
||||
group of functions. LEVELS RESET resets the levels to the
|
||||
default levels of a newly-created channel (see
|
||||
HELP ACCESS LEVELS).
|
||||
|
||||
For a list of the features and functions whose levels can be
|
||||
set, see HELP LEVELS DESC.
|
||||
|
||||
CHAN_HELP_LEVELS_DESC
|
||||
A következõ lehetõségek/funkciók elérthetõek.
|
||||
Megjegyzés: az AUTODEOP és NOJOIN esetén maximum szintrõl
|
||||
@@ -4879,10 +4949,10 @@ CHAN_HELP_INVITE
|
||||
kell rendelkezned a csatornán, hogy használhasd.
|
||||
|
||||
CHAN_HELP_UNBAN
|
||||
Syntax: UNBAN #szoba
|
||||
Syntax: UNBAN #szoba [nick]
|
||||
|
||||
A %S leveszi rólad a kitiltást és szabadon
|
||||
beléphetsz a csatonára.
|
||||
Tells %S to remove all bans preventing you or the given
|
||||
user from entering the given channel.
|
||||
|
||||
Alapbeállítás szerint, min. AOP vagy 5-ös access szinttel
|
||||
kell rendelkezned, hogy használhasd.
|
||||
@@ -4940,35 +5010,12 @@ CHAN_HELP_GETKEY
|
||||
Syntax: GETKEY #szoba
|
||||
|
||||
Megadja a szoba kulcsot.
|
||||
|
||||
CHAN_HELP_SENDPASS
|
||||
Syntax: SENDPASS #szoba
|
||||
|
||||
Elküldi E-mailben a csatornádra beállított jelszót. Neked
|
||||
a szoba founderjének kell lenned, hogy használhasd ezt
|
||||
a parancsot és elõször azonosítanod kell magadat.
|
||||
|
||||
Lehet korlátozni IRC operatorok részére a hálózaton.
|
||||
|
||||
|
||||
CHAN_SERVADMIN_HELP
|
||||
|
||||
Szervíz adminok tudják droppolni a csatornákat anélkül,
|
||||
hogy a szoba jelszót használnának, és megnézhetika az
|
||||
access, AKICK, és beállitási szint listát a csatornán.
|
||||
|
||||
CHAN_SERVADMIN_HELP_LOGOUT
|
||||
Syntax: LOGOUT #szoba [nicknév]
|
||||
|
||||
A parancs naplózza a kijelentekeztetést, neki ójra kell
|
||||
azonosítani magukat,hogy visszakapják a hozzáféréseiket.
|
||||
|
||||
Ha ta vagy a csatörna alpító, képes vagy kijelentkeztetni
|
||||
mást, te képes vagy magad is.
|
||||
|
||||
Ha szervíz admin vagy akkor kijelentekeztethetsz valakit a
|
||||
csatornáról anélkül, hogy te lenneél a founder.Elhagyhatod
|
||||
a nincnév paramétert, és akkor az összes bejelentkezett
|
||||
felhasználót kijelentkezteted a csatornáról.
|
||||
|
||||
CHAN_SERVADMIN_HELP_DROP
|
||||
Syntax: DROP #szoba
|
||||
@@ -4992,11 +5039,11 @@ CHAN_SERVADMIN_HELP_SET_NOEXPIRE
|
||||
|
||||
Korlátozva Szervíz adminnak.
|
||||
|
||||
|
||||
CHAN_SERVADMIN_HELP_INFO
|
||||
|
||||
Szervíz adminok használhatják az ALL paramétert.
|
||||
|
||||
Services Operators with the chanserv/auspex permission can
|
||||
use the ALL parameter with any channel.
|
||||
|
||||
CHAN_SERVADMIN_HELP_LIST
|
||||
Syntax: LIST pattern[FORBIDDEN] [SUSPENDED] [NOEXPIRE]
|
||||
|
||||
@@ -6378,3 +6425,15 @@ OPER_UMODE_UNSUPPORTED
|
||||
OPER_SUPER_ADMIN_NOT_ENABLED
|
||||
SuperAdmin setting not enabled in services.conf
|
||||
|
||||
OPER_HELP_SYNC
|
||||
Syntax: SQLSYNC
|
||||
|
||||
This command syncs your databases with SQL. You should
|
||||
only have to execute this command once, when you initially
|
||||
import your databases into SQL.
|
||||
OPER_HELP_CMD_SQLSYNC
|
||||
SQLSYNC Import your databases to SQL
|
||||
OPER_SYNC_UPDATING
|
||||
Updating MySQL.
|
||||
OPER_SYNC_UPDATED
|
||||
Finished updating MySQL.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Italian language file.
|
||||
#
|
||||
# (C) 2003-2009 Anope Team
|
||||
# (C) 2003-2010 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Please read COPYING and README for further details.
|
||||
@@ -859,6 +859,24 @@ NICK_SENDPASS_LINE_5
|
||||
NICK_SENDPASS_OK
|
||||
La password di %s è stata inviata.
|
||||
|
||||
# RESETPASS responces
|
||||
NICK_RESETPASS_SYNTAX
|
||||
RESETPASS nickname
|
||||
NICK_RESETPASS_SUBJECT
|
||||
Reset password request for %s
|
||||
NICK_RESETPASS_MESSAGE
|
||||
Hi,
|
||||
|
||||
You have requested to have the password for %s reset.
|
||||
To reset your password, type %R%s CONFRM %s
|
||||
If you don't know why this mail is sent to you, please ignore it silently.
|
||||
|
||||
PLEASE DON'T ANSWER TO THIS MAIL!
|
||||
|
||||
%s administrators.
|
||||
NICK_RESETPASS_COMPLETE
|
||||
Password reset email for %s has been sent.
|
||||
|
||||
# SUSPEND responses
|
||||
NICK_SUSPEND_SYNTAX
|
||||
SUSPEND nick motivo
|
||||
@@ -896,10 +914,6 @@ NICK_IS_PREREG
|
||||
Questo nick è in attesa di un codice di attivazione via e-mail per completare la registrazione.
|
||||
NICK_ENTER_REG_CODE
|
||||
Un codice di attivazione è stato inviato a %s. Digita %R%s CONFIRM <codice> per completare la registrazione.
|
||||
NICK_CONFIRM_NOT_FOUND
|
||||
Il primo passo della registrazione potrebbe essere scaduto. Usa %R%s REGISTER <password> <e-mail>.
|
||||
NICK_CONFIRM_INVALID
|
||||
È stato inserito un codice di attivazione non valido. Controlla di nuovo la tua casella di posta e riprova.
|
||||
NICK_REG_MAIL_SUBJECT
|
||||
Registrazione del nick (%s)
|
||||
NICK_REG_MAIL_HEAD
|
||||
@@ -919,6 +933,16 @@ NICK_GETPASS_PASSCODE_IS
|
||||
NICK_FORCE_REG
|
||||
Il nick %s è stato confermato.
|
||||
|
||||
# CONFIRM responses
|
||||
NICK_CONFIRM_NOT_FOUND
|
||||
Il primo passo della registrazione potrebbe essere scaduto. Usa %R%s REGISTER <password> <e-mail>.
|
||||
NICK_CONFIRM_INVALID
|
||||
È stato inserito un codice di attivazione non valido. Controlla di nuovo la tua casella di posta e riprova.
|
||||
NICK_CONFIRM_EXPIRED
|
||||
Your password reset request has expired.
|
||||
NICK_CONFIRM_SUCCESS
|
||||
You are now identified for your nick. Change your password using "%R%s SET PASSWORD newpassword" now.
|
||||
|
||||
|
||||
|
||||
###########################################################################
|
||||
@@ -1000,6 +1024,12 @@ CHAN_LEVEL_TOPIC
|
||||
Permette l'uso del comando TOPIC
|
||||
CHAN_LEVEL_INFO
|
||||
Permette l'uso del comando INFO con l'opzione ALL
|
||||
CHAN_LEVEL_AUTOOWNER
|
||||
Automatic mode +q
|
||||
CHAN_LEVEL_OWNER
|
||||
Allowed to use OWNER command
|
||||
CHAN_LEVEL_OWNERME
|
||||
Allowed to (de)owner him/herself
|
||||
|
||||
# Automatic responses
|
||||
CHAN_IS_REGISTERED
|
||||
@@ -1017,7 +1047,7 @@ CHAN_X_INVALID
|
||||
|
||||
# REGISTER responses
|
||||
CHAN_REGISTER_SYNTAX
|
||||
REGISTER canale password descrizione
|
||||
REGISTER canale descrizione
|
||||
CHAN_REGISTER_DISABLED
|
||||
Spiacente, la registrazione dei canali è temporaneamente disabilitata.
|
||||
CHAN_REGISTER_NOT_LOCAL
|
||||
@@ -1036,36 +1066,11 @@ CHAN_REGISTRATION_FAILED
|
||||
Spiacente, la registrazione non è andata a buon fine.
|
||||
CHAN_REGISTERED
|
||||
Il canale %s è stato registrato sotto il tuo nick: %s.
|
||||
CHAN_PASSWORD_IS
|
||||
La tua password di canale è %s - non dimenticarla!
|
||||
CHAN_REGISTER_NONE_CHANNEL
|
||||
Hai provato a registrare un canale non esistente %s
|
||||
CHAN_SYMBOL_REQUIRED
|
||||
Per favore usa il simbolo # provando a registrare
|
||||
|
||||
|
||||
# IDENTIFY responses
|
||||
CHAN_IDENTIFY_SYNTAX
|
||||
IDENTIFY canale password
|
||||
CHAN_IDENTIFY_FAILED
|
||||
Spiacente, l'identificazione è fallita.
|
||||
CHAN_IDENTIFY_SUCCEEDED
|
||||
Password accettata - sei identificato come fondatore di %s.
|
||||
|
||||
# LOGOUT responses
|
||||
CHAN_LOGOUT_SYNTAX
|
||||
LOGOUT canale nick
|
||||
CHAN_LOGOUT_SERVADMIN_SYNTAX
|
||||
LOGOUT canale [nick]
|
||||
CHAN_LOGOUT_SUCCEEDED
|
||||
L'utente %s non è più identificato per il canale %s.
|
||||
CHAN_LOGOUT_ALL_SUCCEEDED
|
||||
Tutti gli utenti non sono più identificati per il canale %s (except the channel founder).
|
||||
CHAN_LOGOUT_FOUNDER_FAILED
|
||||
Non puoi eseguire il logout da %s (sei founder).
|
||||
CHAN_LOGOUT_NOT_LOGGEDIN
|
||||
%s non è stato loggato in %s.
|
||||
|
||||
# DROP responses
|
||||
CHAN_DROP_SYNTAX
|
||||
DROP canale
|
||||
@@ -1096,14 +1101,6 @@ CHAN_SUCCESSOR_UNSET
|
||||
CHAN_SUCCESSOR_IS_FOUNDER
|
||||
%s non può essere il successore del canale %s perché ne è il fondatore.
|
||||
|
||||
# SET PASSWORD responses
|
||||
CHAN_SET_PASSWORD_FAILED
|
||||
Spiacente, il cambio di password non è andato a buon fine.
|
||||
CHAN_PASSWORD_CHANGED
|
||||
La password di %s è stata cambiata.
|
||||
CHAN_PASSWORD_CHANGED_TO
|
||||
La password di %s è stata impostata a %s.
|
||||
|
||||
# SET DESC responses
|
||||
CHAN_DESC_CHANGED
|
||||
La descrizione di %s è stata impostata a %s.
|
||||
@@ -1235,6 +1232,14 @@ CHAN_SET_XOP_ON
|
||||
CHAN_SET_XOP_OFF
|
||||
Il sistema di liste xOP per %s è ora DISATTIVATO.
|
||||
|
||||
# SET PERSISTANT responces
|
||||
CHAN_SET_PERSIST_SYNTAX
|
||||
SET channel PERSIST {ON | OFF}
|
||||
CHAN_SET_PERSIST_ON
|
||||
Channel %s is now persistant.
|
||||
CHAN_SET_PERSIST_OFF
|
||||
Channel %s is no longer persistant.
|
||||
|
||||
# SET NOEXPIRE responses
|
||||
CHAN_SET_NOEXPIRE_SYNTAX
|
||||
SET canale NOEXPIRE {ON | OFF}
|
||||
@@ -1254,6 +1259,37 @@ CHAN_XOP_ACCESS
|
||||
CHAN_XOP_NOT_AVAILABLE
|
||||
Il sistema xOP non è disponibile.
|
||||
|
||||
# QOP messages
|
||||
CHAN_QOP_SYNTAX
|
||||
QOP channel {ADD|DEL|LIST|CLEAR} [nick | entry-list]
|
||||
CHAN_QOP_DISABLED
|
||||
Sorry, channel QOP list modification is temporarily disabled.
|
||||
CHAN_QOP_NICKS_ONLY
|
||||
Channel QOP lists may only contain registered nicknames.
|
||||
CHAN_QOP_ADDED
|
||||
%s added to %s QOP list.
|
||||
CHAN_QOP_MOVED
|
||||
%s moved to %s QOP list.
|
||||
CHAN_QOP_NO_SUCH_ENTRY
|
||||
No such entry (#%d) on %s QOP list.
|
||||
CHAN_QOP_NOT_FOUND
|
||||
%s not found on %s QOP list.
|
||||
CHAN_QOP_NO_MATCH
|
||||
No matching entries on %s QOP list.
|
||||
CHAN_QOP_DELETED
|
||||
%s deleted from %s QOP list.
|
||||
CHAN_QOP_DELETED_ONE
|
||||
Deleted 1 entry from %s QOP list.
|
||||
CHAN_QOP_DELETED_SEVERAL
|
||||
Deleted %d entries from %s QOP list.
|
||||
CHAN_QOP_LIST_EMPTY
|
||||
%s QOP list is empty.
|
||||
CHAN_QOP_LIST_HEADER
|
||||
QOP list for %s:
|
||||
Num Nick
|
||||
CHAN_QOP_CLEAR
|
||||
Channel %s QOP list has been cleared.
|
||||
|
||||
# AOP messages
|
||||
CHAN_AOP_SYNTAX
|
||||
AOP canale {ADD|DEL|LIST|CLEAR} [nick | numero-lista]
|
||||
@@ -1380,7 +1416,7 @@ CHAN_VOP_CLEAR
|
||||
|
||||
# ACCESS messages
|
||||
CHAN_ACCESS_SYNTAX
|
||||
ACCESS canale {ADD|DEL|LIST|CLEAR} [nick [livello] | numero-lista]
|
||||
ACCESS canale {ADD|DEL|LIST|VIEW|CLEAR} [nick [livello] | numero-lista]
|
||||
CHAN_ACCESS_XOP
|
||||
Questo comando non è utilizzabile; usa i comandi SOP, AOP, HOP e VOP.
|
||||
Digita %R%s HELP comando per ottenere maggiori informazioni.
|
||||
@@ -1429,6 +1465,12 @@ CHAN_ACCESS_LIST_AXS_FORMAT
|
||||
%3d %4d %s
|
||||
CHAN_ACCESS_CLEAR
|
||||
La lista di accesso del canale %s è stata svuotata.
|
||||
CHAN_ACCESS_VIEW_XOP_FORMAT
|
||||
%3d %s %s
|
||||
by %s, last seen %s
|
||||
CHAN_ACCESS_VIEW_AXS_FORMAT
|
||||
%3d %4d %s
|
||||
by %s, last seen %s
|
||||
|
||||
# AKICK responses
|
||||
CHAN_AKICK_SYNTAX
|
||||
@@ -1483,6 +1525,8 @@ CHAN_LEVELS_RANGE
|
||||
Il livello deve essere compreso tra %d e %d (inclusi).
|
||||
CHAN_LEVELS_CHANGED
|
||||
Il livello di %s sul canale %s è stato modificato a %d.
|
||||
CHAN_LEVELS_CHANGED_FOUNDER
|
||||
Level for %s on channel %s changed to founder only.
|
||||
CHAN_LEVELS_UNKNOWN
|
||||
Impostazione %s sconosciuta. Digita %R%s HELP LEVELS DESC per una lista delle impostazioni valide.
|
||||
CHAN_LEVELS_DISABLED
|
||||
@@ -1565,6 +1609,8 @@ CHAN_INFO_OPT_TOPICLOCK
|
||||
Blocco del topic
|
||||
CHAN_INFO_OPT_XOP
|
||||
Liste xOP
|
||||
CHAN_INFO_OPT_PERSIST
|
||||
Persistant
|
||||
CHAN_INFO_OPT_NONE
|
||||
Nessno
|
||||
CHAN_INFO_MODE_LOCK
|
||||
@@ -1593,12 +1639,17 @@ CHAN_INVITE_ALREADY_IN
|
||||
Sei già in %s!
|
||||
CHAN_INVITE_SUCCESS
|
||||
Sei stato invitato in %s.
|
||||
CHAN_INVITE_OTHER_SUCCESS
|
||||
%s has been invited to %s.
|
||||
|
||||
|
||||
# UNBAN responses
|
||||
CHAN_UNBAN_SYNTAX
|
||||
UNBAN canale
|
||||
UNBAN canale [nick]
|
||||
CHAN_UNBANNED
|
||||
I ban che ti riguardavano sono stati rimossi da %s.
|
||||
CHAN_UNBANNED_OTHER
|
||||
%s has been unbanned from %s.
|
||||
|
||||
# TOPIC responses
|
||||
CHAN_TOPIC_SYNTAX
|
||||
@@ -1624,15 +1675,7 @@ CHAN_CLEARED_USERS
|
||||
CHAN_CLEARED_INVITES
|
||||
Tutti gli invites sono stati rimossi dal canale %s.
|
||||
|
||||
# GETPASS responses
|
||||
CHAN_GETPASS_SYNTAX
|
||||
GETPASS canale
|
||||
CHAN_GETPASS_UNAVAILABLE
|
||||
Il comando GETPASS è inutilizzabile perché è in uso la criptazione dei dati.
|
||||
CHAN_GETPASS_PASSWORD_IS
|
||||
La chiave (password) del canale %s è %s.
|
||||
|
||||
# SENDPASS responses
|
||||
# GETHEY responses
|
||||
CHAN_GETKEY_SYNTAX
|
||||
GETKEY canale
|
||||
CHAN_GETKEY_NOKEY
|
||||
@@ -1640,28 +1683,6 @@ CHAN_GETKEY_NOKEY
|
||||
CHAN_GETKEY_KEY
|
||||
La key per il canale %s è %s.
|
||||
|
||||
# SENDPASS responses
|
||||
CHAN_SENDPASS_SYNTAX
|
||||
SENDPASS canale
|
||||
CHAN_SENDPASS_UNAVAILABLE
|
||||
Il comando SENDPASS è inutilizzabile perché è in uso la criptazione dei dati.
|
||||
CHAN_SENDPASS_SUBJECT
|
||||
Password del canale (%s)
|
||||
CHAN_SENDPASS_HEAD
|
||||
Salve,
|
||||
CHAN_SENDPASS_LINE_1
|
||||
Hai richiesto di ricevere via e-mail la password del canale %s.
|
||||
CHAN_SENDPASS_LINE_2
|
||||
La password è %s. Per ragioni di sicurezza, ti invitiamo a cambiarla il più presto possibile con il comando "/cs set canale password".
|
||||
CHAN_SENDPASS_LINE_3
|
||||
Se non sai perché hai ricevuto questa mail, ignorala.
|
||||
CHAN_SENDPASS_LINE_4
|
||||
IMPORTANTE! Non rispondere a questa mail!
|
||||
CHAN_SENDPASS_LINE_5
|
||||
Gli amministratori di %s.
|
||||
CHAN_SENDPASS_OK
|
||||
La password di %s è stata inviata.
|
||||
|
||||
# FORBID responses
|
||||
CHAN_FORBID_SYNTAX
|
||||
FORBID canale [motivo]
|
||||
@@ -2102,6 +2123,8 @@ BOT_UNASSIGN_SYNTAX
|
||||
UNASSIGN canale
|
||||
BOT_UNASSIGN_UNASSIGNED
|
||||
Non c'è più nessun bot assegnato a %s.
|
||||
BOT_UNASSIGN_PERSISTANT_CHAN
|
||||
You can not unassign bots while persist is set on the channel.
|
||||
|
||||
# INFO responses
|
||||
BOT_INFO_SYNTAX
|
||||
@@ -2885,8 +2908,6 @@ OPER_DEFCON_SYNTAX
|
||||
DEFCON [1|2|3|4|5]
|
||||
OPER_DEFCON_DENIED
|
||||
I servizi sono in modalità Defcon, prego riprovare più tardi.
|
||||
OPER_DEFCON_NO_CONF
|
||||
Il sistema Defcon dev'essere attivato nel file services.conf
|
||||
OPER_DEFCON_CHANGED
|
||||
I servizi sono ora in DEFCON %d
|
||||
OPER_DEFCON_WALL
|
||||
@@ -2906,6 +2927,10 @@ OPER_MODULE_REMOVE_FAIL
|
||||
Impossibile rimuovere il modulo %s
|
||||
OPER_MODULE_NO_UNLOAD
|
||||
Questo modulo non può essere rimosso.
|
||||
OPER_MODULE_ALREADY_LOADED
|
||||
Module %s is already loaded.
|
||||
OPER_MODULE_ISNT_LOADED
|
||||
Module %s isn't loaded.
|
||||
OPER_MODULE_LOAD_SYNTAX
|
||||
MODLOAD NomeFile
|
||||
OPER_MODULE_UNLOAD_SYNTAX
|
||||
@@ -3278,6 +3303,8 @@ NICK_HELP_CMD_RELEASE
|
||||
RELEASE Permette di usare di nuovo il proprio nick dopo un RECOVER
|
||||
NICK_HELP_CMD_SENDPASS
|
||||
SENDPASS Invia la password del proprio nick via e-mail
|
||||
NICK_HELP_CMD_RESETPASS
|
||||
RESETPASS Helps you reset lost passwords.
|
||||
NICK_HELP_CMD_GHOST
|
||||
GHOST Disconnette un nick fantasma che non è ancora caduto
|
||||
NICK_HELP_CMD_ALIST
|
||||
@@ -3875,6 +3902,12 @@ NICK_HELP_SENDPASS
|
||||
|
||||
Potrebbe essere disponibile soltanto per gli IrcOp.
|
||||
|
||||
NICK_HELP_RESETPASS
|
||||
Syntax: RESETPASS nickname
|
||||
|
||||
Sends a code key to the nickname with instructions on how to
|
||||
reset their password.
|
||||
|
||||
NICK_HELP_CONFIRM
|
||||
Syntax: CONFIRM passcode
|
||||
|
||||
@@ -3884,6 +3917,14 @@ NICK_HELP_CONFIRM
|
||||
is sent to your e-mail address in the first step of the
|
||||
registration process. For more information about the first
|
||||
stage of the registration process, type: %R%S HELP REGISTER
|
||||
|
||||
This is also used after the RESETPASS command has been used to
|
||||
force identify you to your nick so you may change your password.
|
||||
|
||||
NICK_HELP_CONFIRM_OPER
|
||||
|
||||
Additionally, Services Operators with the nickserv/confirm permission can
|
||||
replace passcode with a users nick to force validate them.
|
||||
|
||||
NICK_HELP_RESEND
|
||||
Syntax: RESEND
|
||||
@@ -4031,10 +4072,10 @@ CHAN_HELP_CMD_STATUS
|
||||
un utente su un canale
|
||||
CHAN_HELP_CMD_REGISTER
|
||||
REGISTER Registra un canale
|
||||
CHAN_HELP_CMD_IDENTIFY
|
||||
IDENTIFY Ti identifica come fondatore di un canale
|
||||
CHAN_HELP_CMD_SET
|
||||
SET Imposta le opzioni e le informazioni di canale
|
||||
CHAN_HELP_CMD_QOP
|
||||
QOP Modify the list of QOP users
|
||||
CHAN_HELP_CMD_AOP
|
||||
AOP Modifica la lista degli utenti AOP
|
||||
CHAN_HELP_CMD_SOP
|
||||
@@ -4047,8 +4088,6 @@ CHAN_HELP_CMD_AKICK
|
||||
AKICK Modifica la lista AutoKick
|
||||
CHAN_HELP_CMD_DROP
|
||||
DROP Annulla la registrazione di un canale
|
||||
CHAN_HELP_CMD_SENDPASS
|
||||
SENDPASS Invia la password del proprio canale via e-mail
|
||||
CHAN_HELP_CMD_BAN
|
||||
BAN Permette di bannare un utente
|
||||
CHAN_HELP_CMD_CLEAR
|
||||
@@ -4065,14 +4104,12 @@ CHAN_HELP_CMD_KICK
|
||||
KICK Espelle un utente da un canale (kick)
|
||||
CHAN_HELP_CMD_LIST
|
||||
LIST Mostra la lista dei canali
|
||||
CHAN_HELP_CMD_LOGOUT
|
||||
LOGOUT Deidentifica dal canale specificato
|
||||
CHAN_HELP_CMD_OP
|
||||
OP Assegna lo stato di operatore a un utente (+o)
|
||||
CHAN_HELP_CMD_TOPIC
|
||||
TOPIC Cambia il topic di un canale
|
||||
CHAN_HELP_CMD_UNBAN
|
||||
UNBAN Rimuove i ban che impediscono l'accesso a un canale
|
||||
UNBAN Remove all bans preventing a user from entering a channel
|
||||
CHAN_HELP_CMD_VOICE
|
||||
VOICE Assegna lo stato di voice a un utente (+v)
|
||||
CHAN_HELP_CMD_VOP
|
||||
@@ -4091,10 +4128,6 @@ CHAN_HELP_CMD_OWNER
|
||||
OWNER Assegna lo stato di owner a un utente (+q)
|
||||
CHAN_HELP_CMD_PROTECT
|
||||
PROTECT Assegna lo stato di protezione a un utente (+a)
|
||||
CHAN_HELP_CMD_ADMIN
|
||||
ADMIN Protegge un nick su un canale
|
||||
CHAN_HELP_CMD_DEADMIN
|
||||
DEADMIN Sprotegge un nick su un canale
|
||||
CHAN_HELP_CMD_DEOP
|
||||
DEOP Toglie lo stato di operatore a un utente (-o)
|
||||
|
||||
@@ -4116,54 +4149,32 @@ CHAN_HELP_EXPIRES
|
||||
automaticamente deregistrati.
|
||||
|
||||
CHAN_HELP_REGISTER
|
||||
Sintassi: REGISTER canale password descrizione
|
||||
Sintassi: REGISTER canale descrizione
|
||||
|
||||
Registra un canale nel database di %S. Per poter usare
|
||||
questo comando, devi essere operatore di canale (op) sul
|
||||
canale che intendi registrare. La password è usata con
|
||||
il comando IDENTIFY per permettere agli altri di
|
||||
effettuare in seguito dei cambiamenti sulle varie
|
||||
impostazioni di canale. L'ultimo parametro, che deve
|
||||
essere incluso, è una descrizione generica del canale
|
||||
stesso.
|
||||
|
||||
Quando registri un canale, vieni registrato come il
|
||||
"fondatore" (founder) del canale. Il fondatore di un
|
||||
canale può cambiare tutte le impostazioni del canale
|
||||
stesso; inoltre, %S gli assegnerà automaticamente i
|
||||
privilegi di operatore di canale (+o) quando entra nel
|
||||
canale.
|
||||
Per assegnare alcuni di questi privilegi ad altri
|
||||
utenti, vedi il comando ACCESS (%R%S HELP ACCESS).
|
||||
|
||||
NOTA: Per registrare un canale, devi aver prima
|
||||
registrato il tuo nick. Se non l'hai fatto, digita
|
||||
%R%s HELP per avere informazioni su come farlo.
|
||||
Registers a channel in the %S database. In order
|
||||
to use this command, you must first be a channel operator
|
||||
on the channel you're trying to register.
|
||||
The description, which must be included, is a
|
||||
general description of the channel's purpose.
|
||||
|
||||
CHAN_HELP_IDENTIFY
|
||||
Sintassi: IDENTIFY canale password
|
||||
|
||||
Ti identifica con %S come fondatore del canale specificato.
|
||||
Molti comandi richiedono che tu sia identificato per
|
||||
poter essere eseguiti. La password deve essere la stessa
|
||||
utilizzata con il comando REGISTER.
|
||||
|
||||
CHAN_HELP_LOGOUT
|
||||
Sintassi: LOGOUT canale nick
|
||||
|
||||
Annulla l'effetto del comando IDENTIFY per il canale
|
||||
specificato, cioè fa in modo che tu non sia più riconosciuto
|
||||
per quel canale.
|
||||
|
||||
Se sei il fondatore del canale puoi deidentificare chiunque,
|
||||
altrimenti puoi deidentificare solo te stesso.
|
||||
When you register a channel, you are recorded as the
|
||||
"founder" of the channel. The channel founder is allowed
|
||||
to change all of the channel settings for the channel;
|
||||
%S will also automatically give the founder
|
||||
channel-operator privileges when s/he enters the channel.
|
||||
See the ACCESS command (%R%S HELP ACCESS) for
|
||||
information on giving a subset of these privileges to
|
||||
other channel users.
|
||||
|
||||
NOTICE: In order to register a channel, you must have
|
||||
first registered your nickname. If you haven't,
|
||||
%R%s HELP for information on how to do so.
|
||||
|
||||
CHAN_HELP_DROP
|
||||
Sintassi: DROP canale
|
||||
|
||||
Deregistra il canale specificato. Può essere usato soltanto
|
||||
da un fondatore di canale, che deve prima usare il comando
|
||||
IDENTIFY.
|
||||
da un fondatore di canale.
|
||||
|
||||
CHAN_HELP_SET
|
||||
Sintassi: SET canale opzione parametri
|
||||
@@ -4175,7 +4186,6 @@ CHAN_HELP_SET
|
||||
|
||||
FOUNDER Imposta il fondatore del canale
|
||||
SUCCESSOR Imposta il successore del fondatore del canale
|
||||
PASSWORD Imposta la password del canale
|
||||
DESC Imposta la descrizione del canale
|
||||
URL Associa un URL al canale
|
||||
EMAIL Associa un indirizzo e-mail al canale
|
||||
@@ -4198,6 +4208,7 @@ CHAN_HELP_SET
|
||||
TOPICLOCK Imposta il blocco del topic (modificabile solo
|
||||
attraverso il comando TOPIC)
|
||||
XOP Seleziona il sistema di privilegi utilizzato
|
||||
PERSIST Set the channel as permanent
|
||||
|
||||
Digita %R%S HELP option per ottenere maggiori
|
||||
informazioni su un comando specifico.
|
||||
@@ -4220,12 +4231,6 @@ CHAN_HELP_SET_SUCCESSOR
|
||||
successore.
|
||||
Il nick specificato deve essere registrato.
|
||||
|
||||
CHAN_HELP_SET_PASSWORD
|
||||
Sintassi: SET canale PASSWORD password
|
||||
|
||||
Imposta la password del canale, utilizzata per essere
|
||||
identificati come fondatori del canale stesso.
|
||||
|
||||
CHAN_HELP_SET_DESC
|
||||
Sintassi: SET canale DESC descrizione
|
||||
|
||||
@@ -4410,6 +4415,29 @@ CHAN_HELP_SET_XOP
|
||||
Al contrario, passare dalle liste xOP alle liste di accesso
|
||||
non causa nessun problema.
|
||||
|
||||
CHAN_HELP_SET_PERSIST
|
||||
Syntax: SET channel PERSIST {ON | OFF}
|
||||
|
||||
Enables or disables the persistant channel setting.
|
||||
When persistant is set, the service bot will remain
|
||||
in the channel when it has emptied of users.
|
||||
|
||||
If your IRCd does not a permanent (persistant) channel
|
||||
mode you must have a service bot in your channel to
|
||||
set persist on, and it can not be unassigned while persist
|
||||
is on.
|
||||
|
||||
If this network does not have BotServ enabled and does
|
||||
not have a permanent channel mode, ChanServ will
|
||||
join your channel when you set persist on (and leave when
|
||||
it has been set off).
|
||||
|
||||
If your IRCd has a permanent (persistant) channel mode
|
||||
and is is set or unset (for any reason, including MLOCK),
|
||||
persist is automatically set and unset for the channel aswell.
|
||||
Additionally, services will set or unset this mode when you
|
||||
set persist on or off.
|
||||
|
||||
CHAN_HELP_SET_OPNOTICE
|
||||
Sintassi: SET canale OPNOTICE {ON | OFF}
|
||||
|
||||
@@ -4417,6 +4445,45 @@ CHAN_HELP_SET_OPNOTICE
|
||||
Quando l'opzione è attiva, %S invierà un notice al
|
||||
canale quando vengono usati i comandi OP e DEOP.
|
||||
|
||||
CHAN_HELP_QOP
|
||||
Syntax: QOP channel ADD nick
|
||||
QOP channel DEL {nick | entry-num | list}
|
||||
QOP channel LIST [mask | list]
|
||||
QOP channel CLEAR
|
||||
|
||||
Maintains the QOP (AutoOwner) list for a channel. The QOP
|
||||
list gives users the right to be auto-owner on your channel,
|
||||
which gives them almost (or potentially, total) access.
|
||||
|
||||
The QOP ADD command adds the given nickname to the
|
||||
QOP list.
|
||||
|
||||
The QOP DEL command removes the given nick from the
|
||||
QOP list. If a list of entry numbers is given, those
|
||||
entries are deleted. (See the example for LIST below.)
|
||||
|
||||
The QOP LIST command displays the QOP list. If
|
||||
a wildcard mask is given, only those entries matching the
|
||||
mask are displayed. If a list of entry numbers is given,
|
||||
only those entries are shown; for example:
|
||||
|
||||
QOP #channel LIST 2-5,7-9
|
||||
Lists QOP entries numbered 2 through 5 and
|
||||
7 through 9.
|
||||
|
||||
The QOP CLEAR command clears all entries of the
|
||||
QOP list.
|
||||
|
||||
The QOP commands are limited to
|
||||
founders (unless SECUREOPS is off). However, any user on the
|
||||
QOP list may use the QOP LIST command.
|
||||
|
||||
This command may have been disabled for your channel, and
|
||||
in that case you need to use the access list. See
|
||||
%R%S HELP ACCESS for information about the access list,
|
||||
and %R%S HELP SET XOP to know how to toggle between
|
||||
the access list and xOP list systems.
|
||||
|
||||
CHAN_HELP_AOP
|
||||
Sintassi: AOP canale ADD nick
|
||||
AOP canale DEL {nick | numero | lista}
|
||||
@@ -4592,6 +4659,7 @@ CHAN_HELP_ACCESS
|
||||
Sintassi: ACCESS canale ADD nick livello
|
||||
ACCESS canale DEL {nick | numero | lista}
|
||||
ACCESS canale LIST [mask | lista]
|
||||
ACCESS canale VIEW [mask | lista]
|
||||
ACCESS canale CLEAR
|
||||
|
||||
Gestisce la lista di accesso del canale.
|
||||
@@ -4626,7 +4694,10 @@ CHAN_HELP_ACCESS
|
||||
ACCESS #canale LIST 2-5,7-9
|
||||
Mostra i record della lista che hanno numero da 2
|
||||
a 5 e da 7 a 9 (il 6 è quindi escluso).
|
||||
|
||||
|
||||
The ACCESS VIEW command displays the access list similar
|
||||
to ACCESS LIST but shows the creator and last used time.
|
||||
|
||||
Il comando ACCESS CLEAR svuota completamente la lista di
|
||||
accesso.
|
||||
|
||||
@@ -4704,32 +4775,30 @@ CHAN_HELP_AKICK
|
||||
Il comando AKICK CLEAR svuota la lista AutoKick.
|
||||
|
||||
CHAN_HELP_LEVELS
|
||||
Sintassi: LEVELS canale SET tipo livello
|
||||
Sintassi: LEVELS canale SET tipo [livello|FOUNDER]
|
||||
LEVELS canale {DIS | DISABLE} tipo
|
||||
LEVELS canale LIST
|
||||
LEVELS canale RESET
|
||||
|
||||
Il comando LEVELS permette un controllo preciso dei
|
||||
significati dei livelli di accesso numerici usati nei
|
||||
canali. Con questo comando, è possibile definire il
|
||||
livello di accesso richiesto per la maggior parte delle
|
||||
funzioni di %S.
|
||||
(I comandi SET FOUNDER e SET PASSWORD, nonché questo
|
||||
comando, sono sempre riservati al fondatore del canale).
|
||||
The LEVELS command allows fine control over the meaning of
|
||||
the numeric access levels used for channels. With this
|
||||
command, you can define the access level required for most
|
||||
of %S's functions. (The SET FOUNDER and this command
|
||||
are always restricted to the channel founder.)
|
||||
|
||||
LEVELS SET permette di definire il livello di accesso
|
||||
necessario per una funzione o per un gruppo di funzioni.
|
||||
LEVELS DISABLE (o, abbreviato, DIS) disattiva una
|
||||
funzione automatica o non permette più l'accesso a una
|
||||
funzione se non al fondatore del canale.
|
||||
LEVELS LIST mostra i livelli di accesso attuali per
|
||||
ogni funzione e per i gruppi di funzioni.
|
||||
LEVELS RESET reimposta i livelli ai valori di default
|
||||
di un canale appena creato (per maggiori informazioni,
|
||||
digita HELP ACCESS LEVELS).
|
||||
LEVELS SET allows the access level for a function or group of
|
||||
functions to be changed. LEVELS DISABLE (or DIS for short)
|
||||
disables an automatic feature or disallows access to a
|
||||
function by anyone, INCLUDING the founder (although, the founder
|
||||
can always reenable it).
|
||||
|
||||
Per una lista delle funzioni di cui puoi cambiare i
|
||||
livelli, digita HELP LEVELS DESC.
|
||||
LEVELS LIST shows the current levels for each function or
|
||||
group of functions. LEVELS RESET resets the levels to the
|
||||
default levels of a newly-created channel (see
|
||||
HELP ACCESS LEVELS).
|
||||
|
||||
For a list of the features and functions whose levels can be
|
||||
set, see HELP LEVELS DESC.
|
||||
|
||||
CHAN_HELP_LEVELS_DESC
|
||||
La seguente lista mostra le funzioni disponibile. Tieni
|
||||
@@ -4873,10 +4942,10 @@ CHAN_HELP_INVITE
|
||||
livello di accesso 5 o superiori sul canale.
|
||||
|
||||
CHAN_HELP_UNBAN
|
||||
Sintassi: UNBAN canale
|
||||
Sintassi: UNBAN canale [nick]
|
||||
|
||||
Chiede a %S di rimuovere tutti i ban che non ti
|
||||
permettono di entrare sul canale specificato.
|
||||
Tells %S to remove all bans preventing you or the given
|
||||
user from entering the given channel.
|
||||
|
||||
Di default, il comando è limitato agli AOP o agli utenti con
|
||||
livello di accesso 5 o superiori sul canale.
|
||||
@@ -4938,16 +5007,6 @@ CHAN_HELP_GETKEY
|
||||
Sintassi: GETKEY canale
|
||||
|
||||
Restituisce la chiave (password) del canale specificato.
|
||||
|
||||
CHAN_HELP_SENDPASS
|
||||
Sintassi: SENDPASS canale
|
||||
|
||||
Invia la password del canale specificato all'indirizzo e-mail
|
||||
del fondatore (specificato nelle opzioni del nick del fondatore
|
||||
stesso). Questo comando è utile quando un utente ha dimenticato
|
||||
la password del canale.
|
||||
|
||||
Potrebbe essere disponibile soltanto per gli IrcOp.
|
||||
|
||||
CHAN_SERVADMIN_HELP
|
||||
|
||||
@@ -4955,20 +5014,6 @@ CHAN_SERVADMIN_HELP
|
||||
senza che siano identificati con la password, e possono vedere
|
||||
la lista di accesso, la lista AKICK e le liste di configurazione
|
||||
dei livelli per qualsiasi canale.
|
||||
|
||||
CHAN_SERVADMIN_HELP_LOGOUT
|
||||
Sintassi: LOGOUT canale [nick]
|
||||
|
||||
Questo comando fa si' che il nick specificato non sia più
|
||||
identificato sul canale indicato.
|
||||
|
||||
Se sei il fondatore del canale, puoi deidentificare chiunque,
|
||||
altrimenti puoi deidentificare solo te stesso.
|
||||
|
||||
Se sei un Services Operator, puoi deidentificare chiunque da
|
||||
qualsiasi canale senza dover essere il fondatore del canale.
|
||||
Inoltre puoi omettere il parametro nick; questo farà in modo
|
||||
che tutti gli utenti siano deidentificati dal canale.
|
||||
|
||||
CHAN_SERVADMIN_HELP_DROP
|
||||
Sintassi: DROP canale
|
||||
@@ -4993,8 +5038,8 @@ CHAN_SERVADMIN_HELP_SET_NOEXPIRE
|
||||
|
||||
CHAN_SERVADMIN_HELP_INFO
|
||||
|
||||
I Services Operator possono usare il parametro ALL con qualsiasi
|
||||
canale.
|
||||
Services Operators with the chanserv/auspex permission can
|
||||
use the ALL parameter with any channel.
|
||||
|
||||
CHAN_SERVADMIN_HELP_LIST
|
||||
Sintassi: LIST pattern [FORBIDDEN] [SUSPENDED] [NOEXPIRE]
|
||||
@@ -6358,3 +6403,15 @@ OPER_UMODE_UNSUPPORTED
|
||||
OPER_SUPER_ADMIN_NOT_ENABLED
|
||||
L'impostazione SuperAdmin non è abilitata in services.conf
|
||||
|
||||
OPER_HELP_SYNC
|
||||
Syntax: SQLSYNC
|
||||
|
||||
This command syncs your databases with SQL. You should
|
||||
only have to execute this command once, when you initially
|
||||
import your databases into SQL.
|
||||
OPER_HELP_CMD_SQLSYNC
|
||||
SQLSYNC Import your databases to SQL
|
||||
OPER_SYNC_UPDATING
|
||||
Updating MySQL.
|
||||
OPER_SYNC_UPDATED
|
||||
Finished updating MySQL.
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
/* Compiler for language definition files.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2010 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -213,7 +213,7 @@ int main(int ac, char **av)
|
||||
fprintf(stderr, "%s:%d: Out of memory!\n", filename, linenum);
|
||||
return 2;
|
||||
}
|
||||
sprintf(strings[curstring] + i, "%s\n", line);
|
||||
snprintf(strings[curstring] + i, strlen(line) + 2, "%s\n", line);
|
||||
}
|
||||
} else {
|
||||
if ((curstring = stringnum(line)) < 0) {
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
/* Language stuff generator for win32.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2010 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for furhter details.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Dutch Language File
|
||||
#
|
||||
# (C) 2003-2008 Anope Team
|
||||
# (C) 2003-2010 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Please read COPYING and README for furhter details.
|
||||
@@ -876,6 +876,24 @@ NICK_SENDPASS_LINE_5
|
||||
NICK_SENDPASS_OK
|
||||
Wachtwoord %s is verstuurd.
|
||||
|
||||
NICK_RESETPASS_SYNTAX
|
||||
RESETPASS nickname
|
||||
NICK_RESETPASS_SUBJECT
|
||||
Reset password request for %s
|
||||
NICK_RESETPASS_MESSAGE
|
||||
Hi,
|
||||
|
||||
You have requested to have the password for %s reset.
|
||||
To reset your password, type %R%s CONFIRM %s
|
||||
If you don't know why this mail is sent to you, please ignore it silently.
|
||||
|
||||
PLEASE DON'T ANSWER TO THIS MAIL
|
||||
|
||||
%s administrators.
|
||||
|
||||
NICK_RESETPASS_COMPLETE
|
||||
Password reset email for %s has been sent.
|
||||
|
||||
# FORBID responses
|
||||
NICK_SUSPEND_SYNTAX
|
||||
SUSPEND nick reden
|
||||
@@ -913,10 +931,6 @@ NICK_IS_PREREG
|
||||
Deze nick wacht nog op een e-mail verificatie code coor de registratie is voltooid.
|
||||
NICK_ENTER_REG_CODE
|
||||
Een verificatiecode is verstuurd naar %s. Type %R%s confirm <verificatiecode> om de registratie te voltooien.
|
||||
NICK_CONFIRM_NOT_FOUND
|
||||
Registratie stap 1 kan verlopen zijn. Gebruik eerst "%R%s register <wachtwoord> <email>".
|
||||
NICK_CONFIRM_INVALID
|
||||
Ongeldige verificatiecode ingevuld. Controleer je e-mail nog eens en probeer opnieuw.
|
||||
NICK_REG_MAIL_SUBJECT
|
||||
Nickname Registratie (%s)
|
||||
NICK_REG_MAIL_HEAD
|
||||
@@ -936,6 +950,16 @@ NICK_GETPASS_PASSCODE_IS
|
||||
NICK_FORCE_REG
|
||||
Nickname %s geverificeerd.
|
||||
|
||||
# CONFIRM responces
|
||||
NICK_CONFIRM_NOT_FOUND
|
||||
Registratie stap 1 kan verlopen zijn. Gebruik eerst "%R%s register <wachtwoord> <email>".
|
||||
NICK_CONFIRM_INVALID
|
||||
Ongeldige verificatiecode ingevuld. Controleer je e-mail nog eens en probeer opnieuw.
|
||||
NICK_CONFIRM_EXPIRED
|
||||
Your password request has expired.
|
||||
NICK_CONFIRM_SUCCESS
|
||||
You are now identified for your nick. Change your password using "%R%s SET PASSWORD newpassword" now.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
# ChanServ messages
|
||||
@@ -1015,6 +1039,12 @@ CHAN_LEVEL_TOPIC
|
||||
Toegestaan om TOPIC te gebruiken
|
||||
CHAN_LEVEL_INFO
|
||||
Toegestaan om INFO met de ALL optie te gebruiken
|
||||
CHAN_LEVEL_AUTOOWNER
|
||||
Automatic mode +q
|
||||
CHAN_LEVEL_OWNER
|
||||
Allowed to use OWNER command
|
||||
CHAN_LEVEL_OWNERME
|
||||
Allowed to (de)owner him/herself
|
||||
|
||||
# Automatic responses
|
||||
CHAN_IS_REGISTERED
|
||||
@@ -1032,7 +1062,7 @@ CHAN_X_INVALID
|
||||
|
||||
# REGISTER responses
|
||||
CHAN_REGISTER_SYNTAX
|
||||
REGISTER kanaal wachtwoord beschrijving
|
||||
REGISTER kanaal beschrijving
|
||||
CHAN_REGISTER_DISABLED
|
||||
Sorry, kanaal registratie is tijdelijk uitgeschakeld.
|
||||
CHAN_REGISTER_NOT_LOCAL
|
||||
@@ -1051,36 +1081,11 @@ CHAN_REGISTRATION_FAILED
|
||||
Sorry, registratie gefaald.
|
||||
CHAN_REGISTERED
|
||||
Kanaal %s is geregistreerd onder jouw nickname: %s
|
||||
CHAN_PASSWORD_IS
|
||||
Het wachtwoord van je kanaal is %s - onthoudt dit voor later gebruik.
|
||||
CHAN_REGISTER_NONE_CHANNEL
|
||||
Je hebt geprobeerd om niet-bestaand kanaal %s te registeren.
|
||||
CHAN_SYMBOL_REQUIRED
|
||||
Gebruik het # symbool wanner je probeert een kanaal te registeren.
|
||||
|
||||
|
||||
# IDENTIFY responses
|
||||
CHAN_IDENTIFY_SYNTAX
|
||||
IDENTIFY kanaal wachtwoord
|
||||
CHAN_IDENTIFY_FAILED
|
||||
Sorry, identificatie gefaald.
|
||||
CHAN_IDENTIFY_SUCCEEDED
|
||||
Wachtwoord goedgekeurd - je hebt nu stichter-niveau toegang to %s.
|
||||
|
||||
# LOGOUT responses
|
||||
CHAN_LOGOUT_SYNTAX
|
||||
LOGOUT kanaal nickname
|
||||
CHAN_LOGOUT_SERVADMIN_SYNTAX
|
||||
LOGOUT kanaal [nickname]
|
||||
CHAN_LOGOUT_SUCCEEDED
|
||||
Gebruiker %s is uitgelogd van kanaal %s.
|
||||
CHAN_LOGOUT_ALL_SUCCEEDED
|
||||
Alle geidentificeerde gebruikers zijn uitgelogd van kanaal %s (except the channel founder).
|
||||
CHAN_LOGOUT_FOUNDER_FAILED
|
||||
You may not log out of %s (you are founder).
|
||||
CHAN_LOGOUT_NOT_LOGGEDIN
|
||||
%s was not logged into %s.
|
||||
|
||||
# DROP responses
|
||||
CHAN_DROP_SYNTAX
|
||||
DROP kanaal
|
||||
@@ -1111,14 +1116,6 @@ CHAN_SUCCESSOR_UNSET
|
||||
CHAN_SUCCESSOR_IS_FOUNDER
|
||||
%s kan de opvolger niet zijn op kanaal %s omdat hij/zij founder is.
|
||||
|
||||
# SET PASSWORD responses
|
||||
CHAN_SET_PASSWORD_FAILED
|
||||
Sorry, kan wachtwoord niet zetten.
|
||||
CHAN_PASSWORD_CHANGED
|
||||
%s wachtwoord veranderd.
|
||||
CHAN_PASSWORD_CHANGED_TO
|
||||
%s wachtwoord veranderd in %s.
|
||||
|
||||
# SET DESC responses
|
||||
CHAN_DESC_CHANGED
|
||||
Beschrijving van %s veranderd in %s.
|
||||
@@ -1251,6 +1248,14 @@ CHAN_SET_XOP_ON
|
||||
CHAN_SET_XOP_OFF
|
||||
xOP lists system for %s is now OFF.
|
||||
|
||||
# SET PERSISTANT responces
|
||||
CHAN_SET_PERSIST_SYNTAX
|
||||
SET channel PERSIST {ON | OFF}
|
||||
CHAN_SET_PERSIST_ON
|
||||
Channel %s is now persistant.
|
||||
CHAN_SET_PERSIST_OFF
|
||||
Channel %s is no longer persistant.
|
||||
|
||||
# SET NOEXPIRE responses
|
||||
CHAN_SET_NOEXPIRE_SYNTAX
|
||||
SET kanaal NOEXPIRE {ON | OFF}
|
||||
@@ -1270,6 +1275,37 @@ CHAN_XOP_ACCESS
|
||||
CHAN_XOP_NOT_AVAILABLE
|
||||
xOP system is not available.
|
||||
|
||||
# QOP messages
|
||||
CHAN_QOP_SYNTAX
|
||||
QOP channel {ADD|DEL|LIST|CLEAR} [nick | entry-list]
|
||||
CHAN_QOP_DISABLED
|
||||
Sorry, channel QOP list modification is temporarily disabled.
|
||||
CHAN_QOP_NICKS_ONLY
|
||||
Channel QOP lists may only contain registered nicknames.
|
||||
CHAN_QOP_ADDED
|
||||
%s added to %s QOP list.
|
||||
CHAN_QOP_MOVED
|
||||
%s moved to %s QOP list.
|
||||
CHAN_QOP_NO_SUCH_ENTRY
|
||||
No such entry (#%d) on %s QOP list.
|
||||
CHAN_QOP_NOT_FOUND
|
||||
%s not found on %s QOP list.
|
||||
CHAN_QOP_NO_MATCH
|
||||
No matching entries on %s QOP list.
|
||||
CHAN_QOP_DELETED
|
||||
%s deleted from %s QOP list.
|
||||
CHAN_QOP_DELETED_ONE
|
||||
Deleted 1 entry from %s QOP list.
|
||||
CHAN_QOP_DELETED_SEVERAL
|
||||
Deleted %d entries from %s QOP list.
|
||||
CHAN_QOP_LIST_EMPTY
|
||||
%s QOP list is empty.
|
||||
CHAN_QOP_LIST_HEADER
|
||||
QOP list for %s:
|
||||
Num Nick
|
||||
CHAN_QOP_CLEAR
|
||||
Channel %s QOP list has been cleared.
|
||||
|
||||
# AOP messages
|
||||
CHAN_AOP_SYNTAX
|
||||
AOP kanaal {ADD|DEL|LIST|CLEAR} [nick | lijst]
|
||||
@@ -1396,7 +1432,7 @@ CHAN_VOP_CLEAR
|
||||
|
||||
# ACCESS messages
|
||||
CHAN_ACCESS_SYNTAX
|
||||
ACCESS kanaal {ADD|DEL|LIST|CLEAR} [nick [niveau] | lijst]
|
||||
ACCESS kanaal {ADD|DEL|LIST|VIEW|CLEAR} [nick [niveau] | lijst]
|
||||
CHAN_ACCESS_XOP
|
||||
Je kan dit commando niet gebruiken.
|
||||
Gebruik de AOP, SOP en VOP commando's in plaats van deze.
|
||||
@@ -1446,6 +1482,12 @@ CHAN_ACCESS_LIST_AXS_FORMAT
|
||||
%3d %4d %s
|
||||
CHAN_ACCESS_CLEAR
|
||||
Kanaal %s toegangslijst is leeggemaakt.
|
||||
CHAN_ACCESS_VIEW_XOP_FORMAT
|
||||
%3d %s %s
|
||||
by %s, last seen %s
|
||||
CHAN_ACCESS_VIEW_AXS_FORMAT
|
||||
%3d %4d %s
|
||||
by %s, last seen %s
|
||||
|
||||
# AKICK responses
|
||||
CHAN_AKICK_SYNTAX
|
||||
@@ -1500,6 +1542,8 @@ CHAN_LEVELS_RANGE
|
||||
Niveau moet tussen de %d en %d inclusief zijn.
|
||||
CHAN_LEVELS_CHANGED
|
||||
Niveau voor %s op kanaal %s veranderd in %d.
|
||||
CHAN_LEVELS_CHANGED_FOUNDER
|
||||
Level for %s on channel %s changed to founder only.
|
||||
CHAN_LEVELS_UNKNOWN
|
||||
Instelling %s onbekend. Type %R%s HELP LEVELS DESC voor een lijst van geldige instellingen.
|
||||
CHAN_LEVELS_DISABLED
|
||||
@@ -1582,6 +1626,8 @@ CHAN_INFO_OPT_TOPICLOCK
|
||||
Topicslot
|
||||
CHAN_INFO_OPT_XOP
|
||||
xOP lijsten systeem
|
||||
CHAN_INFO_OPT_PERSIST
|
||||
Persistant
|
||||
CHAN_INFO_OPT_NONE
|
||||
Geen
|
||||
CHAN_INFO_MODE_LOCK
|
||||
@@ -1610,12 +1656,17 @@ CHAN_INVITE_ALREADY_IN
|
||||
You are already in %s!
|
||||
CHAN_INVITE_SUCCESS
|
||||
You have been invited to %s.
|
||||
CHAN_INVITE_OTHER_SUCCESS
|
||||
%s has been invited to %s.
|
||||
|
||||
|
||||
# UNBAN responses
|
||||
CHAN_UNBAN_SYNTAX
|
||||
UNBAN kanaal
|
||||
UNBAN kanaal [nick]
|
||||
CHAN_UNBANNED
|
||||
Bans met betrekking to jou op %s zijn opgeheven.
|
||||
Bans met betrekking tot jou op %s zijn opgeheven.
|
||||
CHAN_UNBANNED_OTHER
|
||||
%s has been unbanned from %s.
|
||||
|
||||
# TOPIC responses
|
||||
CHAN_TOPIC_SYNTAX
|
||||
@@ -1641,15 +1692,7 @@ CHAN_CLEARED_USERS
|
||||
CHAN_CLEARED_INVITES
|
||||
All invites on channel %s have been removed.
|
||||
|
||||
# GETPASS responses
|
||||
CHAN_GETPASS_SYNTAX
|
||||
GETPASS kanaal
|
||||
CHAN_GETPASS_UNAVAILABLE
|
||||
GETPASS commando onbeschikbaar wegens encryptie van de gegevens.
|
||||
CHAN_GETPASS_PASSWORD_IS
|
||||
Wachtwoord voor kanaal %s is %s.
|
||||
|
||||
# SENDPASS responses
|
||||
# GETKEY responses
|
||||
CHAN_GETKEY_SYNTAX
|
||||
GETKEY channel
|
||||
CHAN_GETKEY_NOKEY
|
||||
@@ -1657,28 +1700,6 @@ CHAN_GETKEY_NOKEY
|
||||
CHAN_GETKEY_KEY
|
||||
Key for channel %s is %s.
|
||||
|
||||
# SENDPASS responses
|
||||
CHAN_SENDPASS_SYNTAX
|
||||
SENDPASS kanaal
|
||||
CHAN_SENDPASS_UNAVAILABLE
|
||||
SENDPASS commando onbeschikbaar wegens encryptie van de gegevens.
|
||||
CHAN_SENDPASS_SUBJECT
|
||||
Kanaal wachtwoord (%s)
|
||||
CHAN_SENDPASS_HEAD
|
||||
Hallo,
|
||||
CHAN_SENDPASS_LINE_1
|
||||
Je hebt het wachtwoord aangevraag van kanaal %s via e-mail.
|
||||
CHAN_SENDPASS_LINE_2
|
||||
Het wachtwoord is %s. Wegens veiligheidsredenen zou je deze zo snel mogelijk moeten veranderen.
|
||||
CHAN_SENDPASS_LINE_3
|
||||
Als je niet weet waarom deze e-mail verstuurd is, negeer deze dan.
|
||||
CHAN_SENDPASS_LINE_4
|
||||
ANTWOORD NIET OP DEZE MAIL!
|
||||
CHAN_SENDPASS_LINE_5
|
||||
%s beheerders.
|
||||
CHAN_SENDPASS_OK
|
||||
Wachtwoord %s is verstuurd.
|
||||
|
||||
# FORBID responses
|
||||
CHAN_FORBID_SYNTAX
|
||||
FORBID kanaal [reden]
|
||||
@@ -2148,6 +2169,8 @@ BOT_UNASSIGN_SYNTAX
|
||||
UNASSIGN kanaal
|
||||
BOT_UNASSIGN_UNASSIGNED
|
||||
Er is geen bot meer toegewezen aan %s.
|
||||
BOT_UNASSIGN_PERSISTANT_CHAN
|
||||
You can not unassign bots while persist is set on the channel.
|
||||
|
||||
# INFO responses
|
||||
BOT_INFO_SYNTAX
|
||||
@@ -2944,8 +2967,6 @@ OPER_DEFCON_SYNTAX
|
||||
DEFCON [1|2|3|4|5]
|
||||
OPER_DEFCON_DENIED
|
||||
Services zijn in Defcon modus. Probeer later opnieuw.
|
||||
OPER_DEFCON_NO_CONF
|
||||
Het Defcon systeem moet worden ingeschakeld via services.conf
|
||||
OPER_DEFCON_CHANGED
|
||||
Services zijn nu in DEFCON %d
|
||||
OPER_DEFCON_WALL
|
||||
@@ -2965,6 +2986,10 @@ OPER_MODULE_REMOVE_FAIL
|
||||
Het verwijderen van module %s is gefaald
|
||||
OPER_MODULE_NO_UNLOAD
|
||||
This module can not be unloaded.
|
||||
OPER_MODULE_ALREADY_LOADED
|
||||
Module %s is already loaded.
|
||||
OPER_MODULE_ISNT_LOADED
|
||||
Module %s isn't loaded.
|
||||
OPER_MODULE_LOAD_SYNTAX
|
||||
MODLOAD bestandsnaam
|
||||
OPER_MODULE_UNLOAD_SYNTAX
|
||||
@@ -3354,6 +3379,8 @@ NICK_HELP_CMD_RELEASE
|
||||
RELEASE Je nick terugnemen nadat je RECOVER gebruikt hebt
|
||||
NICK_HELP_CMD_SENDPASS
|
||||
SENDPASS Je wachtwoord vergeten? Probeer dit
|
||||
NICK_HELP_CMD_RESETPASS
|
||||
RESETPASS Helps you reset lost passwords.
|
||||
NICK_HELP_CMD_GHOST
|
||||
GHOST Disconnects a "ghost" IRC session using your nick
|
||||
NICK_HELP_CMD_ALIST
|
||||
@@ -3941,6 +3968,12 @@ NICK_HELP_SENDPASS
|
||||
|
||||
Kan gelimiteerd zijn tot IRC operators op sommige netwerken.
|
||||
|
||||
NICK_HELP_RESETPASS
|
||||
Syntax: RESETPASS nickname
|
||||
|
||||
Sends a code key to the nickname with instructions on how to
|
||||
reset their password.
|
||||
|
||||
NICK_HELP_CONFIRM
|
||||
Syntax: CONFIRM passcode
|
||||
|
||||
@@ -3950,6 +3983,14 @@ NICK_HELP_CONFIRM
|
||||
is sent to your e-mail address in the first step of the
|
||||
registration process. For more information about the first
|
||||
stage of the registration process, type: %R%S HELP REGISTER
|
||||
|
||||
This is also used after the RESETPASS command has been used to
|
||||
force identify you to your nick so you may change your password
|
||||
|
||||
NICK_HELP_CONFIRM_OPER
|
||||
|
||||
Additionally, Services Operators with the nickserv/confirm permission can
|
||||
replace passcode with a users nick to force validate them.
|
||||
|
||||
NICK_HELP_RESEND
|
||||
Syntax: RESEND
|
||||
@@ -4116,10 +4157,10 @@ CHAN_HELP_CMD_STATUS
|
||||
op een kanaal weer
|
||||
CHAN_HELP_CMD_REGISTER
|
||||
REGISTER Registreer een kanaal
|
||||
CHAN_HELP_CMD_IDENTIFY
|
||||
IDENTIFY Identificeer jezelf met je wachtwoord
|
||||
CHAN_HELP_CMD_SET
|
||||
SET Stel kanaal opties en informatie in
|
||||
CHAN_HELP_CMD_QOP
|
||||
QOP Modify the list of QOP users
|
||||
CHAN_HELP_CMD_AOP
|
||||
AOP Wijzig de lijst van AOP's
|
||||
CHAN_HELP_CMD_SOP
|
||||
@@ -4132,8 +4173,6 @@ CHAN_HELP_CMD_AKICK
|
||||
AKICK Beheer de AutoKick lijst
|
||||
CHAN_HELP_CMD_DROP
|
||||
DROP Annuleer een kanaalregistratie
|
||||
CHAN_HELP_CMD_SENDPASS
|
||||
SENDPASS Wachtwoord vergeten?
|
||||
CHAN_HELP_CMD_BAN
|
||||
BAN Bans a selected nick on a channel
|
||||
CHAN_HELP_CMD_CLEAR
|
||||
@@ -4150,8 +4189,6 @@ CHAN_HELP_CMD_KICK
|
||||
KICK Kicks a selected nick from a channel
|
||||
CHAN_HELP_CMD_LIST
|
||||
LIST Lists all registered channels matching the given pattern
|
||||
CHAN_HELP_CMD_LOGOUT
|
||||
LOGOUT This command will logout the selected nickname
|
||||
CHAN_HELP_CMD_OP
|
||||
OP Gives Op status to a selected nick on a channel
|
||||
CHAN_HELP_CMD_TOPIC
|
||||
@@ -4176,10 +4213,6 @@ CHAN_HELP_CMD_OWNER
|
||||
OWNER Gives you owner status on channel
|
||||
CHAN_HELP_CMD_PROTECT
|
||||
PROTECT Protects a selected nick on a channel
|
||||
CHAN_HELP_CMD_ADMIN
|
||||
ADMIN Protects a selected nick on a channel
|
||||
CHAN_HELP_CMD_DEADMIN
|
||||
DEADMIN Deprotects a selected nick on a channel
|
||||
CHAN_HELP_CMD_DEOP
|
||||
DEOP Deops a selected nick on a channel
|
||||
|
||||
@@ -4200,52 +4233,32 @@ CHAN_HELP_EXPIRES
|
||||
het kanaal binnen is gekomen) automatisch zal worden verwijderd.
|
||||
|
||||
CHAN_HELP_REGISTER
|
||||
Gebruik: REGISTER kanaal wachtwoord beschrijving
|
||||
Gebruik: REGISTER kanaal beschrijving
|
||||
|
||||
Registreert een kanaal in de %S database. Om dit commando te
|
||||
gebruiken moet je eerst een operator op het kanaal zijn dat
|
||||
je wil registreren. Het wachtwoord wordt gebruikt met het
|
||||
IDENTIFY commando dat anderen in staat stelt om later
|
||||
wijzigingen aan de kanaalinstellingen door te voeren. Het
|
||||
laatste paramenter, die moet worden opgegeven, is een
|
||||
algemene beschrijving van het doel van het kanaal.
|
||||
|
||||
Wanneer je een kanaal registreert wordt je de "stichter"
|
||||
van het kanaal. De kanaalstichter mag alle instellingen
|
||||
van het kanaal veranderen. %S zal ook de stichter automatisch
|
||||
stichterrechten geven wanneer deze het kanaal binnenkomt.
|
||||
Zie het ACCESS commando (%R%S HELP ACCESS) voor meer
|
||||
informatie over het geven van rechten aan andere kanaalgebruikers.
|
||||
|
||||
OPMERKING: Om een kanaal te registreren moet je je nick
|
||||
eerst geregistreerd hebben. Als je dit niet gedaan hebt
|
||||
bekijk dan %R%s HELP voor informatie over hoe je
|
||||
dit kunt doen.
|
||||
Registers a channel in the %S database. In order
|
||||
to use this command, you must first be a channel operator
|
||||
on the channel you're trying to register.
|
||||
The description, which must be included, is a
|
||||
general description of the channel's purpose.
|
||||
|
||||
CHAN_HELP_IDENTIFY
|
||||
Gebruik: IDENTIFY kanaal wachtwoord
|
||||
|
||||
Identificeert je bij %S als de stichter van het gegeven
|
||||
kanaal. Veel commando's verplichten je dit commando te
|
||||
gebruiken voordat je ze gebruikt. Het wachtwoord moet
|
||||
identiek zijn aan degene verstuurd met het REGISTER
|
||||
commando.
|
||||
When you register a channel, you are recorded as the
|
||||
"founder" of the channel. The channel founder is allowed
|
||||
to change all of the channel settings for the channel;
|
||||
%S will also automatically give the founder
|
||||
channel-operator privileges when s/he enters the channel.
|
||||
See the ACCESS command (%R%S HELP ACCESS) for
|
||||
information on giving a subset of these privileges to
|
||||
other channel users.
|
||||
|
||||
CHAN_HELP_LOGOUT
|
||||
Gebruik: LOGOUT kanaal nick
|
||||
|
||||
Dit commando zorgt ervoor dat de opgegeven nick niet meer
|
||||
geidentificeerd is voor het opgegeven kanaal
|
||||
|
||||
Als je de stichter van het kanaal bent kan je iedereen
|
||||
uitloggen, anders alleen jezelf.
|
||||
NOTICE: In order to register a channel, you must have
|
||||
first registered your nickname. If you haven't,
|
||||
%R%s HELP for information on how to do so.
|
||||
|
||||
CHAN_HELP_DROP
|
||||
Gebruik: DROP kanaal
|
||||
|
||||
Heft de registratie van het gegeven kanaal op. Kan alleen
|
||||
gebruik wordt door de kanaalstichter, die eerst het
|
||||
IDENTIFY commando moet gebruiken.
|
||||
gebruik wordt door de kanaalstichter.
|
||||
|
||||
CHAN_HELP_SET
|
||||
Gebruik: SET kanaal optie parameters
|
||||
@@ -4257,7 +4270,6 @@ CHAN_HELP_SET
|
||||
|
||||
FOUNDER Stelt de stichter van het kanaal in
|
||||
SUCCESSOR Stelt de opvolger van het kanaal in
|
||||
PASSWORD Stelt het stichterwachtwoord in
|
||||
DESC Stelt de kanaalbeschrijving in
|
||||
URL Associeer een URL met het kanaal
|
||||
EMAIL Associate een E-mail adres met het kanaal
|
||||
@@ -4279,6 +4291,7 @@ CHAN_HELP_SET
|
||||
KICK commando
|
||||
TOPICLOCK Topic kan alleen veranderd worden met TOPIC
|
||||
XOP Schakel het gebruikersprivilegesysteem om
|
||||
PERSIST Set the channel as permanent
|
||||
|
||||
Type %R%S HELP option voor meer informatie over een
|
||||
specifieke optie.
|
||||
@@ -4301,12 +4314,6 @@ CHAN_HELP_SET_SUCCESSOR
|
||||
er geen opvolger is ingesteld. De nieuwe nick moet een
|
||||
geregistreerde nick zijn.
|
||||
|
||||
CHAN_HELP_SET_PASSWORD
|
||||
Gebruik: SET kanaal PASSWORD wachtwoord
|
||||
|
||||
Stelt het wachtwoord in dat gebruikt wordt om de stichter
|
||||
van het kanaal te identificeren.
|
||||
|
||||
CHAN_HELP_SET_DESC
|
||||
Gebruik: SET kanaal DESC beschrijving
|
||||
|
||||
@@ -4489,6 +4496,29 @@ CHAN_HELP_SET_XOP
|
||||
Het overschakelen van xOP lijsten naar het toegangslijsten
|
||||
systeem brengt echter geen problemen met zich mee.
|
||||
|
||||
CHAN_HELP_SET_PERSIST
|
||||
Syntax: SET channel PERSIST {ON | OFF}
|
||||
|
||||
Enables or disables the persistant channel setting.
|
||||
When persistant is set, the service bot will remain
|
||||
in the channel when it has emptied of users.
|
||||
|
||||
If your IRCd does not a permanent (persistant) channel
|
||||
mode you must have a service bot in your channel to
|
||||
set persist on, and it can not be unassigned while persist
|
||||
is on.
|
||||
|
||||
If this network does not have BotServ enabled and does
|
||||
not have a permanent channel mode, ChanServ will
|
||||
join your channel when you set persist on (and leave when
|
||||
it has been set off).
|
||||
|
||||
If your IRCd has a permanent (persistant) channel mode
|
||||
and is is set or unset (for any reason, including MLOCK),
|
||||
persist is automatically set and unset for the channel aswell.
|
||||
Additionally, services will set or unset this mode when you
|
||||
set persist on or off.
|
||||
|
||||
CHAN_HELP_SET_OPNOTICE
|
||||
Gebruik: SET kanaal OPNOTICE {ON | OFF}
|
||||
|
||||
@@ -4497,6 +4527,45 @@ CHAN_HELP_SET_OPNOTICE
|
||||
het kanaal sturen wanneer de OP of DEOP commando's worden
|
||||
gebruikt voor een gebruiker in het kanaal.
|
||||
|
||||
CHAN_HELP_QOP
|
||||
Syntax: QOP channel ADD nick
|
||||
QOP channel DEL {nick | entry-num | list}
|
||||
QOP channel LIST [mask | list]
|
||||
QOP channel CLEAR
|
||||
|
||||
Maintains the QOP (AutoOwner) list for a channel. The QOP
|
||||
list gives users the right to be auto-owner on your channel,
|
||||
which gives them almost (or potentially, total) access.
|
||||
|
||||
The QOP ADD command adds the given nickname to the
|
||||
QOP list.
|
||||
|
||||
The QOP DEL command removes the given nick from the
|
||||
QOP list. If a list of entry numbers is given, those
|
||||
entries are deleted. (See the example for LIST below.)
|
||||
|
||||
The QOP LIST command displays the QOP list. If
|
||||
a wildcard mask is given, only those entries matching the
|
||||
mask are displayed. If a list of entry numbers is given,
|
||||
only those entries are shown; for example:
|
||||
|
||||
QOP #channel LIST 2-5,7-9
|
||||
Lists QOP entries numbered 2 through 5 and
|
||||
7 through 9.
|
||||
|
||||
The QOP CLEAR command clears all entries of the
|
||||
QOP list.
|
||||
|
||||
The QOP commands are limited to
|
||||
founders (unless SECUREOPS is off). However, any user on the
|
||||
QOP list may use the QOP LIST command.
|
||||
|
||||
This command may have been disabled for your channel, and
|
||||
in that case you need to use the access list. See
|
||||
%R%S HELP ACCESS for information about the access list,
|
||||
and %R%S HELP SET XOP to know how to toggle between
|
||||
the access list and xOP list systems.
|
||||
|
||||
CHAN_HELP_AOP
|
||||
Gebruik: AOP kanaal ADD nick
|
||||
AOP kanaal DEL {nick | entry-nr | lijst}
|
||||
@@ -4663,6 +4732,7 @@ CHAN_HELP_ACCESS
|
||||
Gebruik: ACCESS kanaal ADD nick niveau
|
||||
ACCESS kanaal DEL {nick | entry-nr | lijst}
|
||||
ACCESS kanaal LIST [mask | lijst]
|
||||
ACCESS kanaal VIEW [mask | lijst]
|
||||
ACCESS kanaal CLEAR
|
||||
|
||||
Onderhoud de toegangslijst voor een kanaal. De toegangs-
|
||||
@@ -4696,7 +4766,10 @@ CHAN_HELP_ACCESS
|
||||
ACCESS #kanaal LIST 2-5,7-9
|
||||
Geeft gebruikers 2 t/m 5 en 7 t/m 9 van de
|
||||
toegangslijst weer.
|
||||
|
||||
|
||||
The ACCESS VIEW command displays the access list similar
|
||||
to ACCESS LIST but shows the creator and last used time.
|
||||
|
||||
Het ACCESS CLEAR commando maakt de toegangslijst leeg.
|
||||
|
||||
CHAN_HELP_ACCESS_LEVELS
|
||||
@@ -4773,31 +4846,30 @@ CHAN_HELP_AKICK
|
||||
The AKICK CLEAR commando maakt de AutoKick lijst leeg.
|
||||
|
||||
CHAN_HELP_LEVELS
|
||||
Gebruik: LEVELS kanaal SET type niveau
|
||||
Gebruik: LEVELS kanaal SET type [niveau|FOUNDER]
|
||||
LEVELS kanaal {DIS | DISABLE} type
|
||||
LEVELS kanaal LIST
|
||||
LEVELS kanaal RESET
|
||||
|
||||
Het LEVELS commando staat precieze controle toe over de
|
||||
betekenis van de numerieke toegangsniveaus die worden
|
||||
gebruikt voor kanalen. Met dit commando kan je de toegangs-
|
||||
niveaus defineren die benodigd zijn voor de meeste functies
|
||||
van %S. (De SET FOUNDER en SET PASSWORD commando's zijn,
|
||||
evenals dit commando, altijd gelimiteerd tot de stichter.)
|
||||
The LEVELS command allows fine control over the meaning of
|
||||
the numeric access levels used for channels. With this
|
||||
command, you can define the access level required for most
|
||||
of %S's functions. (The SET FOUNDER and this command
|
||||
are always restricted to the channel founder.)
|
||||
|
||||
LEVELS SET staat toe om de toegangsniveaus voor functies
|
||||
of een groep functies te veranderen. LEVELS DISABLE (of
|
||||
kortweg DIS) schakelt een automatische functie uit, of
|
||||
staat gebruik van de functie niet toe door iemand anders
|
||||
dan de stichter.
|
||||
LEVELS SET allows the access level for a function or group of
|
||||
functions to be changed. LEVELS DISABLE (or DIS for short)
|
||||
disables an automatic feature or disallows access to a
|
||||
function by anyone, INCLUDING the founder (although, the founder
|
||||
can always reenable it).
|
||||
|
||||
LEVELS LIST geeft de huidige levels voor elke functie of
|
||||
groep van functies weer. LEVELS RESET stelt de niveaus in
|
||||
op de standaardwaarden van een nieuw kanaal (zie
|
||||
HELP ACCESS LEVELS).
|
||||
LEVELS LIST shows the current levels for each function or
|
||||
group of functions. LEVELS RESET resets the levels to the
|
||||
default levels of a newly-created channel (see
|
||||
HELP ACCESS LEVELS).
|
||||
|
||||
Voor een list van de opties en functies waarvan de niveaus
|
||||
kunnen worden aangepast, zie HELP LEVELS DESC.
|
||||
For a list of the features and functions whose levels can be
|
||||
set, see HELP LEVELS DESC.
|
||||
|
||||
CHAN_HELP_LEVELS_DESC
|
||||
De volgende optie-/functienamen worden begrepen. Let op dat
|
||||
@@ -4931,10 +5003,10 @@ CHAN_HELP_INVITE
|
||||
niveau 5 of hoger op het kanaal.
|
||||
|
||||
CHAN_HELP_UNBAN
|
||||
Gebruik: UNBAN kanaal
|
||||
Gebruik: UNBAN kanaal [nick]
|
||||
|
||||
Zorgt ervoor dat %S alle bans verwijdert die je ervan
|
||||
belemmeren het gegeven kanaal te joinen.
|
||||
Tells %S to remove all bans preventing you or the given
|
||||
user from entering the given channel.
|
||||
|
||||
Standaard is dit gelimiteerd tot AOPs of degenen met
|
||||
niveau 5 of hoger op het kanaal.
|
||||
@@ -4996,16 +5068,6 @@ CHAN_HELP_GETKEY
|
||||
Gebruik: GETKEY kanaal
|
||||
|
||||
Geef de key van het gegeven kanaal terug.
|
||||
|
||||
CHAN_HELP_SENDPASS
|
||||
Gebruik: SENDPASS kanaal
|
||||
|
||||
Stuur het wachtwoord van het gegeven kanaal naar het email
|
||||
adres gespecificeerd in NickServ voor de stichter van het
|
||||
kanaal. Dit commando is erg bruikbaar om verloren wacht-
|
||||
woorden terug te halen.
|
||||
|
||||
Kan gelimiteerd zijn tot IRC operators op sommige netwerken.
|
||||
|
||||
CHAN_SERVADMIN_HELP
|
||||
|
||||
@@ -5013,20 +5075,6 @@ CHAN_SERVADMIN_HELP
|
||||
ze hoeven te indentificeren via een wachtwoord, en kunnen de
|
||||
toegangs-, AKICK-, en niveau-lijsten bekijken voor elk kanaal.
|
||||
|
||||
CHAN_SERVADMIN_HELP_LOGOUT
|
||||
Gebruik: LOGOUT kanaal [nick]
|
||||
|
||||
Dit kanaal zorgt ervoor dat de gegeven nick niet meer
|
||||
geidentificeerd is voor het gegeven kanaal.
|
||||
|
||||
Als je de stichter van het kanaal bent kun je iedereen
|
||||
uitloggen, anders kun je alleen jezelf uitloggen.
|
||||
|
||||
Als je een Services Operatorstrator bent kun je iedereen
|
||||
uitloggen van elke kanaal zonder daar stichter-rechten te
|
||||
hebben. Je kan ook het nick-paramenter weglaten: dit
|
||||
zorgt ervoor dat iedereen uitgelogd zal worden.
|
||||
|
||||
CHAN_SERVADMIN_HELP_DROP
|
||||
Gebruik: DROP kanaal
|
||||
|
||||
@@ -5049,8 +5097,8 @@ CHAN_SERVADMIN_HELP_SET_NOEXPIRE
|
||||
|
||||
CHAN_SERVADMIN_HELP_INFO
|
||||
|
||||
Services Operatorstrators kunnen het ALL parameter gebruiken
|
||||
bij elk kanaal.
|
||||
Services Operators with the chanserv/auspex permission can
|
||||
use the ALL parameter with any channel.
|
||||
|
||||
CHAN_SERVADMIN_HELP_LIST
|
||||
Gebruik: LIST trefbeeld [FORBIDDEN] [SUSPENDED] [NOEXPIRE]
|
||||
@@ -6443,3 +6491,15 @@ OPER_UMODE_UNSUPPORTED
|
||||
OPER_SUPER_ADMIN_NOT_ENABLED
|
||||
SuperAdmin instelling is niet ingeschakeld in services.conf
|
||||
|
||||
OPER_HELP_SYNC
|
||||
Syntax: SQLSYNC
|
||||
|
||||
This command syncs your databases with SQL. You should
|
||||
only have to execute this command once, when you initially
|
||||
import your databases into SQL.
|
||||
OPER_HELP_CMD_SQLSYNC
|
||||
SQLSYNC Import your databases to SQL
|
||||
OPER_SYNC_UPDATING
|
||||
Updating MySQL.
|
||||
OPER_SYNC_UPDATED
|
||||
Finished updating MySQL.
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
#
|
||||
###########################################################################
|
||||
#
|
||||
# (C) 2003-2009 Anope Team
|
||||
# (C) 2003-2010 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Please read COPYING and README for further details.
|
||||
@@ -1108,6 +1108,24 @@ NICK_SENDPASS_LINE_5
|
||||
NICK_SENDPASS_OK
|
||||
Has³o do nicka %s zosta³o wys³ane.
|
||||
|
||||
# RESETPASS responses
|
||||
NICK_RESETPASS_SYNTAX
|
||||
RESETPASS nickname
|
||||
NICK_RESETPASS_SUBJECT
|
||||
Reset password request for %s
|
||||
NICK_RESETPASS_MESSAGE
|
||||
Hi,
|
||||
|
||||
You have requested to have the password for %s reset.
|
||||
To reset your password, type %R%s CONFIRM %s
|
||||
If you don't know why this mail is sent to you, please ignore it silently.
|
||||
|
||||
PLEASE DON'T ANSWER TO THIS MAIL!
|
||||
|
||||
%s administrators.
|
||||
NICK_RESETPASS_COMPLETE
|
||||
Password reset email for %s has been sent.
|
||||
|
||||
# SUSPEND responses
|
||||
NICK_SUSPEND_SYNTAX
|
||||
SUSPEND nick powód
|
||||
@@ -1158,14 +1176,6 @@ NICK_ENTER_REG_CODE
|
||||
Kod zosta³ wys³any na adres %s.
|
||||
Napisz %R%s CONFIRM <kod>, aby dokoñczyæ procedurê rejestracji.
|
||||
|
||||
NICK_CONFIRM_NOT_FOUND
|
||||
Termin wa¿no¶ci kodu rejestracyjnego up³yn±³.
|
||||
Napisz: %R%s REGISTER <has³o> <email>,
|
||||
aby znowu zacz±æ rejestracje.
|
||||
|
||||
NICK_CONFIRM_INVALID
|
||||
Podano nieprawid³owy kod, sprawd¼ wiadomo¶æ e-mail i spróbowaæ ponownie.
|
||||
|
||||
NICK_REG_MAIL_SUBJECT
|
||||
Rejestracja nicka %s
|
||||
|
||||
@@ -1192,6 +1202,20 @@ NICK_GETPASS_PASSCODE_IS
|
||||
NICK_FORCE_REG
|
||||
Nick %s potwierdzony.
|
||||
|
||||
NICK_CONFIRM_NOT_FOUND
|
||||
Termin wa¿no¶ci kodu rejestracyjnego up³yn±³.
|
||||
Napisz: %R%s REGISTER <has³o> <email>,
|
||||
aby znowu zacz±æ rejestracje.
|
||||
|
||||
NICK_CONFIRM_INVALID
|
||||
Podano nieprawid³owy kod, sprawd¼ wiadomo¶æ e-mail i spróbowaæ ponownie.
|
||||
|
||||
NICK_CONFIRM_EXPIRED
|
||||
Your password reset request has expired.
|
||||
|
||||
NICK_CONFIRM_SUCCESS
|
||||
You are now identified for your nick. Change your password using "%R%s SET PASSWORD newpassword" now.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
# ChanServ messages
|
||||
@@ -1306,6 +1330,15 @@ CHAN_LEVEL_TOPIC
|
||||
CHAN_LEVEL_INFO
|
||||
Pozwala u¿ywaæ opcji ALL w komendzie INFO
|
||||
|
||||
CHAN_LEVEL_AUTOOWNER
|
||||
Automatic mode +q
|
||||
|
||||
CHAN_LEVEL_OWNER
|
||||
Allowed to use OWNER command
|
||||
|
||||
CHAN_LEVEL_OWNERME
|
||||
Allowed to (de)owner him/herself
|
||||
|
||||
# Automatic responses
|
||||
CHAN_IS_REGISTERED
|
||||
Ten kana³ zosta³ zarejestrowany z %s.
|
||||
@@ -1324,7 +1357,7 @@ CHAN_X_INVALID
|
||||
|
||||
# REGISTER responses
|
||||
CHAN_REGISTER_SYNTAX
|
||||
REGISTER kana³ has³o opis
|
||||
REGISTER kana³ opis
|
||||
|
||||
CHAN_REGISTER_DISABLED
|
||||
Rejestracja kana³ów jest tymczasowo wy³±czona.
|
||||
@@ -1354,41 +1387,12 @@ CHAN_REGISTERED
|
||||
Kana³ %s zosta³ teraz zarejestrowany.
|
||||
Jako %s jeste¶ od teraz jego w³a¶cicielem.
|
||||
|
||||
CHAN_PASSWORD_IS
|
||||
Has³o do Twojego kana³u to %s
|
||||
|
||||
CHAN_REGISTER_NONE_CHANNEL
|
||||
Próbujesz rejestrowaæ nieistniej±cy kana³ %s
|
||||
|
||||
CHAN_SYMBOL_REQUIRED
|
||||
U¿yj symboli # lub & podczas rejestracji
|
||||
|
||||
# IDENTIFY responses
|
||||
CHAN_IDENTIFY_SYNTAX
|
||||
IDENTIFY kana³ has³o
|
||||
|
||||
CHAN_IDENTIFY_FAILED
|
||||
Identyfikacja nie powiod³a siê.
|
||||
|
||||
CHAN_IDENTIFY_SUCCEEDED
|
||||
Has³o przyjête - masz uprawnienia w³a¶ciciela kana³u %s.
|
||||
|
||||
# LOGOUT responses
|
||||
CHAN_LOGOUT_SYNTAX
|
||||
LOGOUT kana³ nick
|
||||
|
||||
CHAN_LOGOUT_SERVADMIN_SYNTAX
|
||||
LOGOUT kana³ [nick]
|
||||
|
||||
CHAN_LOGOUT_SUCCEEDED
|
||||
U¿ytkownik %s zosta³ wylogowany z kana³u %s.
|
||||
CHAN_LOGOUT_ALL_SUCCEEDED
|
||||
Wylogowano zidentyfikowanych u¿ytkowników z kana³u %s (bez w³a¶ciciela).
|
||||
CHAN_LOGOUT_FOUNDER_FAILED
|
||||
Nie mo¿esz siê wylogowaæ z %s (jeste¶ w³a¶cicielem).
|
||||
CHAN_LOGOUT_NOT_LOGGEDIN
|
||||
U¿ytkownik %s nie by³ zalogowany na kanale %s.
|
||||
|
||||
# DROP responses
|
||||
CHAN_DROP_SYNTAX
|
||||
DROP kana³
|
||||
@@ -1426,16 +1430,6 @@ CHAN_SUCCESSOR_UNSET
|
||||
CHAN_SUCCESSOR_IS_FOUNDER
|
||||
%s nie mo¿e byæ zastêpc± na kanale %s, poniewa¿ jest jego w³a¶cicielem.
|
||||
|
||||
# SET PASSWORD responses
|
||||
CHAN_SET_PASSWORD_FAILED
|
||||
Zmiana has³a nie powiod³a siê.
|
||||
|
||||
CHAN_PASSWORD_CHANGED
|
||||
Has³o do kana³u %s zosta³o zmienione.
|
||||
|
||||
CHAN_PASSWORD_CHANGED_TO
|
||||
Has³o do kana³u %s zosta³o zmienione na %s.
|
||||
|
||||
# SET DESC responses
|
||||
CHAN_DESC_CHANGED
|
||||
Opis kana³u %s zosta³ zmieniony na %s.
|
||||
@@ -1599,6 +1593,14 @@ CHAN_SET_XOP_ON
|
||||
CHAN_SET_XOP_OFF
|
||||
System list xOP na kanale %s zosta³ wy³±czony.
|
||||
|
||||
# SET PERSISTANT responces
|
||||
CHAN_SET_PERSIST_SYNTAX
|
||||
SET channel PERSIST {ON | OFF}
|
||||
CHAN_SET_PERSIST_ON
|
||||
Channel %s is now persistant.
|
||||
CHAN_SET_PERSIST_OFF
|
||||
Channel %s is no longer persistant.
|
||||
|
||||
# SET NOEXPIRE responses
|
||||
CHAN_SET_NOEXPIRE_SYNTAX
|
||||
SET kana³ NOEXPIRE {ON | OFF}
|
||||
@@ -1623,6 +1625,37 @@ CHAN_XOP_ACCESS
|
||||
CHAN_XOP_NOT_AVAILABLE
|
||||
System xOP nie jest dostêpny.
|
||||
|
||||
# QOP messages
|
||||
CHAN_QOP_SYNTAX
|
||||
QOP channel {ADD|DEL|LIST|CLEAR} [nick | entry-list]
|
||||
CHAN_QOP_DISABLED
|
||||
Sorry, channel QOP list modification is temporarily disabled.
|
||||
CHAN_QOP_NICKS_ONLY
|
||||
Channel QOP lists may only contain registered nicknames.
|
||||
CHAN_QOP_ADDED
|
||||
%s added to %s QOP list.
|
||||
CHAN_QOP_MOVED
|
||||
%s moved to %s QOP list.
|
||||
CHAN_QOP_NO_SUCH_ENTRY
|
||||
No such entry (#%d) on %s QOP list.
|
||||
CHAN_QOP_NOT_FOUND
|
||||
%s not found on %s QOP list.
|
||||
CHAN_QOP_NO_MATCH
|
||||
No matching entries on %s QOP list.
|
||||
CHAN_QOP_DELETED
|
||||
%s deleted from %s QOP list.
|
||||
CHAN_QOP_DELETED_ONE
|
||||
Deleted 1 entry from %s QOP list.
|
||||
CHAN_QOP_DELETED_SEVERAL
|
||||
Deleted %d entries from %s QOP list.
|
||||
CHAN_QOP_LIST_EMPTY
|
||||
%s QOP list is empty.
|
||||
CHAN_QOP_LIST_HEADER
|
||||
QOP list for %s:
|
||||
Num Nick
|
||||
CHAN_QOP_CLEAR
|
||||
Channel %s QOP list has been cleared.
|
||||
|
||||
# AOP messages
|
||||
CHAN_AOP_SYNTAX
|
||||
AOP kana³ {ADD|DEL|LIST|CLEAR} [nick | pozycja]
|
||||
@@ -1801,7 +1834,7 @@ CHAN_VOP_CLEAR
|
||||
|
||||
# ACCESS messages
|
||||
CHAN_ACCESS_SYNTAX
|
||||
ACCESS kana³ {ADD|DEL|LIST|CLEAR} [nick [poziom] | pozycja]
|
||||
ACCESS kana³ {ADD|DEL|LIST|VIEW|CLEAR} [nick [poziom] | pozycja]
|
||||
|
||||
CHAN_ACCESS_XOP
|
||||
Nie mo¿esz u¿yæ tej komendy.
|
||||
@@ -1877,6 +1910,14 @@ CHAN_ACCESS_LIST_AXS_FORMAT
|
||||
CHAN_ACCESS_CLEAR
|
||||
Lista dostêpu kana³u %s zosta³a wyczyszczona.
|
||||
|
||||
CHAN_ACCESS_VIEW_XOP_FORMAT
|
||||
%3d %s %s
|
||||
by %s, last seen %s
|
||||
|
||||
CHAN_ACCESS_VIEW_AXS_FORMAT
|
||||
%3d %4d %s
|
||||
by %s, last seen %s
|
||||
|
||||
# AKICK responses
|
||||
CHAN_AKICK_SYNTAX
|
||||
AKICK kana³ {ADD | STICK | UNSTICK | DEL | LIST | VIEW | ENFORCE | CLEAR} [nick-lub-maska] [powód]
|
||||
@@ -1955,6 +1996,9 @@ CHAN_LEVELS_CHANGED
|
||||
Wymagany poziom dla %s
|
||||
na kanale %s zmieniono teraz na %d.
|
||||
|
||||
CHAN_LEVELS_CHANGED_FOUNDER
|
||||
Level for %s on channel %s changed to founder only.
|
||||
|
||||
CHAN_LEVELS_UNKNOWN
|
||||
Nieznane ustawienie %s.
|
||||
Napisz %R%s HELP LEVELS DESC, aby uzyskaæ listê dostêpnych mo¿liwo¶ci.
|
||||
@@ -2075,6 +2119,9 @@ CHAN_INFO_OPT_TOPICLOCK
|
||||
CHAN_INFO_OPT_XOP
|
||||
XOP
|
||||
|
||||
CHAN_INFO_OPT_PERSIST
|
||||
Persistant
|
||||
|
||||
CHAN_INFO_OPT_NONE
|
||||
Brak
|
||||
|
||||
@@ -2111,14 +2158,20 @@ CHAN_INVITE_ALREADY_IN
|
||||
Przebywasz ju¿ na kanale %s!
|
||||
CHAN_INVITE_SUCCESS
|
||||
Zosta³e¶ zaproszony do %s.
|
||||
CHAN_INVITE_OTHER_SUCCESS
|
||||
%s has been invited to %s.
|
||||
|
||||
|
||||
# UNBAN responses
|
||||
CHAN_UNBAN_SYNTAX
|
||||
UNBAN kana³
|
||||
UNBAN kana³ [nick]
|
||||
|
||||
CHAN_UNBANNED
|
||||
Ban na kanale %s zosta³ zdjêty.
|
||||
|
||||
CHAN_UNBANNED_OTHER
|
||||
%s has been unbanned from %s.
|
||||
|
||||
# TOPIC responses
|
||||
CHAN_TOPIC_SYNTAX
|
||||
TOPIC kana³ [temat]
|
||||
@@ -2151,16 +2204,6 @@ CHAN_CLEARED_USERS
|
||||
CHAN_CLEARED_INVITES
|
||||
Wszystkie zaproszenia z kana³u %s zosta³y usuniête.
|
||||
|
||||
# GETPASS responses
|
||||
CHAN_GETPASS_SYNTAX
|
||||
GETPASS kana³
|
||||
|
||||
CHAN_GETPASS_UNAVAILABLE
|
||||
Komenda GETPASS nie dzia³a, bo has³a s± szyfrowane.
|
||||
|
||||
CHAN_GETPASS_PASSWORD_IS
|
||||
Has³o kana³u %s to %s.
|
||||
|
||||
# GETKEY responses
|
||||
CHAN_GETKEY_SYNTAX
|
||||
GETKEY kana³
|
||||
@@ -2171,38 +2214,6 @@ CHAN_GETKEY_NOKEY
|
||||
CHAN_GETKEY_KEY
|
||||
Kluczem do kana³u %s jest %s.
|
||||
|
||||
# SENDPASS responses
|
||||
CHAN_SENDPASS_SYNTAX
|
||||
SENDPASS kana³
|
||||
|
||||
CHAN_SENDPASS_UNAVAILABLE
|
||||
Komenda SENDPASS nie dzia³a, bo has³a s± szyfrowane.
|
||||
|
||||
CHAN_SENDPASS_SUBJECT
|
||||
Has³o do kana³u %s
|
||||
|
||||
CHAN_SENDPASS_HEAD
|
||||
Witaj!
|
||||
|
||||
CHAN_SENDPASS_LINE_1
|
||||
Za¿±da³e¶(a¶) wys³ania has³a do kana³u %s na e-mail.
|
||||
|
||||
CHAN_SENDPASS_LINE_2
|
||||
Twoje has³o to: %s.
|
||||
Dla w³asnego bezpieczeñstwa nale¿y to has³o natychmiast zmieniæ na inne.
|
||||
|
||||
CHAN_SENDPASS_LINE_3
|
||||
Je¶li nie wiesz dlaczego ta wiadomo¶æ dotar³a do Ciebie zignoruj j±. Je¶li ta sytuacja bêdzie siê powtarzaæ skontaktuj siê z administratorem sieci.
|
||||
|
||||
CHAN_SENDPASS_LINE_4
|
||||
PROSZÊ NIE ODPOWIADAÆ NA T¡ WIADOMO¦Æ!
|
||||
|
||||
CHAN_SENDPASS_LINE_5
|
||||
Administratorzy sieci %s.
|
||||
|
||||
CHAN_SENDPASS_OK
|
||||
Has³o do kana³u %s zosta³o wys³ane.
|
||||
|
||||
# FORBID responses
|
||||
CHAN_FORBID_SYNTAX
|
||||
FORBID kana³ [powód]
|
||||
@@ -2790,6 +2801,9 @@ BOT_UNASSIGN_SYNTAX
|
||||
BOT_UNASSIGN_UNASSIGNED
|
||||
Nie ma ¿adnych botów przydzielonych do %s.
|
||||
|
||||
BOT_UNASSIGN_PERSISTANT_CHAN
|
||||
You can not unassign bots while persist is set on the channel.
|
||||
|
||||
# INFO responses
|
||||
BOT_INFO_SYNTAX
|
||||
INFO {kana³ | nick}
|
||||
@@ -3861,9 +3875,6 @@ OPER_DEFCON_SYNTAX
|
||||
OPER_DEFCON_DENIED
|
||||
Serwisy s± w trybie defcon, spróbuj ponownie pó¼niej.
|
||||
|
||||
OPER_DEFCON_NO_CONF
|
||||
System defcon musi byæ w³±czony w pliku konfiguracyjnym.
|
||||
|
||||
OPER_DEFCON_CHANGED
|
||||
Serwisy s± teraz w systemie DEFCON %d
|
||||
|
||||
@@ -3889,6 +3900,12 @@ OPER_MODULE_REMOVE_FAIL
|
||||
OPER_MODULE_NO_UNLOAD
|
||||
Ten modu³ nie mo¿e zostaæ wy³adowany.
|
||||
|
||||
OPER_MODULE_ALREADY_LOADED
|
||||
Module %s is already loaded.
|
||||
|
||||
OPER_MODULE_ISNT_LOADED
|
||||
Module %s isn't loaded.
|
||||
|
||||
OPER_MODULE_LOAD_SYNTAX
|
||||
MODLOAD nazwa-pliku
|
||||
|
||||
@@ -4951,6 +4968,12 @@ NICK_HELP_SENDPASS
|
||||
Ta komenda w niektórych sieciach mo¿e byæ dostêpna
|
||||
jedynie dla osób z uprawnieniami IRC operatora.
|
||||
|
||||
NICK_HELP_RESETPASS
|
||||
Syntax: RESETPASS nickname
|
||||
|
||||
Sends a code key to the nickname with the instructions on how to
|
||||
reset their password.
|
||||
|
||||
NICK_HELP_CONFIRM
|
||||
Sk³adnia: CONFIRM kod
|
||||
|
||||
@@ -4960,6 +4983,14 @@ NICK_HELP_CONFIRM
|
||||
adres e-mail podany podczas pierwszego kroku rejestracji.
|
||||
Aby siê dowiedzieæ wiêcej wpisz %R%S HELP REGISTER
|
||||
|
||||
This is also used after the RESETPASS command has been used to
|
||||
force identify you to your nick so you may change your password.
|
||||
|
||||
NICK_HELP_CONFIRM_OPER
|
||||
|
||||
Additionally, Services Operators with the nickserv/confirm permission can
|
||||
replace passcode with a users nick to force validate them.
|
||||
|
||||
NICK_HELP_RESEND
|
||||
Sk³adnia: RESEND
|
||||
|
||||
@@ -5109,12 +5140,12 @@ CHAN_HELP_CMD_STATUS
|
||||
CHAN_HELP_CMD_REGISTER
|
||||
REGISTER Rejestruje kana³
|
||||
|
||||
CHAN_HELP_CMD_IDENTIFY
|
||||
IDENTIFY Identyfikuje w³a¶ciciela kana³u
|
||||
|
||||
CHAN_HELP_CMD_SET
|
||||
SET Modyfikuje ustawienia kana³u
|
||||
|
||||
CHAN_HELP_CMD_QOP
|
||||
QOP Modify the list of QOP users
|
||||
|
||||
CHAN_HELP_CMD_AOP
|
||||
AOP Zarz±dza list± AOP (operatorów)
|
||||
|
||||
@@ -5133,9 +5164,6 @@ CHAN_HELP_CMD_AKICK
|
||||
CHAN_HELP_CMD_DROP
|
||||
DROP Usuwa kana³
|
||||
|
||||
CHAN_HELP_CMD_SENDPASS
|
||||
SENDPASS Pomaga odzyskaæ utracone has³o
|
||||
|
||||
CHAN_HELP_CMD_BAN
|
||||
BAN Banuje wskazan± osobê na kanale
|
||||
|
||||
@@ -5160,9 +5188,6 @@ CHAN_HELP_CMD_KICK
|
||||
CHAN_HELP_CMD_LIST
|
||||
LIST Listuje zarejestrowane kana³y pasuj±ce do wzorca
|
||||
|
||||
CHAN_HELP_CMD_LOGOUT
|
||||
LOGOUT Wyloguje wskazan± osobê
|
||||
|
||||
CHAN_HELP_CMD_OP
|
||||
OP Nadaje wskazanej osobie uprawnienia operatora
|
||||
|
||||
@@ -5170,7 +5195,7 @@ CHAN_HELP_CMD_TOPIC
|
||||
TOPIC Zmienia temat podanego kana³u
|
||||
|
||||
CHAN_HELP_CMD_UNBAN
|
||||
UNBAN Usuwa wszystkie bany blokuj±ce wej¶cie na kana³
|
||||
UNBAN Remove all bans preventing a user from entering a channel
|
||||
|
||||
CHAN_HELP_CMD_VOICE
|
||||
VOICE Nadaje wskazanej osobie prawo g³osu
|
||||
@@ -5199,12 +5224,6 @@ CHAN_HELP_CMD_OWNER
|
||||
CHAN_HELP_CMD_PROTECT
|
||||
PROTECT Chroni wskazan± osobê
|
||||
|
||||
CHAN_HELP_CMD_ADMIN
|
||||
ADMIN Chroni wskazan± osobê
|
||||
|
||||
CHAN_HELP_CMD_DEADMIN
|
||||
DEADMIN Wy³±cza ochronê wskazanej osoby
|
||||
|
||||
CHAN_HELP_CMD_DEOP
|
||||
DEOP Odbiera wskazanej osobie uprawnienia operatora
|
||||
|
||||
@@ -5228,49 +5247,30 @@ CHAN_HELP_EXPIRES
|
||||
CHAN_HELP_REGISTER
|
||||
Sk³adnia: REGISTER kana³ has³o opis
|
||||
|
||||
Rejestruje kana³ w bazie danych %S. Aby u¿yæ
|
||||
tej komendy musisz byæ operatorem na kanale, który
|
||||
chcesz zarejestrowaæ. Has³o umo¿liwia pó¼niejsz±
|
||||
identyfikacjê jako w³a¶ciciel kana³u (IDENTIFY).
|
||||
Ostatni parametr, który musi zostaæ podany, okre¶la
|
||||
cel istnienia kana³u.
|
||||
|
||||
Po rejestracji kana³u stajesz siê jego w³a¶cicielem,
|
||||
który mo¿e zmieniaæ wszystkie jego ustawienia.
|
||||
%S automatycznie nadaje uprawnienia operatora
|
||||
w³a¶cicielowi, który wchodzi na kana³. Informacje
|
||||
na temat nadawania uprawnieñ innym u¿ytkownikom
|
||||
znajduj± siê w pomocy polecenia ACCESS
|
||||
(%R%S HELP ACCESS).
|
||||
|
||||
UWAGA: Aby zarejestrowaæ kana³ nale¿y posiadaæ
|
||||
zarejestrowany nick, aby uzyskaæ wiêcej informacji
|
||||
na temat zarz±dzania nickiem wpisz: %R%s HELP
|
||||
Registers a channel in the %S database. In order
|
||||
to use this command, you must first be a channel operator
|
||||
on the channel you're trying to register.
|
||||
The description, which must be included, is a
|
||||
general description of the channel's purpose.
|
||||
|
||||
CHAN_HELP_IDENTIFY
|
||||
Sk³adnia: IDENTIFY kana³ has³o
|
||||
|
||||
Autoryzuje u¿ytkownika w serwisie %S jako w³a¶ciciela
|
||||
wskazanego kana³u. Wiele wa¿nych komend wymaga dokonania
|
||||
identyfikacji przed ich u¿yciem. Has³em jest to samo
|
||||
has³o, którego u¿yto przy komendzie REGISTER.
|
||||
When you register a channel, you are recorded as the
|
||||
"founder" of the channel. The channel founder is allowed
|
||||
to change all of the channel settings for the channel;
|
||||
%S will also automatically give the founder
|
||||
channel-operator privileges when s/he enters the channel.
|
||||
See the ACCESS command (%R%S HELP ACCESS) for
|
||||
information on giving a subset of these privileges to
|
||||
other channel users.
|
||||
|
||||
CHAN_HELP_LOGOUT
|
||||
Sk³adnia: LOGOUT kana³ nick
|
||||
|
||||
Pozwala na wylogowanie wskazanego u¿ytkownika z kana³u.
|
||||
W celu odzyskania uprawnieñ u¿ytkownik bêdzie musia³
|
||||
ponownie siê zidentyfikowaæ.
|
||||
|
||||
Ka¿dy mo¿e wylogowaæ siebie, natomiast w³a¶ciciel kana³u
|
||||
mo¿e wylogowaæ ka¿dego.
|
||||
NOTICE: In order to register a channel, you must have
|
||||
first registered your nickname. If you haven't,
|
||||
%R%s HELP for information on how to do so.
|
||||
|
||||
CHAN_HELP_DROP
|
||||
Sk³adnia: DROP kana³
|
||||
|
||||
Usuwa podany kana³. Komenda mo¿e zostaæ u¿yta
|
||||
jedynie przez w³a¶ciciela kana³u, po wcze¶niejszej
|
||||
IDENTIFYKACJI przy pomocy has³a kana³u.
|
||||
jedynie przez w³a¶ciciela kana³u.
|
||||
|
||||
CHAN_HELP_SET
|
||||
Sk³adnia: SET kana³ opcja parametry
|
||||
@@ -5282,7 +5282,6 @@ CHAN_HELP_SET
|
||||
|
||||
FOUNDER Ustawia nick w³a¶ciciela kana³u
|
||||
SUCCESSOR Ustawia nick spadkobiercy kana³u
|
||||
PASSWORD Ustawia has³o w³a¶ciciela
|
||||
DESC Ustawia opis kana³u
|
||||
URL Przypisuje adres www do kana³u
|
||||
EMAIL Przypisuje adres e-mail do kana³u
|
||||
@@ -5304,6 +5303,7 @@ CHAN_HELP_SET
|
||||
TOPICLOCK Ogranicza mo¿liwo¶æ zmiany tematu
|
||||
XOP W³±cza system uprawnieñ xOP
|
||||
(u¿ycie komend SOP, AOP, HOP, VOP)
|
||||
PERSIST Set the channel as permanent
|
||||
|
||||
Aby uzyskaæ wiêcej informacji o danej opcji wpisz:
|
||||
%R%S HELP SET opcja
|
||||
@@ -5322,10 +5322,6 @@ CHAN_HELP_SET_SUCCESSOR
|
||||
spadkobiercy, który staje siê nowym w³a¶cicielem.
|
||||
Je¿eli spadkobierca jest w³a¶cicielem zbyt du¿ej
|
||||
liczby kana³ów (%d) to kana³ zostanie odrejestrowany.
|
||||
CHAN_HELP_SET_PASSWORD
|
||||
Sk³adnia: SET kana³ PASSWORD has³o
|
||||
|
||||
Zmienia has³o w³a¶ciciela kana³u.
|
||||
|
||||
CHAN_HELP_SET_DESC
|
||||
Sk³adnia: SET kana³ DESC opis
|
||||
@@ -5505,7 +5501,29 @@ CHAN_HELP_SET_XOP
|
||||
system XOP, je¶li definicje poziomów dostêpu dla
|
||||
kana³u zosta³y wcze¶niej zmodyfikowane przy pomocy
|
||||
polecenia LEVELS.
|
||||
|
||||
CHAN_HELP_SET_PERSIST
|
||||
Syntax: SET channel PERSIST {ON | OFF}
|
||||
|
||||
Enables or disables the persistant channel setting.
|
||||
When persistant is set, the service bot will remain
|
||||
in the channel when it has emptied of users.
|
||||
|
||||
If your IRCd does not a permanent (persistant) channel
|
||||
mode you must have a service bot in your channel to
|
||||
set persist on, and it can not be unassigned while persist
|
||||
is on.
|
||||
|
||||
If this network does not have BotServ enabled and does
|
||||
not have a permanent channel mode, ChanServ will
|
||||
join your channel when you set persist on (and leave when
|
||||
it has been set off).
|
||||
|
||||
If your IRCd has a permanent (persistant) channel mode
|
||||
and is is set or unset (for any reason, including MLOCK),
|
||||
persist is automatically set and unset for the channel aswell.
|
||||
Additionally, services will set or unset this mode when you
|
||||
set persist on or off.
|
||||
|
||||
CHAN_HELP_SET_OPNOTICE
|
||||
Sk³adnia: SET kana³ OPNOTICE {ON | OFF}
|
||||
@@ -5515,6 +5533,45 @@ CHAN_HELP_SET_OPNOTICE
|
||||
informowa³ u¿ytkowników przebywaj±cych na kanale,
|
||||
kiedy zostanie u¿yta komenda OP lub DEOP.
|
||||
|
||||
CHAN_HELP_QOP
|
||||
Syntax: QOP channel ADD nick
|
||||
QOP channel DEL {nick | entry-num | list}
|
||||
QOP channel LIST [mask | list]
|
||||
QOP channel CLEAR
|
||||
|
||||
Maintains the QOP (AutoOwner) list for a channel. The QOP
|
||||
list gives users the right to be auto-owner on your channel,
|
||||
which gives them almost (or potentially, total) access.
|
||||
|
||||
The QOP ADD command adds the given nickname to the
|
||||
QOP list.
|
||||
|
||||
The QOP DEL command removes the given nick from the
|
||||
QOP list. If a list of entry numbers is given, those
|
||||
entries are deleted. (See the example for LIST below.)
|
||||
|
||||
The QOP LIST command displays the QOP list. If
|
||||
a wildcard mask is given, only those entries matching the
|
||||
mask are displayed. If a list of entry numbers is given,
|
||||
only those entries are shown; for example:
|
||||
|
||||
QOP #channel LIST 2-5,7-9
|
||||
Lists QOP entries numbered 2 through 5 and
|
||||
7 through 9.
|
||||
|
||||
The QOP CLEAR command clears all entries of the
|
||||
QOP list.
|
||||
|
||||
The QOP commands are limited to
|
||||
founders (unless SECUREOPS is off). However, any user on the
|
||||
QOP list may use the QOP LIST command.
|
||||
|
||||
This command may have been disabled for your channel, and
|
||||
in that case you need to use the access list. See
|
||||
%R%S HELP ACCESS for information about the access list,
|
||||
and %R%S HELP SET XOP to know how to toggle between
|
||||
the access list and xOP list systems.
|
||||
|
||||
CHAN_HELP_AOP
|
||||
Sk³adnia: AOP kana³ ADD nick
|
||||
AOP kana³ DEL {nick | numer | lista}
|
||||
@@ -5678,6 +5735,7 @@ CHAN_HELP_ACCESS
|
||||
Sk³adnia: ACCESS kana³ ADD nick level
|
||||
ACCESS kana³ DEL {nick | numer | list}
|
||||
ACCESS kana³ LIST [maska | list]
|
||||
ACCESS kana³ VIEW [maska | list]
|
||||
ACCESS kana³ CLEAR
|
||||
|
||||
Polecenie pozwala na zarz±dzanie wpisami w kana³owej
|
||||
@@ -5714,6 +5772,9 @@ CHAN_HELP_ACCESS
|
||||
Wy¶wietli wpisy na li¶cie od numeru 2 do 5, oraz
|
||||
od 7 do 9.
|
||||
|
||||
The ACCESS VIEW command displays the access list similar
|
||||
to ACCESS LIST but shows the creator and last used time.
|
||||
|
||||
Polecenie ACCESS CLEAR usuwa wszystkie wpisy z listy.
|
||||
|
||||
CHAN_HELP_ACCESS_LEVELS
|
||||
@@ -5794,31 +5855,30 @@ CHAN_HELP_AKICK
|
||||
Polecenie AKICK CLEAR usuwa wszystkie wpisy z listy.
|
||||
|
||||
CHAN_HELP_LEVELS
|
||||
Sk³adnia: LEVELS kana³ SET typ poziom
|
||||
Sk³adnia: LEVELS kana³ SET typ [poziom|FOUNDER]
|
||||
LEVELS kana³ {DIS | DISABLE} typ
|
||||
LEVELS kana³ LIST
|
||||
LEVELS kana³ RESET
|
||||
|
||||
Polecenie LEVELS umo¿liwia przypisywanie
|
||||
uprawnieñ poszczególnym poziomom dostepu.
|
||||
Przy u¿yciu tej komendy mo¿esz definiowaæ
|
||||
poziomy dostêpu do wszystkich funkcji %S
|
||||
(SET FOUNDER, SET PASSWORD oraz LEVELS
|
||||
s± dostêpne tylko dla w³a¶ciciela kana³u).
|
||||
The LEVELS command allows fine control over the meaning of
|
||||
the numeric access levels used for channels. With this
|
||||
command, you can define the access level required for most
|
||||
of %S's functions. (The SET FOUNDER and this command
|
||||
are always restricted to the channel founder.)
|
||||
|
||||
LEVELS SET pozwala zmieniæ przypisany poziom dla
|
||||
okre¶lonej operacji lub ich grup. LEVELS DISABLE
|
||||
(lub DIS w skrócie) wy³±cza okre¶lon± funkcjê lub
|
||||
zastrzega dostêp do niej dla w³a¶ciciela kana³u.
|
||||
LEVELS LIST wy¶wietla aktualnie ustalone poziomy
|
||||
dla ka¿dej z operacji. LEVELS RESET przywraca
|
||||
standardowe ustawienia poziomów dostêpu - identyczne
|
||||
z tymi jakie ustawiane s± dla kana³u po jego
|
||||
utworzeniu (zobacz HELP ACCESS LEVELS).
|
||||
LEVELS SET allows the access level for a function or group of
|
||||
functions to be changed. LEVELS DISABLE (or DIS for short)
|
||||
disables an automatic feature or disallows access to a
|
||||
function by anyone, INCLUDING the founder (although, the founder
|
||||
can always reenable it).
|
||||
|
||||
Aby obejrzeæ spis wszystkich funkcji które mog±
|
||||
zostaæ przypisane poziomom dostêpu, zobacz
|
||||
HELP LEVELS DESC.
|
||||
LEVELS LIST shows the current levels for each function or
|
||||
group of functions. LEVELS RESET resets the levels to the
|
||||
default levels of a newly-created channel (see
|
||||
HELP ACCESS LEVELS).
|
||||
|
||||
For a list of the features and functions whose levels can be
|
||||
set, see HELP LEVELS DESC.
|
||||
|
||||
CHAN_HELP_LEVELS_DESC
|
||||
Poni¿ej znajduje siê lista wszystkich dostêpnych uprawnieñ.
|
||||
@@ -5968,11 +6028,10 @@ CHAN_HELP_INVITE
|
||||
dostêpu 5 lub wy¿szy.
|
||||
|
||||
CHAN_HELP_UNBAN
|
||||
Sk³adnia: UNBAN kana³
|
||||
Sk³adnia: UNBAN kana³ [nick]
|
||||
|
||||
Sprawia, ¿e %S zdejmie wszystkie bany, które
|
||||
uniemo¿liwiaj± wydaj±cemu komendê wej¶cie na
|
||||
wskazany kana³.
|
||||
Tells %S to remove all bans preventing you or the given
|
||||
user from entering the given channel.
|
||||
|
||||
Standardowo ta komenda jest dostêpna dla u¿ytkowników
|
||||
wpisanych na listê AOP lub posiadaj±cych poziom
|
||||
@@ -6029,16 +6088,6 @@ CHAN_HELP_GETKEY
|
||||
|
||||
Zwraca has³o wstêpu do wskazanego kana³u.
|
||||
|
||||
CHAN_HELP_SENDPASS
|
||||
Sk³adnia: SENDPASS kana³
|
||||
|
||||
Wysy³a has³o do podanego kana³u na adres e-mail
|
||||
przypisany do nicka w³a¶ciciela kana³u. Ta komenda
|
||||
pomaga odzyskaæ zapomniane has³o.
|
||||
|
||||
Ta komenda w niektórych sieciach mo¿e byæ dostêpna
|
||||
jedynie dla osób z uprawnieniami IRC operatora.
|
||||
|
||||
CHAN_SERVADMIN_HELP
|
||||
|
||||
Administratorzy serwisów mog± usun±æ ka¿dy kana³
|
||||
@@ -6046,20 +6095,6 @@ CHAN_SERVADMIN_HELP
|
||||
Mog± przegl±daæ listê dostêpu ka¿dego kana³u,
|
||||
listê AKICK, ustawienia poziomów dostêpu itd.
|
||||
|
||||
CHAN_SERVADMIN_HELP_LOGOUT
|
||||
Sk³adnia: LOGOUT kana³ nick
|
||||
|
||||
Pozwala na wylogowanie wskazanego u¿ytkownika z kana³u.
|
||||
W celu odzyskania uprawnieñ u¿ytkownik bêdzie musia³
|
||||
ponownie siê zidentyfikowaæ.
|
||||
|
||||
Ka¿dy mo¿e wylogowaæ siebie, natomiast w³a¶ciciel kana³u
|
||||
mo¿e wylogowaæ ka¿dego.
|
||||
|
||||
Administrator serwisów mo¿e wylogowaæ dowoln± osobê
|
||||
z dowolnego kana³u. Pominiêcie nicka powoduje wylogowanie
|
||||
wszystkich zidentyfikowanych osób.
|
||||
|
||||
CHAN_SERVADMIN_HELP_DROP
|
||||
Sk³adnia: DROP kana³
|
||||
|
||||
@@ -6080,7 +6115,8 @@ CHAN_SERVADMIN_HELP_SET_NOEXPIRE
|
||||
|
||||
CHAN_SERVADMIN_HELP_INFO
|
||||
|
||||
Administratorzy serwisów zawsze mog± u¿ywaæ parametru ALL.
|
||||
Services Operators with the chanserv/auspex permission can
|
||||
use the ALL parameter with any channel.
|
||||
|
||||
CHAN_SERVADMIN_HELP_LIST
|
||||
Sk³adnia: LIST wzorzec [FORBIDDEN] [SUSPENDED] [NOEXPIRE]
|
||||
@@ -7447,3 +7483,15 @@ OPER_UMODE_UNSUPPORTED
|
||||
OPER_SUPER_ADMIN_NOT_ENABLED
|
||||
Opcja SuperAdmin nie jest w³±czona w pliku konfiguracyjnym.
|
||||
|
||||
OPER_HELP_SYNC
|
||||
Syntax: SQLSYNC
|
||||
|
||||
This command syncs your databases with SQL. You should
|
||||
only have to execute this command once, when you initially
|
||||
import your databases into SQL.
|
||||
OPER_HELP_CMD_SQLSYNC
|
||||
SQLSYNC Import your databases to SQL
|
||||
OPER_SYNC_UPDATING
|
||||
Updating MySQL.
|
||||
OPER_SYNC_UPDATED
|
||||
Finished updating MySQL.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Portuguese language file.
|
||||
#
|
||||
# (C) 2003-2008 Anope Team
|
||||
# (C) 2003-2010 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Please read COPYING and README for furhter details.
|
||||
@@ -878,6 +878,24 @@ NICK_SENDPASS_LINE_5
|
||||
NICK_SENDPASS_OK
|
||||
Senha para %s foi enviada.
|
||||
|
||||
# RESETPASS responses
|
||||
NICK_RESETPASS_SYNTAX
|
||||
RESETPASS nickname
|
||||
NICK_RESETPASS_SUBJECT
|
||||
Reset password request for %s
|
||||
NICK_RESETPASS_MESSAGE
|
||||
Hi,
|
||||
|
||||
You have requested to have the password for %s reset.
|
||||
To reset your password, type %R%s CONFIRM %s
|
||||
If you don't know why this mail is sent to you, please ignore it silently.
|
||||
|
||||
PLEASE DON'T ANSWER TO THIS MAIL!
|
||||
|
||||
%s administrators.
|
||||
NICK_RESETPASS_COMPLETE
|
||||
Password reset email for %s has been sent.
|
||||
|
||||
# SUSPEND responses
|
||||
NICK_SUSPEND_SYNTAX
|
||||
SUSPEND nick motivo
|
||||
@@ -915,10 +933,6 @@ NICK_IS_PREREG
|
||||
Esse nick está aguardando um código de verificação por e-mail antes de completar o registro.
|
||||
NICK_ENTER_REG_CODE
|
||||
O passcode foi enviado para %s, por favor digite %R%s confirm <passcode> para completar o registro.
|
||||
NICK_CONFIRM_NOT_FOUND
|
||||
O primeiro passo do registro deve ter expirado, por favor use %R%s register <senha> <email> primeiro.
|
||||
NICK_CONFIRM_INVALID
|
||||
Um passcode inválido foi digitado, por favor verifique o e-mail e tente novamente
|
||||
NICK_REG_MAIL_SUBJECT
|
||||
Registro de nick (%s)
|
||||
NICK_REG_MAIL_HEAD
|
||||
@@ -938,6 +952,16 @@ NICK_GETPASS_PASSCODE_IS
|
||||
NICK_FORCE_REG
|
||||
Nick %s confirmado
|
||||
|
||||
# CONFIRM responses
|
||||
NICK_CONFIRM_NOT_FOUND
|
||||
O primeiro passo do registro deve ter expirado, por favor use %R%s register <senha> <email> primeiro.
|
||||
NICK_CONFIRM_INVALID
|
||||
Um passcode inválido foi digitado, por favor verifique o e-mail e tente novamente
|
||||
NICK_CONFIRM_EXPIRED
|
||||
Your password reset request has expired.
|
||||
NICK_CONFIRM_SUCCESS
|
||||
You are now identified for your nick
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
# ChanServ messages
|
||||
@@ -1017,6 +1041,12 @@ CHAN_LEVEL_TOPIC
|
||||
Permitido o uso do comando TOPIC
|
||||
CHAN_LEVEL_INFO
|
||||
Permitido o uso do comando INFO com a opção ALL
|
||||
CHAN_LEVEL_AUTOOWNER
|
||||
Automatic mode +q
|
||||
CHAN_LEVEL_OWNER
|
||||
Allowed to use OWNER command
|
||||
CHAN_LEVEL_OWNERME
|
||||
Allowed to (de)owner him/herself
|
||||
|
||||
# Automatic responses
|
||||
CHAN_IS_REGISTERED
|
||||
@@ -1034,7 +1064,7 @@ CHAN_X_INVALID
|
||||
|
||||
# REGISTER responses
|
||||
CHAN_REGISTER_SYNTAX
|
||||
REGISTER canal senha descrição
|
||||
REGISTER canal descrição
|
||||
CHAN_REGISTER_DISABLED
|
||||
Desculpe, o registro de canais está temporariamente desativado.
|
||||
CHAN_REGISTER_NOT_LOCAL
|
||||
@@ -1053,35 +1083,11 @@ CHAN_REGISTRATION_FAILED
|
||||
Desculpe, o registro falhou.
|
||||
CHAN_REGISTERED
|
||||
O canal %s está registrado sob seu nick: %s
|
||||
CHAN_PASSWORD_IS
|
||||
A senha do seu canal é %s - guarde ela para uso posterior.
|
||||
CHAN_REGISTER_NONE_CHANNEL
|
||||
Você tentou registrar um canal não existente: %s
|
||||
CHAN_SYMBOL_REQUIRED
|
||||
Por favor use o símbolo # quando tentar registrar
|
||||
|
||||
# IDENTIFY responses
|
||||
CHAN_IDENTIFY_SYNTAX
|
||||
IDENTIFY canal senha
|
||||
CHAN_IDENTIFY_FAILED
|
||||
Desculpe, a identificação falhou.
|
||||
CHAN_IDENTIFY_SUCCEEDED
|
||||
Senha aceita - você está sendo reconhecido agora como dono do %s.
|
||||
|
||||
# LOGOUT responses
|
||||
CHAN_LOGOUT_SYNTAX
|
||||
LOGOUT canal nick
|
||||
CHAN_LOGOUT_SERVADMIN_SYNTAX
|
||||
LOGOUT canal [nick]
|
||||
CHAN_LOGOUT_SUCCEEDED
|
||||
Usuário %s foi desconectado do canal %s.
|
||||
CHAN_LOGOUT_ALL_SUCCEEDED
|
||||
Todos os usuários registrados foram desconectados do canal %s (except the channel founder).
|
||||
CHAN_LOGOUT_FOUNDER_FAILED
|
||||
You may not log out of %s (you are founder).
|
||||
CHAN_LOGOUT_NOT_LOGGEDIN
|
||||
%s was not logged into %s.
|
||||
|
||||
# DROP responses
|
||||
CHAN_DROP_SYNTAX
|
||||
DROP canal
|
||||
@@ -1112,14 +1118,6 @@ CHAN_SUCCESSOR_UNSET
|
||||
CHAN_SUCCESSOR_IS_FOUNDER
|
||||
%s não pode ser o successor do canal %s porque ele é o founder.
|
||||
|
||||
# SET PASSWORD responses
|
||||
CHAN_SET_PASSWORD_FAILED
|
||||
Desculpe, a mudança de senha falhou.
|
||||
CHAN_PASSWORD_CHANGED
|
||||
A senha do %s foi alterada.
|
||||
CHAN_PASSWORD_CHANGED_TO
|
||||
A senha do %s foi alterada para %s.
|
||||
|
||||
# SET DESC responses
|
||||
CHAN_DESC_CHANGED
|
||||
Descrição do canal %s alterada para %s.
|
||||
@@ -1251,6 +1249,14 @@ CHAN_SET_XOP_ON
|
||||
CHAN_SET_XOP_OFF
|
||||
Sistema de acesso xOP para %s está agora DESATIVADO.
|
||||
|
||||
# SET PERSISTANT responces
|
||||
CHAN_SET_PERSIST_SYNTAX
|
||||
SET channel PERSIST {ON | OFF}
|
||||
CHAN_SET_PERSIST_ON
|
||||
Channel %s is now persistant.
|
||||
CHAN_SET_PERSIST_OFF
|
||||
Channel %s is no longer persistant.
|
||||
|
||||
# SET NOEXPIRE responses
|
||||
CHAN_SET_NOEXPIRE_SYNTAX
|
||||
SET canal NOEXPIRE {ON | OFF}
|
||||
@@ -1270,6 +1276,37 @@ CHAN_XOP_ACCESS
|
||||
CHAN_XOP_NOT_AVAILABLE
|
||||
xOP system is not available.
|
||||
|
||||
# QOP messages
|
||||
CHAN_QOP_SYNTAX
|
||||
QOP channel {ADD|DEL|LIST|CLEAR} [nick | entry-list]
|
||||
CHAN_QOP_DISABLED
|
||||
Sorry, channel QOP list modification is temporarily disabled.
|
||||
CHAN_QOP_NICKS_ONLY
|
||||
Channel QOP lists may only contain registered nicknames.
|
||||
CHAN_QOP_ADDED
|
||||
%s added to %s QOP list.
|
||||
CHAN_QOP_MOVED
|
||||
%s moved to %s QOP list.
|
||||
CHAN_QOP_NO_SUCH_ENTRY
|
||||
No such entry (#%d) on %s QOP list.
|
||||
CHAN_QOP_NOT_FOUND
|
||||
%s not found on %s QOP list.
|
||||
CHAN_QOP_NO_MATCH
|
||||
No matching entries on %s QOP list.
|
||||
CHAN_QOP_DELETED
|
||||
%s deleted from %s QOP list.
|
||||
CHAN_QOP_DELETED_ONE
|
||||
Deleted 1 entry from %s QOP list.
|
||||
CHAN_QOP_DELETED_SEVERAL
|
||||
Deleted %d entries from %s QOP list.
|
||||
CHAN_QOP_LIST_EMPTY
|
||||
%s QOP list is empty.
|
||||
CHAN_QOP_LIST_HEADER
|
||||
QOP list for %s:
|
||||
Num Nick
|
||||
CHAN_QOP_CLEAR
|
||||
Channel %s QOP list has been cleared.
|
||||
|
||||
# AOP messages
|
||||
CHAN_AOP_SYNTAX
|
||||
AOP canal {ADD|DEL|LIST|CLEAR} [nick | entrada]
|
||||
@@ -1396,7 +1433,7 @@ CHAN_VOP_CLEAR
|
||||
|
||||
# ACCESS messages
|
||||
CHAN_ACCESS_SYNTAX
|
||||
ACCESS canal {ADD|DEL|LIST|CLEAR} [nick [nível] | lista-entradas]
|
||||
ACCESS canal {ADD|DEL|LIST|VIEW|CLEAR} [nick [nível] | lista-entradas]
|
||||
CHAN_ACCESS_XOP
|
||||
Você não pode usar este comando.
|
||||
Ao invés, use os comandos VOP, HOP, AOP e SOP.
|
||||
@@ -1446,6 +1483,12 @@ CHAN_ACCESS_LIST_AXS_FORMAT
|
||||
%3d %4d %s
|
||||
CHAN_ACCESS_CLEAR
|
||||
Lista de acesso do canal %s apagada.
|
||||
CHAN_ACCESS_VIEW_XOP_FORMAT
|
||||
%3d %s %s
|
||||
by %s, last seen %s
|
||||
CHAN_ACCESS_VIEW_AXS_FORMAT
|
||||
%3d %4d %s
|
||||
by %s, last seen %s
|
||||
|
||||
# AKICK responses
|
||||
CHAN_AKICK_SYNTAX
|
||||
@@ -1500,6 +1543,8 @@ CHAN_LEVELS_RANGE
|
||||
O nível deve ser entre %d e %d inclusive.
|
||||
CHAN_LEVELS_CHANGED
|
||||
Nível para %s no canal %s alterado para %d.
|
||||
CHAN_LEVELS_CHANGED_FOUNDER
|
||||
Level for %s on channel %s changed to founder only.
|
||||
CHAN_LEVELS_UNKNOWN
|
||||
Level %s desconhecido. Digite %R%s HELP LEVELS DESC para uma lista de Levels válidos.
|
||||
CHAN_LEVELS_DISABLED
|
||||
@@ -1582,6 +1627,8 @@ CHAN_INFO_OPT_TOPICLOCK
|
||||
Trava de tópico
|
||||
CHAN_INFO_OPT_XOP
|
||||
Sistema de acesso xOP
|
||||
CHAN_INFO_OPT_PERSIST
|
||||
Persistant
|
||||
CHAN_INFO_OPT_NONE
|
||||
Nenhuma
|
||||
CHAN_INFO_MODE_LOCK
|
||||
@@ -1610,12 +1657,17 @@ CHAN_INVITE_ALREADY_IN
|
||||
You are already in %s!
|
||||
CHAN_INVITE_SUCCESS
|
||||
You have been invited to %s.
|
||||
CHAN_INVITE_OTHER_SUCCESS
|
||||
%s has been invited to %s.
|
||||
|
||||
|
||||
# UNBAN responses
|
||||
CHAN_UNBAN_SYNTAX
|
||||
UNBAN canal
|
||||
UNBAN canal [nick]
|
||||
CHAN_UNBANNED
|
||||
Você não está mais banido do %s.
|
||||
CHAN_UNBANNED_OTHER
|
||||
%s has been unbanned from %s.
|
||||
|
||||
# TOPIC responses
|
||||
CHAN_TOPIC_SYNTAX
|
||||
@@ -1641,14 +1693,6 @@ CHAN_CLEARED_USERS
|
||||
CHAN_CLEARED_INVITES
|
||||
Todos os Invites do canal %s foram removidos.
|
||||
|
||||
# GETPASS responses
|
||||
CHAN_GETPASS_SYNTAX
|
||||
GETPASS canal
|
||||
CHAN_GETPASS_UNAVAILABLE
|
||||
Comando GETPASS indisponível: modo de encriptação em uso.
|
||||
CHAN_GETPASS_PASSWORD_IS
|
||||
Senha do canal %s é %s.
|
||||
|
||||
# GETKEY responses
|
||||
CHAN_GETKEY_SYNTAX
|
||||
GETKEY canal
|
||||
@@ -1657,28 +1701,6 @@ CHAN_GETKEY_NOKEY
|
||||
CHAN_GETKEY_KEY
|
||||
Key for channel %s is %s.
|
||||
|
||||
# SENDPASS responses
|
||||
CHAN_SENDPASS_SYNTAX
|
||||
SENDPASS canal
|
||||
CHAN_SENDPASS_UNAVAILABLE
|
||||
Comando SENDPASS indisponível: modo de encriptação em uso.
|
||||
CHAN_SENDPASS_SUBJECT
|
||||
Senha do canal (%s)
|
||||
CHAN_SENDPASS_HEAD
|
||||
Olá,
|
||||
CHAN_SENDPASS_LINE_1
|
||||
Você pediu para receber a senha do canal %s por e-mail.
|
||||
CHAN_SENDPASS_LINE_2
|
||||
A senha é %s. Por motivos de segurança, recomendamos que você mude a senha assim que receber este e-mail.
|
||||
CHAN_SENDPASS_LINE_3
|
||||
Se você não sabe porque este e-mail lhe foi enviado, por favor ignore-o.
|
||||
CHAN_SENDPASS_LINE_4
|
||||
POR FAVOR NÃO RESPONDA ESTE E-MAIL!
|
||||
CHAN_SENDPASS_LINE_5
|
||||
Administradores do %s.
|
||||
CHAN_SENDPASS_OK
|
||||
Senha do canal %s foi enviada.
|
||||
|
||||
# FORBID responses
|
||||
CHAN_FORBID_SYNTAX
|
||||
FORBID canal [motivo]
|
||||
@@ -2119,6 +2141,8 @@ BOT_UNASSIGN_SYNTAX
|
||||
UNASSIGN canal
|
||||
BOT_UNASSIGN_UNASSIGNED
|
||||
Não possui mais nenhum bot associado ao canal %s.
|
||||
BOT_UNASSIGN_PERSISTANT_CHAN
|
||||
You can not unassign bots while persist is set on the channel.
|
||||
|
||||
# INFO responses
|
||||
BOT_INFO_SYNTAX
|
||||
@@ -2905,8 +2929,6 @@ OPER_DEFCON_SYNTAX
|
||||
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
|
||||
O sistema Defcon deve estar habilitado no arquivo services.conf
|
||||
OPER_DEFCON_CHANGED
|
||||
Services estão agora em DEFCON %d
|
||||
OPER_DEFCON_WALL
|
||||
@@ -2926,6 +2948,10 @@ OPER_MODULE_REMOVE_FAIL
|
||||
Impossível remover o módulo %s
|
||||
OPER_MODULE_NO_UNLOAD
|
||||
This module can not be unloaded.
|
||||
OPER_MODULE_ALREADY_LOADED
|
||||
Module %s is already loaded.
|
||||
OPER_MODULE_ISNT_LOADED
|
||||
Module %s isn't loaded.
|
||||
OPER_MODULE_LOAD_SYNTAX
|
||||
MODLOAD NomeDoArquivo
|
||||
OPER_MODULE_UNLOAD_SYNTAX
|
||||
@@ -3887,6 +3913,12 @@ NICK_HELP_SENDPASS
|
||||
|
||||
Poder ser limitado a Operadores de IRC em algumas redes.
|
||||
|
||||
NICK_HELP_RESETPASS
|
||||
Syntax: RESETPASS nickname
|
||||
|
||||
Sends a codekey to the nickname with the instructions on how to
|
||||
reset their psasword.
|
||||
|
||||
NICK_HELP_CONFIRM
|
||||
Syntax: CONFIRM passcode
|
||||
|
||||
@@ -3896,6 +3928,14 @@ NICK_HELP_CONFIRM
|
||||
is sent to your e-mail address in the first step of the
|
||||
registration process. For more information about the first
|
||||
stage of the registration process, type: %R%S HELP REGISTER
|
||||
|
||||
This is also used after the RESETPASS command has been used to
|
||||
force identify you to your nick so you may change your password.
|
||||
|
||||
NICK_HELP_CONFIRM_OPER
|
||||
|
||||
Additionally, Services Operators with the nickserv/confirm permission can
|
||||
replace passcode with a users nick to force validate them.
|
||||
|
||||
NICK_HELP_RESEND
|
||||
Syntax: RESEND
|
||||
@@ -4036,10 +4076,10 @@ CHAN_HELP_CMD_STATUS
|
||||
STATUS Fornece o atual nível de acesso de um usuário em um canal
|
||||
CHAN_HELP_CMD_REGISTER
|
||||
REGISTER Registra um canal
|
||||
CHAN_HELP_CMD_IDENTIFY
|
||||
IDENTIFY Identifica seu nick
|
||||
CHAN_HELP_CMD_SET
|
||||
SET Ajusta as opções e informações do canal
|
||||
CHAN_HELP_CMD_QOP
|
||||
QOP Modify the list of QOP users
|
||||
CHAN_HELP_CMD_AOP
|
||||
AOP Modifica a lista de AOP (AutoOP) de um canal
|
||||
CHAN_HELP_CMD_SOP
|
||||
@@ -4052,8 +4092,6 @@ CHAN_HELP_CMD_AKICK
|
||||
AKICK Faz a manutenção da Lista de Autokick
|
||||
CHAN_HELP_CMD_DROP
|
||||
DROP Cancela o registro de um canal
|
||||
CHAN_HELP_CMD_SENDPASS
|
||||
SENDPASS Ajuda para recuperar senhas
|
||||
CHAN_HELP_CMD_BAN
|
||||
BAN Bane o nick selecionado em um canal
|
||||
CHAN_HELP_CMD_CLEAR
|
||||
@@ -4070,14 +4108,12 @@ CHAN_HELP_CMD_KICK
|
||||
KICK Kicka (expulsa) um nick de um canal
|
||||
CHAN_HELP_CMD_LIST
|
||||
LIST Lista todos os canais registrados que combinam com o padrão fornecido
|
||||
CHAN_HELP_CMD_LOGOUT
|
||||
LOGOUT Desconecta um determinado nick
|
||||
CHAN_HELP_CMD_OP
|
||||
OP Atribui status de OP a um nick no canal
|
||||
CHAN_HELP_CMD_TOPIC
|
||||
TOPIC Modifica o tópico de um canal
|
||||
CHAN_HELP_CMD_UNBAN
|
||||
UNBAN Remove todos os bans permitindo que você entre em um canal
|
||||
UNBAN Remove all bans preventing a user from entering a channel
|
||||
CHAN_HELP_CMD_VOICE
|
||||
VOICE Atribui status de Voice a um nick no canal
|
||||
CHAN_HELP_CMD_VOP
|
||||
@@ -4096,10 +4132,6 @@ CHAN_HELP_CMD_OWNER
|
||||
OWNER Concede-lhe status de Owner no canal
|
||||
CHAN_HELP_CMD_PROTECT
|
||||
PROTECT Protege um determinado nick no canal
|
||||
CHAN_HELP_CMD_ADMIN
|
||||
ADMIN Protege um determinado nick no canal
|
||||
CHAN_HELP_CMD_DEADMIN
|
||||
DEADMIN Desprotege um determinado nick no canal
|
||||
CHAN_HELP_CMD_DEOP
|
||||
DEOP Retira o status de OP de um nick no canal
|
||||
|
||||
@@ -4121,53 +4153,32 @@ CHAN_HELP_EXPIRES
|
||||
automaticamente cancelado o seu registro.
|
||||
|
||||
CHAN_HELP_REGISTER
|
||||
Sintaxe: REGISTER canal senha descrição
|
||||
Sintaxe: REGISTER canal descrição
|
||||
|
||||
Registra um canal no banco de dados do %S sob seu nick.
|
||||
Para utilizar este comando, você deve primeiro ser OP
|
||||
do canal que está tentando registrar.
|
||||
|
||||
A senha é usada com o comando IDENTIFY para permitir
|
||||
que outras pessoas façam alterações nas configurações do
|
||||
canal. O último parâmetro, que deve ser incluído, é uma
|
||||
descrição geral da finalidade do canal.
|
||||
|
||||
Quando você registra um canal, você é gravado como "fundador"
|
||||
do mesmo. Ao fundador do canal é permitido alterar todas as
|
||||
configurações do mesmo; %S irá dar automaticamente ao fundador
|
||||
privilégios de Operador de Canal quando ele entrar no canal.
|
||||
Veja o comando ACCESS (%R%S HELP ACCESS) para
|
||||
informação sobre como liberar uma parte dos seus privilégios
|
||||
a outros usuários do canal.
|
||||
|
||||
IMPORTANTE: Para registrar um canal, você deve antes ter
|
||||
registrado seu nick. Se ainda não tiver seu nick registrado,
|
||||
digite %R%s HELP para mais informações de como fazê-lo.
|
||||
Registers a channel in the %S database. In order
|
||||
to use this command, you must first be a channel operator
|
||||
on the channel you're trying to register.
|
||||
The description, which must be included, is a
|
||||
general description of the channel's purpose.
|
||||
|
||||
CHAN_HELP_IDENTIFY
|
||||
Sintaxe: IDENTIFY canal senha
|
||||
|
||||
Identifica você no %S como fundador do canal fornecido.
|
||||
Muitos comandos exigem que você use este comando antes
|
||||
de usá-los. A senha deverá ser a mesma usada por você
|
||||
no comando REGISTER.
|
||||
|
||||
CHAN_HELP_LOGOUT
|
||||
Sintaxe: LOGOUT canal nick
|
||||
|
||||
Este comando faz com que um determinado nick seja des-identificado
|
||||
do canal, fazendo com que seja necessário ele se identificar
|
||||
novamente para recuperar seu acesso.
|
||||
|
||||
Se você for o Founder do canal, pode usar este comando em
|
||||
qualquer usuário e em si mesmo.
|
||||
When you register a channel, you are recorded as the
|
||||
"founder" of the channel. The channel founder is allowed
|
||||
to change all of the channel settings for the channel;
|
||||
%S will also automatically give the founder
|
||||
channel-operator privileges when s/he enters the channel.
|
||||
See the ACCESS command (%R%S HELP ACCESS) for
|
||||
information on giving a subset of these privileges to
|
||||
other channel users.
|
||||
|
||||
NOTICE: In order to register a channel, you must have
|
||||
first registered your nickname. If you haven't,
|
||||
%R%s HELP for information on how to do so.
|
||||
|
||||
CHAN_HELP_DROP
|
||||
Sintaxe: DROP canal
|
||||
|
||||
Cancela o registro do canal. So poderá ser usado pelo
|
||||
fundador do canal, que primeiramente deverá estar
|
||||
identificado com o NickServ.
|
||||
fundador do canal.
|
||||
|
||||
CHAN_HELP_SET
|
||||
Sintaxe: SET canal opção parâmetros
|
||||
@@ -4179,7 +4190,6 @@ CHAN_HELP_SET
|
||||
|
||||
FOUNDER Ajusta o fundador do canal
|
||||
SUCCESSOR Ajusta o sucessor do canal
|
||||
PASSWORD Ajusta a senha do founder
|
||||
DESC Ajusta a descrição do canal
|
||||
URL Associa uma URL a um canal
|
||||
EMAIL Associa um E-mail a um canal
|
||||
@@ -4198,6 +4208,7 @@ CHAN_HELP_SET
|
||||
SIGNKICK Assinatura dos kicks feitos pelo comando KICK
|
||||
OPNOTICE Envia uma notice quando os comandos OP/DEOP são usados
|
||||
XOP Altera o sistema de privilégio de usuário
|
||||
PERSIST Set the channel as permanent
|
||||
|
||||
Digite %R%S HELP SET opção para maiores informações
|
||||
sobre uma opção em particular.
|
||||
@@ -4218,12 +4229,6 @@ CHAN_HELP_SET_SUCCESSOR
|
||||
(%d), o canal será dropado, como se nenhum sucessor tivesse
|
||||
sido ajustado. O novo nick deverá estar registrado.
|
||||
|
||||
CHAN_HELP_SET_PASSWORD
|
||||
Sintaxe: SET canal PASSWORD senha
|
||||
|
||||
Ajusta a senha utilizada para identificação do
|
||||
fundador do canal.
|
||||
|
||||
CHAN_HELP_SET_DESC
|
||||
Sintaxe: SET canal DESC descrição
|
||||
|
||||
@@ -4403,6 +4408,29 @@ CHAN_HELP_SET_XOP
|
||||
Entretanto, mudar do sistema de listas xOP para sistema de lista
|
||||
de acesso não causa problemas.
|
||||
|
||||
CHAN_HELP_SET_PERSIST
|
||||
Syntax: SET channel PERSIST {ON | OFF}
|
||||
|
||||
Enables or disables the persistant channel setting.
|
||||
When persistant is set, the service bot will remain
|
||||
in the channel when it has emptied of users.
|
||||
|
||||
If your IRCd does not a permanent (persistant) channel
|
||||
mode you must have a service bot in your channel to
|
||||
set persist on, and it can not be unassigned while persist
|
||||
is on.
|
||||
|
||||
If this network does not have BotServ enabled and does
|
||||
not have a permanent channel mode, ChanServ will
|
||||
join your channel when you set persist on (and leave when
|
||||
it has been set off).
|
||||
|
||||
If your IRCd has a permanent (persistant) channel mode
|
||||
and is is set or unset (for any reason, including MLOCK),
|
||||
persist is automatically set and unset for the channel aswell.
|
||||
Additionally, services will set or unset this mode when you
|
||||
set persist on or off.
|
||||
|
||||
CHAN_HELP_SET_OPNOTICE
|
||||
Sintaxe: SET canal OPNOTICE {ON | OFF}
|
||||
|
||||
@@ -4411,6 +4439,45 @@ CHAN_HELP_SET_OPNOTICE
|
||||
o canal sempre que os comandos OP ou DEOP forem usados em um
|
||||
usuário no canal.
|
||||
|
||||
CHAN_HELP_QOP
|
||||
Syntax: QOP channel ADD nick
|
||||
QOP channel DEL {nick | entry-num | list}
|
||||
QOP channel LIST [mask | list]
|
||||
QOP channel CLEAR
|
||||
|
||||
Maintains the QOP (AutoOwner) list for a channel. The QOP
|
||||
list gives users the right to be auto-owner on your channel,
|
||||
which gives them almost (or potentially, total) access.
|
||||
|
||||
The QOP ADD command adds the given nickname to the
|
||||
QOP list.
|
||||
|
||||
The QOP DEL command removes the given nick from the
|
||||
QOP list. If a list of entry numbers is given, those
|
||||
entries are deleted. (See the example for LIST below.)
|
||||
|
||||
The QOP LIST command displays the QOP list. If
|
||||
a wildcard mask is given, only those entries matching the
|
||||
mask are displayed. If a list of entry numbers is given,
|
||||
only those entries are shown; for example:
|
||||
|
||||
QOP #channel LIST 2-5,7-9
|
||||
Lists QOP entries numbered 2 through 5 and
|
||||
7 through 9.
|
||||
|
||||
The QOP CLEAR command clears all entries of the
|
||||
QOP list.
|
||||
|
||||
The QOP commands are limited to
|
||||
founders (unless SECUREOPS is off). However, any user on the
|
||||
QOP list may use the QOP LIST command.
|
||||
|
||||
This command may have been disabled for your channel, and
|
||||
in that case you need to use the access list. See
|
||||
%R%S HELP ACCESS for information about the access list,
|
||||
and %R%S HELP SET XOP to know how to toggle between
|
||||
the access list and xOP list systems.
|
||||
|
||||
CHAN_HELP_AOP
|
||||
Sintaxe: AOP canal ADD nick
|
||||
AOP canal DEL {nick | entrada | lista-entradas}
|
||||
@@ -4567,6 +4634,7 @@ CHAN_HELP_ACCESS
|
||||
Sintaxe: ACCESS canal ADD nick nível
|
||||
ACCESS canal DEL {nick | entrada | lista-entradas}
|
||||
ACCESS canal LIST [máscara | lista-entradas]
|
||||
ACCESS canal VIEW [máscara | lista-entradas]
|
||||
ACCESS canal CLEAR
|
||||
|
||||
Faz manutenção da lista de acesso de um canal. A lista
|
||||
@@ -4600,6 +4668,9 @@ CHAN_HELP_ACCESS
|
||||
ACCESS #canal LIST 2-5,7-9
|
||||
Lista as entradas de acesso numeradas de 2 a 5 e de 7 a 9.
|
||||
|
||||
The ACCESS VIEW command displays the access list similar
|
||||
to ACCESS LIST but shows the creator and last used time.
|
||||
|
||||
O comando ACCESS CLEAR limpa todas as entradas da lista
|
||||
de acesso.
|
||||
|
||||
@@ -4675,29 +4746,30 @@ CHAN_HELP_AKICK
|
||||
de AutoKick.
|
||||
|
||||
CHAN_HELP_LEVELS
|
||||
Sintaxe: LEVELS canal SET tipo nível
|
||||
Sintaxe: LEVELS canal SET tipo [nível|FOUNDER]
|
||||
LEVELS canal {DIS | DISABLE} tipo
|
||||
LEVELS canal LIST
|
||||
LEVELS canal RESET
|
||||
|
||||
O comando LEVELS permite ajuste detalhado sobre o
|
||||
significado dos níveis de acesso numéricos usados pelos
|
||||
canais. Com esse comando, você pode definir o nível de
|
||||
acesso requerido pela maioria das funções do %S.
|
||||
(Os comandos SET FOUNDER e SET PASSWORD, assim como
|
||||
este comando, são sempre restritos ao Fundador do canal).
|
||||
The LEVELS command allows fine control over the meaning of
|
||||
the numeric access levels used for channels. With this
|
||||
command, you can define the access level required for most
|
||||
of %S's functions. (The SET FOUNDER and this command
|
||||
are always restricted to the channel founder.)
|
||||
|
||||
LEVELS SET permite que o nível de acesso para uma função ou
|
||||
grupo de funções seja alterado. LEVELS DISABLE (ou DIS
|
||||
para encurtar) desabilita um recurso automático ou não permite
|
||||
o acesso a funções para qualquer um que não seja o Fundador
|
||||
do canal. LEVELS LIST mostra os níveis atuais para cada
|
||||
função ou para um grupo de funções. LEVELS RESET recoloca
|
||||
os níveis de acordo com o padrão de um canal recém-criado
|
||||
(veja HELP ACCESS LEVELS).
|
||||
LEVELS SET allows the access level for a function or group of
|
||||
functions to be changed. LEVELS DISABLE (or DIS for short)
|
||||
disables an automatic feature or disallows access to a
|
||||
function by anyone, INCLUDING the founder (although, the founder
|
||||
can always reenable it).
|
||||
|
||||
Para lista de recursos e funções cujos níveis podem ser
|
||||
ajustados, veja HELP LEVELS DESC.
|
||||
LEVELS LIST shows the current levels for each function or
|
||||
group of functions. LEVELS RESET resets the levels to the
|
||||
default levels of a newly-created channel (see
|
||||
HELP ACCESS LEVELS).
|
||||
|
||||
For a list of the features and functions whose levels can be
|
||||
set, see HELP LEVELS DESC.
|
||||
|
||||
CHAN_HELP_LEVELS_DESC
|
||||
Os seguintes nomes de recursos/funções são entendidos.
|
||||
@@ -4834,10 +4906,10 @@ CHAN_HELP_INVITE
|
||||
nível de acesso 5 ou superior no canal.
|
||||
|
||||
CHAN_HELP_UNBAN
|
||||
Sintaxe: UNBAN #canal
|
||||
Sintaxe: UNBAN #canal [nick]
|
||||
|
||||
Diz ao %S para remover todos os bans permitindo que
|
||||
você entre em um canal.
|
||||
Tells %S to remove all bans preventing you or the given
|
||||
user from entering the given channel.
|
||||
|
||||
Por padrão, é limitado aos AOPs ou àqueles que possuem
|
||||
nível de acesso 5 ou superior no canal.
|
||||
@@ -4897,17 +4969,6 @@ CHAN_HELP_GETKEY
|
||||
Sintaxe: GETKEY canal
|
||||
|
||||
Retorna a key (do modo +k) de um determinado canal.
|
||||
|
||||
CHAN_HELP_SENDPASS
|
||||
Sintaxe: SENDPASS canal
|
||||
|
||||
Envia a senha de um determinado canal para o fundador
|
||||
do mesmo, usando o e-mail gravado no nick dele. Este
|
||||
comando é realmente útil quando se trata de senhas
|
||||
perdidas.
|
||||
|
||||
Pode estar limitado aos Operadores de IRC em
|
||||
algumas Redes.
|
||||
|
||||
CHAN_SERVADMIN_HELP
|
||||
|
||||
@@ -4915,22 +4976,6 @@ CHAN_SERVADMIN_HELP
|
||||
DROP mesmo sem se identificarem como donos do canal, e podem
|
||||
também ver as listas de acesso, AKICK, e níveis de qualquer
|
||||
canal.
|
||||
|
||||
CHAN_SERVADMIN_HELP_LOGOUT
|
||||
Sintaxe: LOGOUT canal [nick]
|
||||
|
||||
Este comando faz com que um determinado nick seja des-identificado
|
||||
do canal, fazendo com que seja necessário ele se identificar
|
||||
novamente para recuperar seu acesso.
|
||||
|
||||
Se você for o Founder do canal, pode usar este comando em
|
||||
qualquer usuário e em si mesmo.
|
||||
|
||||
Se você for um Administrador dos Services, poderá
|
||||
desconectar qualquer um de qualquer canal sem precisar
|
||||
ser o Founder dos mesmos. Além disso, você pode omitir
|
||||
o parâmetro nick; com isso, irá des-identificar todos
|
||||
os usuários registrados do canal.
|
||||
|
||||
CHAN_SERVADMIN_HELP_DROP
|
||||
Sintaxe: DROP canal
|
||||
@@ -4954,7 +4999,8 @@ CHAN_SERVADMIN_HELP_SET_NOEXPIRE
|
||||
|
||||
CHAN_SERVADMIN_HELP_INFO
|
||||
|
||||
Administradores de Services podem usar o comando ALL com qualquer canal.
|
||||
Services Operators with the chanserv/auspex permission can
|
||||
use the ALL parameter with any channel.
|
||||
|
||||
CHAN_SERVADMIN_HELP_LIST
|
||||
Sintaxe: LIST padrão [FORBIDDEN] [SUSPENDED] [NOEXPIRE]
|
||||
@@ -6291,3 +6337,15 @@ OPER_UMODE_UNSUPPORTED
|
||||
OPER_SUPER_ADMIN_NOT_ENABLED
|
||||
Opção SuperAdmin não habilitada no arquivo services.conf
|
||||
|
||||
OPER_HELP_SYNC
|
||||
Syntax: SQLSYNC
|
||||
|
||||
This command syncs your databases with SQL. You should
|
||||
only have to execute this command once, when you initially
|
||||
import your databases into SQL.
|
||||
OPER_HELP_CMD_SQLSYNC
|
||||
SQLSYNC Import your databases to SQL
|
||||
OPER_SYNC_UPDATING
|
||||
Updating MySQL.
|
||||
OPER_SYNC_UPDATED
|
||||
Finished updating MySQL.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Russian language file for Anope
|
||||
#
|
||||
# (C) 2003-2008 Anope Team
|
||||
# (C) 2003-2010 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Please read COPYING and README for further details.
|
||||
@@ -860,6 +860,24 @@ NICK_SENDPASS_LINE_5
|
||||
NICK_SENDPASS_OK
|
||||
Ïàðîëü äëÿ íèêà %s áûë âûñëàí íà åãî email-àäðåñ.
|
||||
|
||||
# RESETPASS responses
|
||||
NICK_RESETPASS_SYNTAX
|
||||
RESETPASS nickname
|
||||
NICK_RESETPASS_SUBJECT
|
||||
Reset password request for %s
|
||||
NICK_RESETPASS_MESSAGE
|
||||
Hi,
|
||||
|
||||
You have requested to have the password for %s reset.
|
||||
To reset your password, type %R%s CONFIRM %s
|
||||
If you don't know why this mail is sent to you, please ignore it silently.
|
||||
|
||||
PLEASE DON'T ANSWER TO THIS MAIL!
|
||||
|
||||
%s administrators.
|
||||
NICK_RESETPASS_COMPLETE
|
||||
Password reset email for %s has been sent.
|
||||
|
||||
# SUSPEND responses
|
||||
NICK_SUSPEND_SYNTAX
|
||||
SUSPEND íèê ïðè÷èíà
|
||||
@@ -897,10 +915,6 @@ NICK_IS_PREREG
|
||||
Ýòîò íèê îæèäàåò ïîäòâåðæäåíèÿ ÷åðåç e-mail ïåðåä çàâåðøåíèåì ðåãèñòðàöèè.
|
||||
NICK_ENTER_REG_CODE
|
||||
Auth-êîä áûë âûñëàí íà %s, äëÿ çàâåðøåíèÿ ðåãèñòðàöèè èñïîëüçóéòå êîìàíäó %R%s confirm auth-êîä
|
||||
NICK_CONFIRM_NOT_FOUND
|
||||
Âðåìÿ ïåðâîé ÷àñòè ðåãèñòðàöèè èñòåêëî, âîñïîëüçóéòåñü êîìàíäîé "%R%s register <ïàðîëü> <email>"
|
||||
NICK_CONFIRM_INVALID
|
||||
Áûë ââåäåí íåâåðíûé auth-êîä, ïîæàëóéñòà, ïðîâåðüòå âàø e-mail ñíîâà è ïîïðîáóéòå åùå ðàç.
|
||||
NICK_REG_MAIL_SUBJECT
|
||||
Ðåãèñòðàöèÿ íèêà %s
|
||||
NICK_REG_MAIL_HEAD
|
||||
@@ -920,6 +934,15 @@ NICK_GETPASS_PASSCODE_IS
|
||||
NICK_FORCE_REG
|
||||
Ðåãèñòðàöèÿ íèêà %s ïîäòâåðæäåíà.
|
||||
|
||||
NICK_CONFIRM_NOT_FOUND
|
||||
Âðåìÿ ïåðâîé ÷àñòè ðåãèñòðàöèè èñòåêëî, âîñïîëüçóéòåñü êîìàíäîé "%R%s register <ïàðîëü> <email>"
|
||||
NICK_CONFIRM_INVALID
|
||||
Áûë ââåäåí íåâåðíûé auth-êîä, ïîæàëóéñòà, ïðîâåðüòå âàø e-mail ñíîâà è ïîïðîáóéòå åùå ðàç.
|
||||
NICK_CONFIRM_EXPIRED
|
||||
Your password reset request has expired.
|
||||
NICK_CONFIRM_SUCCESS
|
||||
You are now identified for your nick. Change your password using "%R%s SET PASSWORD newpassword" now.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
# ChanServ messages
|
||||
@@ -999,6 +1022,12 @@ CHAN_LEVEL_TOPIC
|
||||
Óðîâåíü äîñòóïà ê êîìàíäå TOPIC
|
||||
CHAN_LEVEL_INFO
|
||||
Óðîâåíü äîñòóïà ê êîìàíäå INFO ñ ïàðàìåòðîì ALL
|
||||
CHAN_LEVEL_AUTOOWNER
|
||||
Automatic mode +q
|
||||
CHAN_LEVEL_OWNER
|
||||
Allowed to use OWNER command
|
||||
CHAN_LEVEL_OWNERME
|
||||
Allowed to (de)owner him/herself
|
||||
|
||||
# Automatic responses
|
||||
CHAN_IS_REGISTERED
|
||||
@@ -1014,7 +1043,7 @@ CHAN_X_INVALID
|
||||
|
||||
# REGISTER responses
|
||||
CHAN_REGISTER_SYNTAX
|
||||
REGISTER #êàíàë ïàðîëü îïèñàíèå
|
||||
REGISTER #êàíàë îïèñàíèå
|
||||
CHAN_REGISTER_DISABLED
|
||||
Èçâèíèòå, ðåãèñòðàöèÿ êàíàëîâ âðåìåííî ïðèîñòàíîâëåíà.
|
||||
CHAN_REGISTER_NOT_LOCAL
|
||||
@@ -1033,36 +1062,11 @@ CHAN_REGISTRATION_FAILED
|
||||
Èçâèíèòå, íî çàðåãèñòðèðîâàòü êàíàë íåóäàëîñü.
|
||||
CHAN_REGISTERED
|
||||
Êàíàë %s óñïåøíî çàðåãèñòðèðîâàí íà íèê %s
|
||||
CHAN_PASSWORD_IS
|
||||
Ïàðîëü îò âàøåãî êàíàëà - %s - çàïîìíèòå åãî äëÿ äàëüíåéøåãî èñïîëüçîâàíèÿ.
|
||||
CHAN_REGISTER_NONE_CHANNEL
|
||||
Âû ïûòàåòåñü çàðåãèñòðèðîâàòü íåñóùåñòâóþùèé êàíàë %s
|
||||
CHAN_SYMBOL_REQUIRED
|
||||
Âû äîëæíû óêàçàòü ñèìâîë # ïåðåä íàçâàíèåì êàíàëà.
|
||||
|
||||
|
||||
# IDENTIFY responses
|
||||
CHAN_IDENTIFY_SYNTAX
|
||||
IDENTIFY #êàíàë ïàðîëü
|
||||
CHAN_IDENTIFY_FAILED
|
||||
Èçâèíèòå, íî ïðîèçâåñòè èäåíòèôèêàöèþ íåóäàëîñü.
|
||||
CHAN_IDENTIFY_SUCCEEDED
|
||||
Ïàðîëü ïðèíÿò, òåïåðü âàø óðîâåíü äîñòóïà íà êàíàëå %s - âëàäåëåö.
|
||||
CHAN_LOGOUT_FOUNDER_FAILED
|
||||
Âû íå ìîæåòå äåèäåíòèôèöèðîâàòü ñåáÿ îòíîñòèòåëüíî êàíàëà %s ò.ê. âû åãî ðåàëüíûé âëàäåëåö.
|
||||
CHAN_LOGOUT_NOT_LOGGEDIN
|
||||
%s was not logged into %s.
|
||||
|
||||
# LOGOUT responses
|
||||
CHAN_LOGOUT_SYNTAX
|
||||
LOGOUT #êàíàë íèê
|
||||
CHAN_LOGOUT_SERVADMIN_SYNTAX
|
||||
LOGOUT #êàíàë [íèê]
|
||||
CHAN_LOGOUT_SUCCEEDED
|
||||
Ïîëüçîâàòåëü %s óñïåøíî äåèäåíòèôèöèðîâàí îò êàíàëà %s.
|
||||
CHAN_LOGOUT_ALL_SUCCEEDED
|
||||
Âñå ïîëüçîâàòåëè, èäåíòèôèöèðîâàííûå ê êàíàëó %s, óñïåøíî äåèäåíòèôèöèðîâàíû.
|
||||
|
||||
# DROP responses
|
||||
CHAN_DROP_SYNTAX
|
||||
DROP #êàíàë
|
||||
@@ -1093,14 +1097,6 @@ CHAN_SUCCESSOR_UNSET
|
||||
CHAN_SUCCESSOR_IS_FOUNDER
|
||||
%s íå ìîæåò áûòü íàñëåäíèêîì êàíàëà %s òàê êàê îí åãî âëàäåëåö.
|
||||
|
||||
# SET PASSWORD responses
|
||||
CHAN_SET_PASSWORD_FAILED
|
||||
Èçâèíèòå, óñòàíîâèòü ïàðîëü íåóäàëîñü.
|
||||
CHAN_PASSWORD_CHANGED
|
||||
Ïàðîëü äëÿ êàíàëà %s óñïåøíî èçìåíåí.
|
||||
CHAN_PASSWORD_CHANGED_TO
|
||||
Ïàðîëü äëÿ êàíàëà %s èçìåíåí íà %s.
|
||||
|
||||
# SET DESC responses
|
||||
CHAN_DESC_CHANGED
|
||||
Îïèñàíèå êàíàëà %s èçìåíåíî íà %s.
|
||||
@@ -1232,6 +1228,14 @@ CHAN_SET_XOP_ON
|
||||
CHAN_SET_XOP_OFF
|
||||
Ñèñòåìà ïðèâåëåãèé xOP äëÿ êàíàëà %s îòêëþ÷åíà.
|
||||
|
||||
# SET PERSISTANT responces
|
||||
CHAN_SET_PERSIST_SYNTAX
|
||||
SET channel PERSIST {ON | OFF}
|
||||
CHAN_SET_PERSIST_ON
|
||||
Channel %s is now persistant.
|
||||
CHAN_SET_PERSIST_OFF
|
||||
Channel %s is no longer persistant.
|
||||
|
||||
# SET NOEXPIRE responses
|
||||
CHAN_SET_NOEXPIRE_SYNTAX
|
||||
SET #êàíàë NOEXPIRE {ON | OFF}
|
||||
@@ -1251,6 +1255,37 @@ CHAN_XOP_ACCESS
|
||||
CHAN_XOP_NOT_AVAILABLE
|
||||
Ñèñòåìà ïðèâåëåãèé xOP íåäîñòóïíà.
|
||||
|
||||
# QOP messages
|
||||
CHAN_QOP_SYNTAX
|
||||
QOP channel {ADD|DEL|LIST|CLEAR} [nick | entry-list]
|
||||
CHAN_QOP_DISABLED
|
||||
Sorry, channel QOP list modification is temporarily disabled.
|
||||
CHAN_QOP_NICKS_ONLY
|
||||
Channel QOP lists may only contain registered nicknames.
|
||||
CHAN_QOP_ADDED
|
||||
%s added to %s QOP list.
|
||||
CHAN_QOP_MOVED
|
||||
%s moved to %s QOP list.
|
||||
CHAN_QOP_NO_SUCH_ENTRY
|
||||
No such entry (#%d) on %s QOP list.
|
||||
CHAN_QOP_NOT_FOUND
|
||||
%s not found on %s QOP list.
|
||||
CHAN_QOP_NO_MATCH
|
||||
No matching entries on %s QOP list.
|
||||
CHAN_QOP_DELETED
|
||||
%s deleted from %s QOP list.
|
||||
CHAN_QOP_DELETED_ONE
|
||||
Deleted 1 entry from %s QOP list.
|
||||
CHAN_QOP_DELETED_SEVERAL
|
||||
Deleted %d entries from %s QOP list.
|
||||
CHAN_QOP_LIST_EMPTY
|
||||
%s QOP list is empty.
|
||||
CHAN_QOP_LIST_HEADER
|
||||
QOP list for %s:
|
||||
Num Nick
|
||||
CHAN_QOP_CLEAR
|
||||
Channel %s QOP list has been cleared.
|
||||
|
||||
# AOP messages
|
||||
CHAN_AOP_SYNTAX
|
||||
AOP #êàíàë {ADD|DEL|LIST|CLEAR} [íèê | íîìåð çàïèñ]
|
||||
@@ -1377,7 +1412,7 @@ CHAN_VOP_CLEAR
|
||||
|
||||
# ACCESS messages
|
||||
CHAN_ACCESS_SYNTAX
|
||||
ACCESS #êàíàë {ADD|DEL|LIST|CLEAR} [íèê [óðîâåíü] | íîìåð_çàïèñè]
|
||||
ACCESS #êàíàë {ADD|DEL|LIST|VIEW|CLEAR} [íèê [óðîâåíü] | íîìåð_çàïèñè]
|
||||
CHAN_ACCESS_XOP
|
||||
Âû íå ìîæåòå èñïîëüçîâàòü ýòó êîìàíäó òàê êàê âêëþ÷åíà ñèñòåìà ïðèâèëåãèé xOP.
|
||||
Äëÿ ìîäèôèêàöèè ñïèñêà äîñòóïà èñïîëüçóéòå êîìàíäû VOP, AOP è SOP.
|
||||
@@ -1427,6 +1462,12 @@ CHAN_ACCESS_LIST_AXS_FORMAT
|
||||
%3d %4d %s
|
||||
CHAN_ACCESS_CLEAR
|
||||
Ñïèñîê äîñòóïà êàíàëà %s áûë ïîëíîñòüþ î÷èùåí.
|
||||
CHAN_ACCESS_VIEW_XOP_FORMAT
|
||||
%3d %s %s
|
||||
by %s, last seen %s
|
||||
CHAN_ACCESS_VIEW_AXS_FORMAT
|
||||
%3d %4d %s
|
||||
by %s, last seen %s
|
||||
|
||||
# AKICK responses
|
||||
CHAN_AKICK_SYNTAX
|
||||
@@ -1481,6 +1522,8 @@ CHAN_LEVELS_RANGE
|
||||
Óðîâåíü äîëæåí áûòü ÷èñëîì ìåæäó %d è %d âêëþ÷èòåëüíî.
|
||||
CHAN_LEVELS_CHANGED
|
||||
Óðîâåíü äîñòóïà ê %s íà êàíàëå %s èçìåíåí íà %d.
|
||||
CHAN_LEVELS_CHANGED_FOUNDER
|
||||
Level for %s on channel %s changed to founder only.
|
||||
CHAN_LEVELS_UNKNOWN
|
||||
Íåèçâåñòíûé ïóíêò %s. Äëÿ ïîëó÷åíèÿ ñïèñêà âñåõ äîñòóïíûõ çíà÷åíèé ñì. %R%s HELP LEVELS DESC
|
||||
CHAN_LEVELS_DISABLED
|
||||
@@ -1563,6 +1606,8 @@ CHAN_INFO_OPT_TOPICLOCK
|
||||
Áëîêèðîâêà òîïèêà
|
||||
CHAN_INFO_OPT_XOP
|
||||
Ñèñòåìà ïðèâåëåãèé xOP
|
||||
CHAN_INFO_OPT_PERSIST
|
||||
Persistant
|
||||
CHAN_INFO_OPT_NONE
|
||||
îòñóòñòâóþò
|
||||
CHAN_INFO_MODE_LOCK
|
||||
@@ -1591,12 +1636,17 @@ CHAN_INVITE_ALREADY_IN
|
||||
You are already in %s!
|
||||
CHAN_INVITE_SUCCESS
|
||||
You have been invited to %s.
|
||||
CHAN_INVITE_OTHER_SUCCESS
|
||||
%s has been invited to %s.
|
||||
|
||||
|
||||
# UNBAN responses
|
||||
CHAN_UNBAN_SYNTAX
|
||||
UNBAN #êàíàë
|
||||
UNBAN #êàíàë [nick]
|
||||
CHAN_UNBANNED
|
||||
Âû áûëè ðàçáàíåíû íà êàíàëå %s.
|
||||
CHAN_UNBANNED_OTHER
|
||||
%s has been unbanned from %s.
|
||||
|
||||
# TOPIC responses
|
||||
CHAN_TOPIC_SYNTAX
|
||||
@@ -1622,14 +1672,6 @@ CHAN_CLEARED_USERS
|
||||
CHAN_CLEARED_INVITES
|
||||
Âñå èñêëþ÷åíèÿ íà ïðèãëàøåíèå êàíàëà %s óäàëåíû.
|
||||
|
||||
# GETPASS responses
|
||||
CHAN_GETPASS_SYNTAX
|
||||
GETPASS #êàíàë
|
||||
CHAN_GETPASS_UNAVAILABLE
|
||||
Êîìàíäà GETPASS íåäîñòóïíà, òàê êàê èñïîëüçóåòñÿ øèôðîâàíèå ïàðîëåé.
|
||||
CHAN_GETPASS_PASSWORD_IS
|
||||
Ïàðîëü êàíàëà %s - %s.
|
||||
|
||||
# GETKEY responses
|
||||
CHAN_GETKEY_SYNTAX
|
||||
GETKEY #êàíàë
|
||||
@@ -1638,28 +1680,6 @@ CHAN_GETKEY_NOKEY
|
||||
CHAN_GETKEY_KEY
|
||||
Key for channel %s is %s.
|
||||
|
||||
# SENDPASS responses
|
||||
CHAN_SENDPASS_SYNTAX
|
||||
SENDPASS #êàíàë
|
||||
CHAN_SENDPASS_UNAVAILABLE
|
||||
Êîìàíäà SENDPASS íåäîñòóïíà, òàê êàê èñïîëüçóåòñÿ øèôðîâàíèå ïàðîëåé.
|
||||
CHAN_SENDPASS_SUBJECT
|
||||
Ïàðîëü îò êàíàëà %s
|
||||
CHAN_SENDPASS_HEAD
|
||||
Äîáðîãî âðåìåíè ñóòîê, ìíîãîóâàæàåìûé/àÿ!
|
||||
CHAN_SENDPASS_LINE_1
|
||||
Áûë ïîëó÷åí çàïðîñ íà âîññòàíîâëåíèå ïàðîëÿ îò âàøåãî êàíàëà %s
|
||||
CHAN_SENDPASS_LINE_2
|
||||
Òåêóùèé ïàðîëü: %s * Äëÿ áîëüøåé áåçîïàñíîñòè, ðåêîìåíäóåòñÿ èçìåíèòü åãî êàê ìîæíî ñêîðåå.
|
||||
CHAN_SENDPASS_LINE_3
|
||||
Åñëè âû íå çàïðàøèâàëè ýòî ïèñüìî, ïðîñòî ïðîèãíîðèðóéòå åãî.
|
||||
CHAN_SENDPASS_LINE_4
|
||||
ÏÎÆÀËÓÉÑÒÀ, ÍÅ ÎÒÂÅ×ÀÉÒÅ ÍÀ ÝÒÎ ÏÈÑÜÌÎ!
|
||||
CHAN_SENDPASS_LINE_5
|
||||
Àäìèíèñòðàöèÿ ñåòè %s.
|
||||
CHAN_SENDPASS_OK
|
||||
Ïàðîëü îò êàíàëà %s áûë âûñëàí íà email-àäðåñ åãî âëàäåëüöà.
|
||||
|
||||
# FORBID responses
|
||||
CHAN_FORBID_SYNTAX
|
||||
FORBID #êàíàë [ïðè÷èíà]
|
||||
@@ -2097,6 +2117,8 @@ BOT_UNASSIGN_SYNTAX
|
||||
UNASSIGN #êàíàë
|
||||
BOT_UNASSIGN_UNASSIGNED
|
||||
Áîò ñ êàíàëà %s óñïåøíî óäàëåí.
|
||||
BOT_UNASSIGN_PERSISTANT_CHAN
|
||||
You can not unassign bots while persist is set on the channel.
|
||||
|
||||
# INFO responses
|
||||
BOT_INFO_SYNTAX
|
||||
@@ -2875,8 +2897,6 @@ OPER_DEFCON_SYNTAX
|
||||
DEFCON [1|2|3|4|5]
|
||||
OPER_DEFCON_DENIED
|
||||
Íà äàííûé ìîìåíò ñåðâèñû ðàáîòàþò â DEFCON-ðåæèìå. Ïîâòîðèòå ñâîé çàïðîñ ïîçæå.
|
||||
OPER_DEFCON_NO_CONF
|
||||
Àêòèâèðîâàíèå DEFCON-ðåæèìà íåâîçìîæíî, òàê êàê îí íå âêëþ÷åí â êîíôèãå ñåðâèñîâ.
|
||||
OPER_DEFCON_CHANGED
|
||||
DEFCON-ðåæèì àêòèâèðîâàí, óðîâåíü çàùèòû: %d
|
||||
OPER_DEFCON_WALL
|
||||
@@ -2896,6 +2916,10 @@ OPER_MODULE_REMOVE_FAIL
|
||||
Íåâîçìîæíî âûãðóçèòü ìîäóëü %s
|
||||
OPER_MODULE_NO_UNLOAD
|
||||
Ýòîò ìîäóëü íå ìîæåò áûòü âûãðóæåí.
|
||||
OPER_MODULE_ALREADY_LOADED
|
||||
Module %s is already loaded.
|
||||
OPER_MODULE_ISNT_LOADED
|
||||
Module %s isn't loaded.
|
||||
OPER_MODULE_LOAD_SYNTAX
|
||||
MODLOAD èìÿ_ôàéëà
|
||||
OPER_MODULE_UNLOAD_SYNTAX
|
||||
@@ -3937,6 +3961,12 @@ NICK_HELP_SENDPASS
|
||||
Ïðèìå÷àíèå: SENDPASS ìîæåò áûòü îãðàíè÷åí äëÿ èñïîëüçîâàíèÿ òîëüêî
|
||||
IRC-îïåðàòîðàìè äàííîé ñåòè.
|
||||
|
||||
NICK_HELP_RESETPASS
|
||||
Syntax: RESETPASS nickname
|
||||
|
||||
Sends a code key to the nickname with the instructions on how to
|
||||
reset their password.
|
||||
|
||||
NICK_HELP_CONFIRM
|
||||
Ñèíòàêñèñ: CONFIRM auth-êîä
|
||||
|
||||
@@ -3946,6 +3976,14 @@ NICK_HELP_CONFIRM
|
||||
Êîäîâàÿ ôðàçà, êîòîðàÿ óêàçûâàåòñÿ â êà÷åñòâå ïàðàìåòðà, âûñûëàåòñÿ
|
||||
íà âàø e-mail â ïåðâîé ÷àñòè ïðîöåññà ðåãèñòðàöèè íèêà. Äëÿ áîëåå
|
||||
ïîäðîáíîé èíôîðìàöèè ñì. %R%S HELP REGISTER
|
||||
|
||||
This is also used after the RESETPASS command has been used to
|
||||
force identify you to your nick so you may change your password.
|
||||
|
||||
NICK_HELP_CONFIRM_OPER
|
||||
|
||||
Additionally, Services Operators with the nickserv/confirm permission can
|
||||
replace passcode with a users nick to force validate them.
|
||||
|
||||
NICK_HELP_RESEND
|
||||
Ñèíòàêñèñ: RESEND
|
||||
@@ -4098,10 +4136,10 @@ CHAN_HELP_CMD_STATUS
|
||||
ïîëüçîâàòåëÿ íà óêàçàííîì êàíàëå
|
||||
CHAN_HELP_CMD_REGISTER
|
||||
REGISTER Ðåãèñòðàöèÿ êàíàëà
|
||||
CHAN_HELP_CMD_IDENTIFY
|
||||
IDENTIFY Èäåíòèôèöèêàöèÿ ê êàíàëó â êà÷åñòâå âëàäåëüöà
|
||||
CHAN_HELP_CMD_SET
|
||||
SET Íàñòðîéêà ðàçëè÷íûõ îïöèé êàíàëà
|
||||
CHAN_HELP_CMD_QOP
|
||||
QOP Modify the list of QOP users
|
||||
CHAN_HELP_CMD_AOP
|
||||
AOP Óïðàâëåíèå ñïèñêîì AOP'îâ êàíàëà
|
||||
CHAN_HELP_CMD_SOP
|
||||
@@ -4114,8 +4152,6 @@ CHAN_HELP_CMD_AKICK
|
||||
AKICK Óïðàâëåíèå ñïèñêîì àâòîêèêîâ êàíàëà
|
||||
CHAN_HELP_CMD_DROP
|
||||
DROP Óäàëåíèå êàíàëà èç áàçû äàííûõ ñåðâèñîâ
|
||||
CHAN_HELP_CMD_SENDPASS
|
||||
SENDPASS Âîññòàíîâëåíèå 'çàáûòîãî' ïàðîëÿ îò êàíàëà
|
||||
CHAN_HELP_CMD_BAN
|
||||
BAN Óñòàíîâêà áàíà íà êàíàëå
|
||||
CHAN_HELP_CMD_CLEAR
|
||||
@@ -4132,14 +4168,12 @@ CHAN_HELP_CMD_KICK
|
||||
KICK Âûêèäûâàåò óêàçàííîãî ïîëüçîâàòåëÿ ñ êàíàëà
|
||||
CHAN_HELP_CMD_LIST
|
||||
LIST Çàïðîñ ñïèñêà âñåõ çàðåãèñòðèðîâàííûõ êàíàëîâ
|
||||
CHAN_HELP_CMD_LOGOUT
|
||||
LOGOUT Äåèäåíòèôèêàöèÿ óêàçàííîãî ïîëüçîâàòåëÿ îò êàíàëà
|
||||
CHAN_HELP_CMD_OP
|
||||
OP Óñòàíîâêà ñòàòóñà îïåðàòîðà (+o) óêàçàííîìó íèêó íà êàíàëå
|
||||
CHAN_HELP_CMD_TOPIC
|
||||
TOPIC Óñòàíîâêà òîïèêà íà êàíàëå ïîñðåäñòâîì ñåðâèñîâ
|
||||
CHAN_HELP_CMD_UNBAN
|
||||
UNBAN Óäàëåíèå íà êàíàëå âñåõ áàíîâ, êîòîðûå íå ïîçâîëÿþò âàì âîéòè
|
||||
UNBAN Remove all bans preventing a user from entering a channel
|
||||
CHAN_HELP_CMD_VOICE
|
||||
VOICE Óñòàíîâêà ñòàòóñà âîéñà (+v) óêàçàííîìó íèêó íà êàíàëå
|
||||
CHAN_HELP_CMD_VOP
|
||||
@@ -4158,10 +4192,6 @@ CHAN_HELP_CMD_OWNER
|
||||
OWNER Çàïðîñ ñòàòóñà âëàäåëüöà íà êàíàëå
|
||||
CHAN_HELP_CMD_PROTECT
|
||||
PROTECT Óñòàíîâêà ðåæèìà çàùèòû (+a) óêàçàííîìó íèêó íà êàíàëå
|
||||
CHAN_HELP_CMD_ADMIN
|
||||
ADMIN Óñòàíîâêà ñòàòóñà àäìèíèñòðàòîðà (+a) óêàçàííîìó íèêó íà êàíàëå
|
||||
CHAN_HELP_CMD_DEADMIN
|
||||
DEADMIN Ñíÿòèå ðåæèìà àäìèíèñòðàòîðà (-a) ñ óêàçàííîãî íèêà íà êàíàëå
|
||||
CHAN_HELP_CMD_DEOP
|
||||
DEOP Ñíÿòèå ðåæèìà îïåðàòîðà (-o) ñ óêàçàííîãî íèêà íà êàíàëå
|
||||
|
||||
@@ -4185,56 +4215,32 @@ CHAN_HELP_EXPIRES
|
||||
óäàëåí èç áàçû äàííûõ ñåðâèñîâ.
|
||||
|
||||
CHAN_HELP_REGISTER
|
||||
Ñèíòàêñèñ: REGISTER #êàíàë ïàðîëü îïèñàíèå
|
||||
Ñèíòàêñèñ: REGISTER #êàíàë îïèñàíèå
|
||||
|
||||
Ðåãèñòðèðóåò êàíàë â áàçå äàííûõ %S. ×òîáû èñïîëüçîâàòü ýòó
|
||||
êîìàíäó, âû äîëæíû áûòü îïåðàòîðîì òîãî êàíàëà, êîòîðûé âû ïûòàåòåñü
|
||||
çàðåãèñòðèðîâàòü. Óêàçàííûé ïðè ðåãèñòðàöèè ïàðîëü ìîæíî èñïîëüçîâàòü
|
||||
(êîìàíäîé IDENTIFY) äëÿ ïîëó÷åíèÿ äîñòóïà ê êàíàëó è åãî ðàçëè÷íûì
|
||||
íàñòðîéêàì.
|
||||
Ïîñëåäíèé ïàðàìåòð îïèñàíèå, êîòîðûé îáÿçàòåëüíî äîëæåí áûòü
|
||||
óêàçàí, ÿâëÿåòñÿ îïèñàíèåì êàíàëà è/èëè, âîçìîæíî, åãî òåìàòèêîé.
|
||||
|
||||
Ñðàçó ïîñëå ðåãèñòðàöèè êàíàëà, âû áóäåòå àâòîìàòè÷åñêè âíåñåíû â
|
||||
ñïèñîê äîñòóïà ñ óðîâåíåì founder (îñíîâàòåëü, âëàäåëåö). Âëàäåëåö
|
||||
êàíàëà èìååò âîçìîæíîñòü èçìåíÿòü ëþáûå åãî íàñòðîéêè, à òàê æå,
|
||||
àâòîìàòè÷åñêè ïîëó÷àòü ñòàòóñ îïïåðàòîðà îò %S ïðè çàõîäå
|
||||
íà êàíàë.
|
||||
Ïîìèìî âñåãî ýòîãî, êàê âëàäåëåö, âû ìîæåòå âîñïîëüçîâàòüñÿ êîìàíäîé
|
||||
ACCESS, ÷òî áû íàçíà÷èòü äîïîëíèòåëüíûõ îïåðàòîðîâ êàíàëà, ò. í.
|
||||
àäìèíèñòðàöèþ. Áîëåå ïîäðîáíóþ èíôîðìàöèþ î ñèñòåìå ïðèâåëåãèé âû
|
||||
ìîæåòå ïîëó÷èòü ïî êîìàíäå %R%S HELP ACCESS
|
||||
|
||||
Ïðèìå÷àíèå: ó÷òèòå, ÷òî ïåðåä òåì êàê ðåãèñòðèðîâàòü ñâîé êàíàë, âû
|
||||
äîëæíû ñïåðâà çàðåãèñòðèðîâàòü ñâîé íèê. Áîëåå ïîäðîáíàÿ èíôîðìàöèÿ
|
||||
î òîì, êàê ðåãèñòðèðîâàòü íèê, äîñòóïíà ïî %R%s HELP
|
||||
Registers a channel in the %S database. In order
|
||||
to use this command, you must first be a channel operator
|
||||
on the channel you're trying to register.
|
||||
The description, which must be included, is a
|
||||
general description of the channel's purpose.
|
||||
|
||||
CHAN_HELP_IDENTIFY
|
||||
Ñèíòàêñèñ: IDENTIFY #êàíàë ïàðîëü
|
||||
|
||||
Ïîçâîëÿåò èäåíòèôèöèðîâàòüñÿ íà %S â êà÷åñòâå âëàäåëüöà
|
||||
óêàçàííîãî êàíàëà. Ìíîãèå êîìàíäû ïî óïðàâëåíèþ êàíàëîì íåäîñòóïíû
|
||||
äî òåõ ïîð, ïîêà âû íå èäåíòèôèöèðóåòåñü ê êàíàëó.  êà÷åñòâå ïàðîëÿ
|
||||
íåîáõîäèìî óêàçûâàòü òîò ñàìûé ïàðîëü, êîòîðûé âû óêàçûâàëè ïðè
|
||||
ðåãèñòðàöèè âàøåãî êàíàëà.
|
||||
Ïðèìå÷àíèå: âàì íåîáÿçàòåëüíî èäåíòèôèöèðîâàòüñÿ ê êàíàëó, åñëè âû
|
||||
åãî ðåàëüíûé âëàäåëåö, äîñòàòî÷íî ïðîñòî èäåíòèôèöèðîâàòüñÿ ê íèêó.
|
||||
|
||||
CHAN_HELP_LOGOUT
|
||||
Ñèíòàêñèñ: LOGOUT #êàíàë íèê
|
||||
|
||||
Äàííàÿ êîìàíäà ïîçâîëÿåò äåèäåíòèôèöèðîâàòü ëþáîé íèê, êîòîðûé
|
||||
ñ ïîìîùüþ ïàðîëÿ èäåíòèôèöèðîâàëñÿ ê êàíàëó â êà÷åñòâå âëàäåëåöà.
|
||||
|
||||
Åñëè âû ÿâëÿåòåñü ðåàëüíûì âëàäåëüöåì êàíàëà, ó âàñ åñòü âîçìîæíîñòü
|
||||
äåèäåíòèôèöèðîâàòü êîãî óãîäíî, â èíîì ñëó÷àå - òîëüêî ñåáÿ.
|
||||
When you register a channel, you are recorded as the
|
||||
"founder" of the channel. The channel founder is allowed
|
||||
to change all of the channel settings for the channel;
|
||||
%S will also automatically give the founder
|
||||
channel-operator privileges when s/he enters the channel.
|
||||
See the ACCESS command (%R%S HELP ACCESS) for
|
||||
information on giving a subset of these privileges to
|
||||
other channel users.
|
||||
|
||||
NOTICE: In order to register a channel, you must have
|
||||
first registered your nickname. If you haven't,
|
||||
%R%s HELP for information on how to do so.
|
||||
|
||||
CHAN_HELP_DROP
|
||||
Ñèíòàêñèñ: DROP #êàíàë
|
||||
|
||||
Óäàëÿåò óêàçàííûé êàíàë èç áàçû äàííûõ ñåðâèñîâ. Èñïîëüçîâàòü DROP
|
||||
ìîæåò ëèøü âëàäåëåö êàíàëà, ïðåäâàðèòåëüíî ïðîèäåíòèôèöèðîâàâøèñü
|
||||
ê íåìó ñ ïîìîùüþ êîìàíäû IDENTIFY.
|
||||
ìîæåò ëèøü âëàäåëåö êàíàëà.
|
||||
|
||||
CHAN_HELP_SET
|
||||
Ñèíòàêñèñ: SET #êàíàë îïöèÿ ïàðàìåòð
|
||||
@@ -4244,7 +4250,6 @@ CHAN_HELP_SET
|
||||
|
||||
FOUNDER ñìåíà âëàäåëüöà êàíàëà
|
||||
SUCCESSOR óñòàíîâêà íàñëåäíèêà êàíàëà
|
||||
PASSWORD ñìåíà ïàðîëÿ êàíàëà
|
||||
DESC èçìåíåíèå îïèñàíèÿ êàíàëà
|
||||
URL óñòàíîâêà URL-àäðåñà êàíàëà
|
||||
EMAIL óñòàíîâêà Email-àäðåñà êàíàëà
|
||||
@@ -4263,6 +4268,7 @@ CHAN_HELP_SET
|
||||
SIGNKICK íàñòðîéêà ðåæèìà "ïîäïèñàííûõ êèêîâ"
|
||||
TOPICLOCK áëîêèðîâêà òîïèêà êàíàëà îò èçìåíåíèé åãî êåì-ëèáî
|
||||
XOP íàñòðîéêà ñèñòåìû ïðèâèëåãèé êàíàëà
|
||||
PERSIST Set the channel as permanent
|
||||
|
||||
Äëÿ áîëåå ïîäðîáíîé èíôîðìàöèè î êàêîé-ëèáî êîíêðåòíîé îïöèè, ñì.
|
||||
ñïðàâêó ïî %R%S HELP îïöèÿ
|
||||
@@ -4284,12 +4290,6 @@ CHAN_HELP_SET_SUCCESSOR
|
||||
êàíàëîì è òîò áóäåò óäàëåí. Êî âñåìó ïðî÷åìó, íèê íàñëåäíèêà êàíàëà
|
||||
äîëæåí áûòü çàðåãèñòðèðîâàííûì íèêîì.
|
||||
|
||||
CHAN_HELP_SET_PASSWORD
|
||||
Ñèíòàêñèñ: SET #êàíàë PASSWORD ïàðîëü
|
||||
|
||||
Ïîçâîëÿåò èçìåíèòü òåêóùèé ïàðîëü êàíàëà, èñïîëüçóåìûé äëÿ
|
||||
èäåíòèôèêàöèè ê íåìó (êàíàëó) â êà÷åñòâå âëàäåëüöà.
|
||||
|
||||
CHAN_HELP_SET_DESC
|
||||
Ñèíòàêñèñ: SET #êàíàë DESC îïèñàíèå
|
||||
|
||||
@@ -4481,6 +4481,29 @@ CHAN_HELP_SET_XOP
|
||||
Ïåðåêëþ÷åíèå èç ñèñòåìû xOP â ñèñòåìó ACCESS îáû÷íî ïðîõîäèò áåç
|
||||
êàêèõ-ëèáî ïðîáëåì.
|
||||
|
||||
CHAN_HELP_SET_PERSIST
|
||||
Syntax: SET channel PERSIST {ON | OFF}
|
||||
|
||||
Enables or disables the persistant channel setting.
|
||||
When persistant is set, the service bot will remain
|
||||
in the channel when it has emptied of users.
|
||||
|
||||
If your IRCd does not a permanent (persistant) channel
|
||||
mode you must have a service bot in your channel to
|
||||
set persist on, and it can not be unassigned while persist
|
||||
is on.
|
||||
|
||||
If this network does not have BotServ enabled and does
|
||||
not have a permanent channel mode, ChanServ will
|
||||
join your channel when you set persist on (and leave when
|
||||
it has been set off).
|
||||
|
||||
If your IRCd has a permanent (persistant) channel mode
|
||||
and is is set or unset (for any reason, including MLOCK),
|
||||
persist is automatically set and unset for the channel aswell.
|
||||
Additionally, services will set or unset this mode when you
|
||||
set persist on or off.
|
||||
|
||||
CHAN_HELP_SET_OPNOTICE
|
||||
Ñèíòàêñèñ: SET #êàíàë OPNOTICE {ON | OFF}
|
||||
|
||||
@@ -4488,6 +4511,45 @@ CHAN_HELP_SET_OPNOTICE
|
||||
Êîãäà îï-óâåäîìëåíèå âêëþ÷åíî, %S áóäåò ïîñûëàòü íîòèñ
|
||||
íà êàíàë êàæäûé ðàç, êîãäà êòî-ëèáî èñïîëüçóåò êîìàíäû OP/DEOP.
|
||||
|
||||
CHAN_HELP_QOP
|
||||
Syntax: QOP channel ADD nick
|
||||
QOP channel DEL {nick | entry-num | list}
|
||||
QOP channel LIST [mask | list]
|
||||
QOP channel CLEAR
|
||||
|
||||
Maintains the QOP (AutoOwner) list for a channel. The QOP
|
||||
list gives users the right to be auto-owner on your channel,
|
||||
which gives them almost (or potentially, total) access.
|
||||
|
||||
The QOP ADD command adds the given nickname to the
|
||||
QOP list.
|
||||
|
||||
The QOP DEL command removes the given nick from the
|
||||
QOP list. If a list of entry numbers is given, those
|
||||
entries are deleted. (See the example for LIST below.)
|
||||
|
||||
The QOP LIST command displays the QOP list. If
|
||||
a wildcard mask is given, only those entries matching the
|
||||
mask are displayed. If a list of entry numbers is given,
|
||||
only those entries are shown; for example:
|
||||
|
||||
QOP #channel LIST 2-5,7-9
|
||||
Lists QOP entries numbered 2 through 5 and
|
||||
7 through 9.
|
||||
|
||||
The QOP CLEAR command clears all entries of the
|
||||
QOP list.
|
||||
|
||||
The QOP commands are limited to
|
||||
founders (unless SECUREOPS is off). However, any user on the
|
||||
QOP list may use the QOP LIST command.
|
||||
|
||||
This command may have been disabled for your channel, and
|
||||
in that case you need to use the access list. See
|
||||
%R%S HELP ACCESS for information about the access list,
|
||||
and %R%S HELP SET XOP to know how to toggle between
|
||||
the access list and xOP list systems.
|
||||
|
||||
CHAN_HELP_AOP
|
||||
Ñèíòàêñèñ: AOP #êàíàë ADD íèê
|
||||
AOP #êàíàë DEL {íèê | íîìåð_çàïèñè | ñïèñîê_çàïèñåé}
|
||||
@@ -4663,6 +4725,7 @@ CHAN_HELP_ACCESS
|
||||
Ñèíòàêñèñ: ACCESS #êàíàë ADD íèê óðîâåíü
|
||||
ACCESS #êàíàë DEL {íèê | íîìåð_çàïèñè | ñïèñîê_çàïèñåé}
|
||||
ACCESS #êàíàë LIST [ìàñêà | ñïèñîê_çàïèñåé]
|
||||
ACCESS #êàíàë VIEW [ìàñêà | ñïèñîê_çàïèñåé]
|
||||
ACCESS #êàíàë CLEAR
|
||||
|
||||
Ïîçâîëÿåò óïðàâëÿòü ñïèñêîì äîñòóïà (ACCESS-ñïèñêîì) êàíàëà.
|
||||
@@ -4699,6 +4762,9 @@ CHAN_HELP_ACCESS
|
||||
ACCESS #êàíàë LIST 2-5,7-9
|
||||
îòîáðàçèò âñå çàïèñè ñî 2-îé ïî 5-óþ, è ñ 7-îé ïî 9-þ.
|
||||
|
||||
The ACCESS VIEW command displays the access list similar
|
||||
to ACCESS LIST but shows the creator and last used time.
|
||||
|
||||
Êîìàíäà ACCESS CLEAR ïîçâîëÿåò ïîëíîñòüþ î÷èñòèòü ñïèñîê äîñòóïà.
|
||||
|
||||
CHAN_HELP_ACCESS_LEVELS
|
||||
@@ -4775,30 +4841,30 @@ CHAN_HELP_AKICK
|
||||
Êîìàíäà AKICK CLEAR ïîëíîñòüþ î÷èùàåò ñïèñîê àâòîêèêîâ êàíàëà.
|
||||
|
||||
CHAN_HELP_LEVELS
|
||||
Ñèíòàêñèñ: LEVELS #êàíàë SET òèï óðîâåíü
|
||||
Ñèíòàêñèñ: LEVELS #êàíàë SET òèï [óðîâåíü|FOUNDER]
|
||||
LEVELS #êàíàë {DIS | DISABLE} òèï
|
||||
LEVELS #êàíàë LIST
|
||||
LEVELS #êàíàë RESET
|
||||
|
||||
Êîìàíäà LEVELS ïîçâîëÿåò óäîáíî óïðàâëÿòü óðîâíÿìè äîñòóïà,
|
||||
èñïîëüçóåìûìè äëÿ ñïèñêîâ äîñòóïà. Ñ ïîìîùüþ ýòîé ýòó êîìàíäû,
|
||||
âû ìîæåòå îïðåäåëèòü óðîâåíü äîñòóïà, òðåáóåìûé äëÿ áîëüøèíñòâà
|
||||
ôóíêöèé %S'à (êîìàíäû SET FOUNDER è SET PASSWORD,
|
||||
à òàêæå ýòó êîìàíäó, ìîæåò èñïîëüçîâàòü òîëüêî âëàäåëåö êàíàëà).
|
||||
The LEVELS command allows fine control over the meaning of
|
||||
the numeric access levels used for channels. With this
|
||||
command, you can define the access level required for most
|
||||
of %S's functions. (The SET FOUNDER and this command
|
||||
are always restricted to the channel founder.)
|
||||
|
||||
Êîìàíäà LEVELS SET ïîçâîëÿåò óñòàíîâèòü óðîâåíü äîñòóïà äëÿ
|
||||
ôóíêöèè èëè ãðóïïû ôóíêöèé.
|
||||
Êîìàíäà LEVELS DISABLE (DIS - ñîêðàùåííûé àíàëîã) îòêëþ÷àåò
|
||||
ôóíêöèþ èëè çàïðåùàåò äîñòóï ê ôóíêöèè âñåì, êðîìå âëàäåëüöà êàíàëà.
|
||||
LEVELS SET allows the access level for a function or group of
|
||||
functions to be changed. LEVELS DISABLE (or DIS for short)
|
||||
disables an automatic feature or disallows access to a
|
||||
function by anyone, INCLUDING the founder (although, the founder
|
||||
can always reenable it).
|
||||
|
||||
Êîìàíäà LEVELS LIST ïîêàæåò òåêóùèå óðîâíè äîñòóïà äëÿ êàæäîé
|
||||
ôóíêöèè èëè ãðóïïû ôóíêöèé.
|
||||
LEVELS LIST shows the current levels for each function or
|
||||
group of functions. LEVELS RESET resets the levels to the
|
||||
default levels of a newly-created channel (see
|
||||
HELP ACCESS LEVELS).
|
||||
|
||||
Êîìàíäà LEVELS RESET ñáðîñèò âñå íàñòðîéêè óðîâíåé äîñòóïà íà
|
||||
çíà÷åíèÿ ïî-óìîë÷àíèþ (ïðîïèñàíûå â HELP ACCESS LEVELS).
|
||||
|
||||
×òîáû ïîñìîòðåòü ñïèñîê ôóíêöèé, íà êîòîðûå ìîæíî îïðåäåëÿòü óðîâíè
|
||||
äîñòóïà, ñì. ñïðàâî÷íóþ èíôîðìàöèþ ïî HELP LEVELS DESC.
|
||||
For a list of the features and functions whose levels can be
|
||||
set, see HELP LEVELS DESC.
|
||||
|
||||
CHAN_HELP_LEVELS_DESC
|
||||
Íèæå ïðåäñòàâëåí ñïèñîê âñåõ äîñòóïíûõ êîìàíä/ôóíêöèé è èõ îïèñàíèå.
|
||||
@@ -4945,10 +5011,10 @@ CHAN_HELP_INVITE
|
||||
ëèöàìè ñ óðîâíåì äîñòóïà 5 è âûøå.
|
||||
|
||||
CHAN_HELP_UNBAN
|
||||
Ñèíòàêñèñ: UNBAN #êàíàë
|
||||
Ñèíòàêñèñ: UNBAN #êàíàë [nick]
|
||||
|
||||
Ïîñûëàåò %S çàïðîñ íà óäàëåíèå ñ óêàçàííîãî êàíàëà âñåõ áàíîâ,
|
||||
êîòîðûå íå ïîçâîëÿþò âàì íà íåãî (êàíàë) çàéòè.
|
||||
Remove all bans preventing a user from entering a channel
|
||||
user from entering the given channel.
|
||||
|
||||
Ïî-óìîë÷àíèþ, äàííàÿ êîìàíäà ìîæåò áûòü èñïîëüçîâàíà AOP'àìè
|
||||
èëè ëèöàìè ñ óðîâíåì äîñòóïà 5 è âûøå.
|
||||
@@ -5007,34 +5073,11 @@ CHAN_HELP_GETKEY
|
||||
|
||||
Ïîçâîëÿåò çàïðîñèòü ó ñåðâèñîâ êëþ÷-ïàðîëü êàíàëà.
|
||||
|
||||
CHAN_HELP_SENDPASS
|
||||
Ñèíòàêñèñ: SENDPASS #êàíàë
|
||||
|
||||
Îòïðàâëÿåò ïàðîëü îò êàíàëà íà email-àäðåñ åãî ðåàëüíîãî âëàäåëüöà,
|
||||
ïðîïèñàííîãî â ãðàôå Founder (âëàäåëåö).
|
||||
|
||||
Ïðèìå÷àíèå: â çàâèñèìîñòè îò íàñòðîåê ñåòè, äîñòóï ê äàííîé êîìàíäå
|
||||
ìîæåò áûòü îãðàíè÷åí äî IRC-îïåðàòîðîâ.
|
||||
|
||||
CHAN_SERVADMIN_HELP
|
||||
|
||||
Àäìèíèñòðàòîðû ñåðâèñîâ ìîãóò óäàëèòü ëþáîé êàíàë áåç èäåíòèôèêàöèè
|
||||
ê íåìó â êà÷åñòâå âëàäåëüöà, ìîãóò ïðîñìàòðèâàòü ñïèñêè äîñòóïà
|
||||
êàíàëîâ, à òàê æå, ñïèñêè àêèêîâ è óñòàíîâêè óðîâíåé äîñòóïà êàíàëîâ.
|
||||
|
||||
CHAN_SERVADMIN_HELP_LOGOUT
|
||||
Ñèíòàêñèñ: LOGOUT #êàíàë [íèê]
|
||||
|
||||
Äåèäåíòèôèöèðóåò óêàçàííûé íèê îò êàíàëà, ñíèìàÿ òåì ñàìûì ñ íåãî
|
||||
ñòàòóñ âëàäåëüöà. Åñëè âû ðåàëüíûé âëàäåëåö êàíàëà, âû ìîæåòå
|
||||
äåèäåíòèôèöèðîâàòü ëþáîãî, â ïðîòèâíîì ñëó÷àå - òîëüêî ñåáÿ.
|
||||
Ïðèìå÷àíèå: äåèäåíòèôèöèðóþòñÿ òîëüêî òå ïîëüçîâàòåëè, êîòîðûå
|
||||
èäåíòèôèöèðîâàëèñü ê êàíàëó ïîñðåäñòâîì êîìàíäû IDENTIFY.
|
||||
|
||||
Êàê Àäìèíèñòðàòîð ñåðâèñîâ, âû ìîæåòå äåèäåíòèôèöèðîâàòü ëþáîãî
|
||||
ïîëüçîâàòåëÿ îò ëþáîãî êàíàëà, áåç êàêîé-ëèáî äîïîëíèòåëüíîé
|
||||
èäåíòèôèêàöèè ê êàíàëó. Åñëè âû íå óêàæåòå íèê, òî äåèäåíòèôèöðîâàíû
|
||||
áóäóò âñå ïîëüçîâàòåëè êàíàëà.
|
||||
|
||||
CHAN_SERVADMIN_HELP_DROP
|
||||
Ñèíòàêñèñ: DROP #êàíàë
|
||||
@@ -5061,8 +5104,8 @@ CHAN_SERVADMIN_HELP_SET_NOEXPIRE
|
||||
|
||||
CHAN_SERVADMIN_HELP_INFO
|
||||
|
||||
Àäìèíèñòðàòîðû ñåðâèñîâ ìîãóò èñïîëüçîâàòü ïàðàìåòð ALL
|
||||
îòíîñèòåëüíî ëþáîãî êàíàëà ñåòè.
|
||||
Services Operators with the chanserv/auspex permission can
|
||||
use the ALL parameter with any channel.
|
||||
|
||||
CHAN_SERVADMIN_HELP_LIST
|
||||
Ñèíòàêñèñ: LIST ìàñêà [FORBIDDEN] [SUSPENDED] [NOEXPIRE]
|
||||
@@ -6553,3 +6596,16 @@ OPER_UMODE_UNSUPPORTED
|
||||
|
||||
OPER_SUPER_ADMIN_NOT_ENABLED
|
||||
Äèðåêòèâà SuperAdmin îòêëþ÷åíà â êîíôèãóðàöèîííîì ôàéëå ñåðâèñîâ.
|
||||
|
||||
OPER_HELP_SYNC
|
||||
Syntax: SQLSYNC
|
||||
|
||||
This command syncs your databases with SQL. You should
|
||||
only have to execute this command once, when you initially
|
||||
import your databases into SQL.
|
||||
OPER_HELP_CMD_SQLSYNC
|
||||
SQLSYNC Import your databases to SQL
|
||||
OPER_SYNC_UPDATING
|
||||
Updating MySQL.
|
||||
OPER_SYNC_UPDATED
|
||||
Finished updating MySQL.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Turkish language file.
|
||||
#
|
||||
# (C) 2003-2008 Anope Team
|
||||
# (C) 2003-2010 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Please read COPYING and README for furhter details.
|
||||
@@ -879,6 +879,24 @@ NICK_SENDPASS_LINE_5
|
||||
NICK_SENDPASS_OK
|
||||
%s nickinin þifresi gönderildi.
|
||||
|
||||
# RESETPASS responses
|
||||
NICK_RESETPASS_SYNTAX
|
||||
RESETPASS nickname
|
||||
NICK_RESETPASS_SUBJECT
|
||||
Reset password request for %s
|
||||
NICK_RESETPASS_MESSAGE
|
||||
Hi,
|
||||
|
||||
You have requested to have the password for %s reset.
|
||||
To reset your password, type %R%s CONFIRM %s
|
||||
If you don't know why this mail is sent to you, please ignore it silently.
|
||||
|
||||
PLEASE DON'T ANSWER TO THIS MAIL!
|
||||
|
||||
%s administrators.
|
||||
NICK_RESETPASS_COMPLETE
|
||||
Password reset email for %s has been sent.
|
||||
|
||||
# FORBID responses
|
||||
NICK_SUSPEND_SYNTAX
|
||||
SUSPEND nickname reason
|
||||
@@ -922,10 +940,6 @@ NICK_IS_PREREG
|
||||
This nick is awaiting an e-mail verification code before completing registration.
|
||||
NICK_ENTER_REG_CODE
|
||||
A passcode has been sent to %s, please type %R%s confirm <passcode> to complete registration
|
||||
NICK_CONFIRM_NOT_FOUND
|
||||
Registration step 1 may have expired, please use "%R%s register <password> <email>" first.
|
||||
NICK_CONFIRM_INVALID
|
||||
Invalid passcode has been entered, please check the e-mail again, and retry
|
||||
NICK_REG_MAIL_SUBJECT
|
||||
Nickname Registration (%s)
|
||||
NICK_REG_MAIL_HEAD
|
||||
@@ -945,6 +959,15 @@ NICK_GETPASS_PASSCODE_IS
|
||||
NICK_FORCE_REG
|
||||
Nickname %s confirmed
|
||||
|
||||
NICK_CONFIRM_NOT_FOUND
|
||||
Registration step 1 may have expired, please use "%R%s register <password> <email>" first.
|
||||
NICK_CONFIRM_INVALID
|
||||
Invalid passcode has been entered, please check the e-mail again, and retry
|
||||
NICK_CONFIRM_EXPIRED
|
||||
Your password reset request has expired.
|
||||
NICK_CONFIRM_SUCCESS
|
||||
You are now identified for your nick. Change your password using "%R%s SET PASSWORD newpassword" now.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
# ChanServ messages
|
||||
@@ -1024,6 +1047,12 @@ CHAN_LEVEL_TOPIC
|
||||
TOPIC komutunu kullanmaya yetkili
|
||||
CHAN_LEVEL_INFO
|
||||
INFO komutunu ALL seçenegiyle kullanmaya yetkili
|
||||
CHAN_LEVEL_AUTOOWNER
|
||||
Automatic mode +q
|
||||
CHAN_LEVEL_OWNER
|
||||
Allowed to use OWNER command
|
||||
CHAN_LEVEL_OWNERME
|
||||
Allowed to (de)owner him/herself
|
||||
|
||||
# Automatic responses
|
||||
CHAN_IS_REGISTERED
|
||||
@@ -1041,7 +1070,7 @@ CHAN_X_INVALID
|
||||
|
||||
# REGISTER responses
|
||||
CHAN_REGISTER_SYNTAX
|
||||
REGISTER kanaladý þifre açýklama
|
||||
REGISTER kanaladý açýklama
|
||||
CHAN_REGISTER_DISABLED
|
||||
Kanal kaydý geçici olarak devre dýþýdýr.
|
||||
CHAN_REGISTER_NOT_LOCAL
|
||||
@@ -1060,36 +1089,11 @@ CHAN_REGISTRATION_FAILED
|
||||
Kanal kaydý baþarýsýz.
|
||||
CHAN_REGISTERED
|
||||
%s kanalý bu nicke kayýt edildi: %s
|
||||
CHAN_PASSWORD_IS
|
||||
Kanal þifreniz %s - ilerde kullanacaðýnýz için unutmayýnýz ve kimseye söylemeyiniz.
|
||||
CHAN_REGISTER_NONE_CHANNEL
|
||||
You have attempted to register a nonexistent channel %s
|
||||
CHAN_SYMBOL_REQUIRED
|
||||
Please use the symbol of # when attempting to register
|
||||
|
||||
|
||||
# IDENTIFY responses
|
||||
CHAN_IDENTIFY_SYNTAX
|
||||
IDENTIFY kanaladý þifreniz
|
||||
CHAN_IDENTIFY_FAILED
|
||||
Geçersiz þifre.
|
||||
CHAN_IDENTIFY_SUCCEEDED
|
||||
Þifre kabul edildi - %s kanalýnda founder seviyesinde eriþim kazandýnýz.
|
||||
|
||||
# LOGOUT responses
|
||||
CHAN_LOGOUT_SYNTAX
|
||||
LOGOUT kanaladý nick
|
||||
CHAN_LOGOUT_SERVADMIN_SYNTAX
|
||||
LOGOUT kanaladý [nick]
|
||||
CHAN_LOGOUT_SUCCEEDED
|
||||
Kullanýcý %s artýk %s kanalý tarafýndan tanýnmýyor.
|
||||
CHAN_LOGOUT_ALL_SUCCEEDED
|
||||
Tüm tanýmlý kullanýcýlar artýk %s kanalý tarafýndan tanýnmýyor (Except the channel founder).
|
||||
CHAN_LOGOUT_FOUNDER_FAILED
|
||||
You may not log out of %s (you are founder).
|
||||
CHAN_LOGOUT_NOT_LOGGEDIN
|
||||
%s was not logged into %s.
|
||||
|
||||
# DROP responses
|
||||
CHAN_DROP_SYNTAX
|
||||
DROP kanaladý
|
||||
@@ -1120,14 +1124,6 @@ CHAN_SUCCESSOR_UNSET
|
||||
CHAN_SUCCESSOR_IS_FOUNDER
|
||||
%s %s kanalýnda successor olamaz çünkü zaten o kanalýn founderý.
|
||||
|
||||
# SET PASSWORD responses
|
||||
CHAN_SET_PASSWORD_FAILED
|
||||
Þifre deðiþimi baþarýsýz.
|
||||
CHAN_PASSWORD_CHANGED
|
||||
%s kanalýnýn þifresi deðiþtirildi.
|
||||
CHAN_PASSWORD_CHANGED_TO
|
||||
%s kanalýnýn þifresi %s olarak deðiþtirildi.
|
||||
|
||||
# SET DESC responses
|
||||
CHAN_DESC_CHANGED
|
||||
%s kanalýnýn açýklamasý %s olarak deðiþtirildi.
|
||||
@@ -1259,6 +1255,14 @@ CHAN_SET_XOP_ON
|
||||
CHAN_SET_XOP_OFF
|
||||
xOP lists system for %s is now OFF.
|
||||
|
||||
# SET PERSISTANT responces
|
||||
CHAN_SET_PERSIST_SYNTAX
|
||||
SET channel PERSIST {ON | OFF}
|
||||
CHAN_SET_PERSIST_ON
|
||||
Channel %s is now persistant.
|
||||
CHAN_SET_PERSIST_OFF
|
||||
Channel %s is no longer persistant.
|
||||
|
||||
# SET NOEXPIRE responses
|
||||
CHAN_SET_NOEXPIRE_SYNTAX
|
||||
SET kanaladý NOEXPIRE {ON | OFF}
|
||||
@@ -1278,6 +1282,37 @@ CHAN_XOP_ACCESS
|
||||
CHAN_XOP_NOT_AVAILABLE
|
||||
xOP system is not available.
|
||||
|
||||
# QOP messages
|
||||
CHAN_QOP_SYNTAX
|
||||
QOP channel {ADD|DEL|LIST|CLEAR} [nick | entry-list]
|
||||
CHAN_QOP_DISABLED
|
||||
Sorry, channel QOP list modification is temporarily disabled.
|
||||
CHAN_QOP_NICKS_ONLY
|
||||
Channel QOP lists may only contain registered nicknames.
|
||||
CHAN_QOP_ADDED
|
||||
%s added to %s QOP list.
|
||||
CHAN_QOP_MOVED
|
||||
%s moved to %s QOP list.
|
||||
CHAN_QOP_NO_SUCH_ENTRY
|
||||
No such entry (#%d) on %s QOP list.
|
||||
CHAN_QOP_NOT_FOUND
|
||||
%s not found on %s QOP list.
|
||||
CHAN_QOP_NO_MATCH
|
||||
No matching entries on %s QOP list.
|
||||
CHAN_QOP_DELETED
|
||||
%s deleted from %s QOP list.
|
||||
CHAN_QOP_DELETED_ONE
|
||||
Deleted 1 entry from %s QOP list.
|
||||
CHAN_QOP_DELETED_SEVERAL
|
||||
Deleted %d entries from %s QOP list.
|
||||
CHAN_QOP_LIST_EMPTY
|
||||
%s QOP list is empty.
|
||||
CHAN_QOP_LIST_HEADER
|
||||
QOP list for %s:
|
||||
Num Nick
|
||||
CHAN_QOP_CLEAR
|
||||
Channel %s QOP list has been cleared.
|
||||
|
||||
# AOP messages
|
||||
CHAN_AOP_SYNTAX
|
||||
AOP kanal {ADD|DEL|LIST|CLEAR} [nick | liste-no]
|
||||
@@ -1404,7 +1439,7 @@ CHAN_VOP_CLEAR
|
||||
|
||||
# ACCESS messages
|
||||
CHAN_ACCESS_SYNTAX
|
||||
ACCESS kanaladý {ADD|DEL|LIST|CLEAR} [nick [seviye] | kayýt-listesi]
|
||||
ACCESS kanaladý {ADD|DEL|LIST|VIEW|CLEAR} [nick [seviye] | kayýt-listesi]
|
||||
CHAN_ACCESS_XOP
|
||||
Bu komutu kullanamazsiniz.
|
||||
Yerine AOP, SOP veya VOP komutlarini kullanin.
|
||||
@@ -1454,6 +1489,12 @@ CHAN_ACCESS_LIST_AXS_FORMAT
|
||||
%3d %4d %s
|
||||
CHAN_ACCESS_CLEAR
|
||||
Kanal %s access listesi temizlendi.
|
||||
CHAN_ACCESS_VIEW_XOP_FORMAT
|
||||
%3d %s %s
|
||||
by %s, last seen %s
|
||||
CHAN_ACCESS_VIEW_AXS_FORMAT
|
||||
%3d %4d %s
|
||||
by %s, last seen %s
|
||||
|
||||
# AKICK responses
|
||||
CHAN_AKICK_SYNTAX
|
||||
@@ -1508,6 +1549,8 @@ CHAN_LEVELS_RANGE
|
||||
Level %d ile %d arasýnda olmalýdýr.
|
||||
CHAN_LEVELS_CHANGED
|
||||
%s için level %s kanalýnda %d olarak deðiþtirildi.
|
||||
CHAN_LEVELS_CHANGED_FOUNDER
|
||||
Level for %s on channel %s changed to founder only.
|
||||
CHAN_LEVELS_UNKNOWN
|
||||
Varolmayan ayar: %s. Geçerli ayar listesi için %R%s HELP LEVELS DESC yazýnýz.
|
||||
CHAN_LEVELS_DISABLED
|
||||
@@ -1590,6 +1633,8 @@ CHAN_INFO_OPT_TOPICLOCK
|
||||
Topic kilidi
|
||||
CHAN_INFO_OPT_XOP
|
||||
xOP sistemi
|
||||
CHAN_INFO_OPT_PERSIST
|
||||
Persistant
|
||||
CHAN_INFO_OPT_NONE
|
||||
YOK
|
||||
CHAN_INFO_MODE_LOCK
|
||||
@@ -1618,12 +1663,17 @@ CHAN_INVITE_ALREADY_IN
|
||||
You are already in %s!
|
||||
CHAN_INVITE_SUCCESS
|
||||
You have been invited to %s.
|
||||
CHAN_INVITE_OTHER_SUCCESS
|
||||
%s has been invited to %s.
|
||||
|
||||
|
||||
# UNBAN responses
|
||||
CHAN_UNBAN_SYNTAX
|
||||
UNBAN kanaladý
|
||||
UNBAN kanaladý [name]
|
||||
CHAN_UNBANNED
|
||||
%s kanalýndaki banýnýz kaldýrýldý.
|
||||
CHAN_UNBANNED_OTHER
|
||||
%s has been unbanned from %s.
|
||||
|
||||
# TOPIC responses
|
||||
CHAN_TOPIC_SYNTAX
|
||||
@@ -1649,15 +1699,7 @@ CHAN_CLEARED_USERS
|
||||
CHAN_CLEARED_INVITES
|
||||
All invites on channel %s have been removed.
|
||||
|
||||
# GETPASS responses
|
||||
CHAN_GETPASS_SYNTAX
|
||||
GETPASS kanaladý
|
||||
CHAN_GETPASS_UNAVAILABLE
|
||||
GETPASS komutu devre dýþý çünkü þifreleme(encryption) devrede.
|
||||
CHAN_GETPASS_PASSWORD_IS
|
||||
%s kanalýnýn þifresi %s.
|
||||
|
||||
# SENDPASS responses
|
||||
# GETKEY responses
|
||||
CHAN_GETKEY_SYNTAX
|
||||
GETKEY channel
|
||||
CHAN_GETKEY_NOKEY
|
||||
@@ -1665,28 +1707,6 @@ CHAN_GETKEY_NOKEY
|
||||
CHAN_GETKEY_KEY
|
||||
Key for channel %s is %s.
|
||||
|
||||
# SENDPASS responses
|
||||
CHAN_SENDPASS_SYNTAX
|
||||
SENDPASS kanaladý
|
||||
CHAN_SENDPASS_UNAVAILABLE
|
||||
SENDPASS komutu devre dýþý çünkü þifreleme(encryption) devrede.
|
||||
CHAN_SENDPASS_SUBJECT
|
||||
Kanal þifresi (%s)
|
||||
CHAN_SENDPASS_HEAD
|
||||
Selam,
|
||||
CHAN_SENDPASS_LINE_1
|
||||
%s kanalýnýzýn þifresinin e-mail adresinize gönderilmesini istemiþsiniz.
|
||||
CHAN_SENDPASS_LINE_2
|
||||
Kanal Þifresi %s. Güvenlik nedenlerinden dolayý, þifrenizi bu maili aldýktan sonra deðiþtirirseniz iyi olur.
|
||||
CHAN_SENDPASS_LINE_3
|
||||
Eðer bu mailin niye size gönderildiðini bilmiyorsanýz, lütfen ciddiye almayýn.
|
||||
CHAN_SENDPASS_LINE_4
|
||||
LÜTFEN BU MAÝLE CEVAP VERMEYÝN!
|
||||
CHAN_SENDPASS_LINE_5
|
||||
%s yönetimi.
|
||||
CHAN_SENDPASS_OK
|
||||
%s kanalýnýn þifresi gönderildi.
|
||||
|
||||
# FORBID responses
|
||||
CHAN_FORBID_SYNTAX
|
||||
FORBID kanaladý [sebep]
|
||||
@@ -2159,6 +2179,8 @@ BOT_UNASSIGN_SYNTAX
|
||||
UNASSIGN kanaladý
|
||||
BOT_UNASSIGN_UNASSIGNED
|
||||
%s kanalýndan bot çýkarýldý.
|
||||
BOT_UNASSIGN_PERSISTANT_CHAN
|
||||
You can not unassign bots while persist is set on the channel.
|
||||
|
||||
# INFO responses
|
||||
BOT_INFO_SYNTAX
|
||||
@@ -2982,8 +3004,6 @@ OPER_DEFCON_SYNTAX
|
||||
DEFCON [1|2|3|4|5]
|
||||
OPER_DEFCON_DENIED
|
||||
This service is temporarly disabled, please try again later
|
||||
OPER_DEFCON_NO_CONF
|
||||
The Defcon system must be enabled in the services.conf file
|
||||
OPER_DEFCON_CHANGED
|
||||
Services are now at DEFCON %d
|
||||
OPER_DEFCON_WALL
|
||||
@@ -3003,6 +3023,10 @@ OPER_MODULE_REMOVE_FAIL
|
||||
Unable to remove module %s
|
||||
OPER_MODULE_NO_UNLOAD
|
||||
This module can not be unloaded.
|
||||
OPER_MODULE_ALREADY_LOADED
|
||||
Module %s is already loaded.
|
||||
OPER_MODULE_ISNT_LOADED
|
||||
Module %s isn't loaded.
|
||||
OPER_MODULE_LOAD_SYNTAX
|
||||
MODLOAD FileName
|
||||
OPER_MODULE_UNLOAD_SYNTAX
|
||||
@@ -3988,6 +4012,12 @@ NICK_HELP_SENDPASS
|
||||
|
||||
Bazý networklerde sadece IRC operatörleri kullanabilir.
|
||||
|
||||
NICK_HELP_RESETPASS
|
||||
Syntax: RESETPASS nickname
|
||||
|
||||
Sends a code key to the nickname with instructions on how to
|
||||
reset their password.
|
||||
|
||||
NICK_HELP_CONFIRM
|
||||
Syntax: CONFIRM passcode
|
||||
|
||||
@@ -3997,6 +4027,14 @@ NICK_HELP_CONFIRM
|
||||
is sent to your e-mail address in the first step of the
|
||||
registration process. For more information about the first
|
||||
stage of the registration process, type: %R%S HELP REGISTER
|
||||
|
||||
This is also used after the RESETPASS command has been used to
|
||||
force identify you to your nick so you may change your password.
|
||||
|
||||
NICK_HELP_CONFIRM_OPER
|
||||
|
||||
Additionally, Services Operators with the nickserv/confirm permission can
|
||||
replace passcode with a users nick to force validate them.
|
||||
|
||||
NICK_HELP_RESEND
|
||||
Syntax: RESEND
|
||||
@@ -4150,10 +4188,10 @@ CHAN_HELP_CMD_STATUS
|
||||
STATUS Kullanýcýnýn kanaldaki access seviyesini söyler
|
||||
CHAN_HELP_CMD_REGISTER
|
||||
REGISTER Kanalý kaydeder
|
||||
CHAN_HELP_CMD_IDENTIFY
|
||||
IDENTIFY Þifreyle sizi kanalýn sahibi olarak tanýmlar
|
||||
CHAN_HELP_CMD_SET
|
||||
SET Kanal özelliklerini ve bilgisini ayarlar
|
||||
CHAN_HELP_CMD_QOP
|
||||
QOP Modify the list of QOP users
|
||||
CHAN_HELP_CMD_AOP
|
||||
AOP AOP listesini düzenler
|
||||
CHAN_HELP_CMD_SOP
|
||||
@@ -4166,8 +4204,6 @@ CHAN_HELP_CMD_AKICK
|
||||
AKICK Autokick listesini düzenler
|
||||
CHAN_HELP_CMD_DROP
|
||||
DROP Kanal kaydýný siler
|
||||
CHAN_HELP_CMD_SENDPASS
|
||||
SENDPASS Kayýp þifrelerinizi söyler
|
||||
CHAN_HELP_CMD_BAN
|
||||
BAN Bans a selected nick on a channel
|
||||
CHAN_HELP_CMD_CLEAR
|
||||
@@ -4184,14 +4220,12 @@ CHAN_HELP_CMD_KICK
|
||||
KICK Kicks a selected nick from a channel
|
||||
CHAN_HELP_CMD_LIST
|
||||
LIST Lists all registered channels matching the given pattern
|
||||
CHAN_HELP_CMD_LOGOUT
|
||||
LOGOUT This command will logout the selected nickname
|
||||
CHAN_HELP_CMD_OP
|
||||
OP Gives Op status to a selected nick on a channel
|
||||
CHAN_HELP_CMD_TOPIC
|
||||
TOPIC Manipulate the topic of the specified channel
|
||||
CHAN_HELP_CMD_UNBAN
|
||||
UNBAN Remove all bans preventing you from entering a channel
|
||||
UNBAN Remove all bans preventing a user from entering a channel
|
||||
CHAN_HELP_CMD_VOICE
|
||||
VOICE Voices a selected nick on a channel
|
||||
CHAN_HELP_CMD_VOP
|
||||
@@ -4210,10 +4244,6 @@ CHAN_HELP_CMD_OWNER
|
||||
OWNER Gives you owner status on channel
|
||||
CHAN_HELP_CMD_PROTECT
|
||||
PROTECT Protects a selected nick on a channel
|
||||
CHAN_HELP_CMD_ADMIN
|
||||
ADMIN Protects a selected nick on a channel
|
||||
CHAN_HELP_CMD_DEADMIN
|
||||
DEADMIN Deprotects a selected nick on a channel
|
||||
CHAN_HELP_CMD_DEOP
|
||||
DEOP Deops a selected nick on a channel
|
||||
|
||||
@@ -4234,49 +4264,31 @@ CHAN_HELP_EXPIRES
|
||||
kanala girmezse ) kaydý silinir.
|
||||
|
||||
CHAN_HELP_REGISTER
|
||||
Kullanýmý: REGISTER kanaladý þifre açýklama
|
||||
Kullanýmý: REGISTER kanaladý açýklama
|
||||
|
||||
%S veritabanýna belirtilen kanalý ekler yani kaydeder.
|
||||
Bu komutu kullanabilmek için kayýt etmek istediðiniz kanal
|
||||
önceden kayýtlý olmamalý ve kanalda op olmalýsýnýz. Þifre
|
||||
kanal özelliklerinde deðiþiklikler yapmanýz için ilerde
|
||||
lazým olacaktýr. Son parametre kanalýn genel bir tanýmýdýr
|
||||
ve mutlaka belirtilmelidir.
|
||||
|
||||
Kanalý kayýt ettiðiniz zaman, kanalýn "founder" 'ý olursunuz.
|
||||
Kanal founderý kanalýn tüm özelliklerini deðiþtirme yetkisine
|
||||
sahip olan kiþidir; %S kanala girdiðiniz zaman size
|
||||
otomatik kanal opu hakkýný verecektir. Kanal opu hakkýný
|
||||
baþkalarýnada vermek için gerekli bilgiyi ACCESS komutunun
|
||||
yardýmýna bakarak alabilirsiniz (%R%S HELP ACCESS).
|
||||
|
||||
NOT: Bir kanalý kaydedebilmek için, önce nickinizi kaydetmelisiniz.
|
||||
Eðer kaydetmediyseniz %R%s HELP yazarak nasýl yapacaðýnýz
|
||||
hakkýnda bilgi alabilirsiniz.
|
||||
Registers a channel in the %S database. In order
|
||||
to use this command, you must first be a channel operator
|
||||
on the channel you're trying to register.
|
||||
The description, which must be included, is a
|
||||
general description of the channel's purpose.
|
||||
|
||||
CHAN_HELP_IDENTIFY
|
||||
Kullanýmý: IDENTIFY kanaladý þifre
|
||||
|
||||
%S tarafýndan kanalýn founderý olarak tanýnmanýzý saðlar.
|
||||
Birçok komutu kullanabilmek için kendinizi kanalýn sahibi
|
||||
(founder) olarak bu komutu kullanarak tanýtmanýz gerekir.
|
||||
Þifre kanalý kaydederken kullandýðýnýz þifreyle aynýdýr.
|
||||
When you register a channel, you are recorded as the
|
||||
"founder" of the channel. The channel founder is allowed
|
||||
to change all of the channel settings for the channel;
|
||||
%S will also automatically give the founder
|
||||
channel-operator privileges when s/he enters the channel.
|
||||
See the ACCESS command (%R%S HELP ACCESS) for
|
||||
information on giving a subset of these privileges to
|
||||
other channel users.
|
||||
|
||||
CHAN_HELP_LOGOUT
|
||||
Kullanýmý: LOGOUT kanaladý nick
|
||||
|
||||
Bu komut belirtilen nickin artýk belirtilen kanal için
|
||||
tanýmlanmamasýný saðlar.
|
||||
|
||||
Eðer kanalýn founderý iseniz istediðiniz kiþi üzerinde,
|
||||
deðilseniz kendi üzerinizde bu komutu kullanabilirsiniz.
|
||||
NOTICE: In order to register a channel, you must have
|
||||
first registered your nickname. If you haven't,
|
||||
%R%s HELP for information on how to do so.
|
||||
|
||||
CHAN_HELP_DROP
|
||||
Kullanýmý: DROP kanaladý
|
||||
|
||||
Kanalýn kaydýný siler. Sadece kanal founderý tarafýndan
|
||||
kullanýlabilir ve o kiþinin önce IDENTIFY komutunu kullanarak
|
||||
kanalýn sahibi olduðunu belirtmesi gerekir.
|
||||
Kanalýn kaydýný siler.
|
||||
|
||||
CHAN_HELP_SET
|
||||
Kullanýmý: SET kanaladý özellik parametre
|
||||
@@ -4288,7 +4300,6 @@ CHAN_HELP_SET
|
||||
|
||||
FOUNDER Kanal founderýný belirler
|
||||
SUCCESSOR Kanal successorýný belirler
|
||||
PASSWORD Founder þifresini belirler
|
||||
DESC Kanal açýklamasýný belirler
|
||||
URL Kanala bir URL adresini iliþkilendirir
|
||||
EMAIL Kanala bir E-mail adresini iliþkilendirir
|
||||
@@ -4307,6 +4318,7 @@ CHAN_HELP_SET
|
||||
OPNOTICE OP/DEOP komutlarý kullanýldýðýnda mesaj yollar
|
||||
PEACE kritik komutlarin kullanilmasini engeller
|
||||
XOP Ayricalik sistemleri arasinda geçisi saglar
|
||||
PERSIST Set the channel as permanent
|
||||
|
||||
|
||||
Belirli bir özellik hakkýnda daha fazla bilgi için
|
||||
@@ -4329,11 +4341,6 @@ CHAN_HELP_SET_SUCCESSOR
|
||||
için bir successor belirtilmemiþse kanalýn kaydý silinir(drop).
|
||||
Komutta belirtilen nickin kayýtlý olmasý gereklidir.
|
||||
|
||||
CHAN_HELP_SET_PASSWORD
|
||||
Kullanýmý: SET kanaladý PASSWORD þifre
|
||||
|
||||
Kanal founderýnýn þifresini deðiþtirir.
|
||||
|
||||
CHAN_HELP_SET_DESC
|
||||
Kullanýmý: SET kanaladý DESC açýklama
|
||||
|
||||
@@ -4506,6 +4513,29 @@ CHAN_HELP_SET_XOP
|
||||
Bunlarin disinda xOP sisteminden access sistemine geçmek
|
||||
bir problem çikarmaz.
|
||||
|
||||
CHAN_HELP_SET_PERSIST
|
||||
Syntax: SET channel PERSIST {ON | OFF}
|
||||
|
||||
Enables or disables the persistant channel setting.
|
||||
When persistant is set, the service bot will remain
|
||||
in the channel when it has emptied of users.
|
||||
|
||||
If your IRCd does not a permanent (persistant) channel
|
||||
mode you must have a service bot in your channel to
|
||||
set persist on, and it can not be unassigned while persist
|
||||
is on.
|
||||
|
||||
If this network does not have BotServ enabled and does
|
||||
not have a permanent channel mode, ChanServ will
|
||||
join your channel when you set persist on (and leave when
|
||||
it has been set off).
|
||||
|
||||
If your IRCd has a permanent (persistant) channel mode
|
||||
and is is set or unset (for any reason, including MLOCK),
|
||||
persist is automatically set and unset for the channel aswell.
|
||||
Additionally, services will set or unset this mode when you
|
||||
set persist on or off.
|
||||
|
||||
CHAN_HELP_SET_OPNOTICE
|
||||
Kullanýmý: SET kanaladý OPNOTICE {ON | OFF}
|
||||
|
||||
@@ -4514,6 +4544,45 @@ CHAN_HELP_SET_OPNOTICE
|
||||
üzerinde OP veya DEOP komutlarýnýn kullanýldýðýný
|
||||
belirten bir mesaj gönderir.
|
||||
|
||||
CHAN_HELP_QOP
|
||||
Syntax: QOP channel ADD nick
|
||||
QOP channel DEL {nick | entry-num | list}
|
||||
QOP channel LIST [mask | list]
|
||||
QOP channel CLEAR
|
||||
|
||||
Maintains the QOP (AutoOwner) list for a channel. The QOP
|
||||
list gives users the right to be auto-owner on your channel,
|
||||
which gives them almost (or potentially, total) access.
|
||||
|
||||
The QOP ADD command adds the given nickname to the
|
||||
QOP list.
|
||||
|
||||
The QOP DEL command removes the given nick from the
|
||||
QOP list. If a list of entry numbers is given, those
|
||||
entries are deleted. (See the example for LIST below.)
|
||||
|
||||
The QOP LIST command displays the QOP list. If
|
||||
a wildcard mask is given, only those entries matching the
|
||||
mask are displayed. If a list of entry numbers is given,
|
||||
only those entries are shown; for example:
|
||||
|
||||
QOP #channel LIST 2-5,7-9
|
||||
Lists QOP entries numbered 2 through 5 and
|
||||
7 through 9.
|
||||
|
||||
The QOP CLEAR command clears all entries of the
|
||||
QOP list.
|
||||
|
||||
The QOP commands are limited to
|
||||
founders (unless SECUREOPS is off). However, any user on the
|
||||
QOP list may use the QOP LIST command.
|
||||
|
||||
This command may have been disabled for your channel, and
|
||||
in that case you need to use the access list. See
|
||||
%R%S HELP ACCESS for information about the access list,
|
||||
and %R%S HELP SET XOP to know how to toggle between
|
||||
the access list and xOP list systems.
|
||||
|
||||
CHAN_HELP_AOP
|
||||
Kullanýmý: AOP kanaladi ADD nick
|
||||
AOP kanaladi DEL {nick | kayit-no | liste}
|
||||
@@ -4662,6 +4731,7 @@ CHAN_HELP_ACCESS
|
||||
Kullanýmý: ACCESS kanaladý ADD nick seviye
|
||||
ACCESS kanaladý DEL {nick | kayýt-no | liste}
|
||||
ACCESS kanaladý LIST [mask | liste]
|
||||
ACCESS kanaladý VIEW [mask | liste]
|
||||
ACCESS kanaladý CLEAR
|
||||
|
||||
Bir kanal için access listesi oluþturur. Access listesi
|
||||
@@ -4690,7 +4760,10 @@ CHAN_HELP_ACCESS
|
||||
ACCESS #kanaladý LIST 2-5,7-9
|
||||
2'den 5'e ve 7'den 9'a kadar olan access kayýtlarý
|
||||
listelenir.
|
||||
|
||||
|
||||
The ACCESS VIEW command displays the access list similar
|
||||
to ACCESS LIST but shows the creator and last used time.
|
||||
|
||||
ACCESS CLEAR komutu tüm access listesini temizler.
|
||||
|
||||
CHAN_HELP_ACCESS_LEVELS
|
||||
@@ -4760,28 +4833,30 @@ CHAN_HELP_AKICK
|
||||
siler.
|
||||
|
||||
CHAN_HELP_LEVELS
|
||||
Kullanýmý: LEVELS kanaladý SET tip seviye
|
||||
Kullanýmý: LEVELS kanaladý SET tip [seviye|FOUNDER]
|
||||
LEVELS kanaladý {DIS | DISABLE} tip
|
||||
LEVELS kanaladý LIST
|
||||
LEVELS kanaladý RESET
|
||||
|
||||
LEVELS komutu bir kanaldaki access seviyelerinin iyi
|
||||
kontrolünü saðlar. Bu komutla, %S'ün birçok
|
||||
fonksiyonu için gereken access seviyelerini
|
||||
belirleyebilirsiniz. (SET FOUNDER ve SET PASSWORD
|
||||
komutlarý ve bu komut sadece kanal founderý tarafýndan
|
||||
kullanýlabilir.)
|
||||
The LEVELS command allows fine control over the meaning of
|
||||
the numeric access levels used for channels. With this
|
||||
command, you can define the access level required for most
|
||||
of %S's functions. (The SET FOUNDER and this command
|
||||
are always restricted to the channel founder.)
|
||||
|
||||
LEVELS SET komutu bir fonksiyon yada fonksiyon gruplarý için
|
||||
access seviyelerini deðiþtirmeye yarar. LEVELS DISABLE (veya
|
||||
kýsaca DIS) otomatik bir özelliði kapatýr yada founderdan
|
||||
baþkasýnýn kullanmasýný engeller. LEVELS LIST komutu
|
||||
fonksiyonlar yada fonksiyon gruplarý için mevcut seviyeleri
|
||||
gösterir. LEVELS RESET komutu seviyeleri varsayýlan deðerlerine
|
||||
geri çevirir. (HELP ACCESS LEVELS e bakýn).
|
||||
LEVELS SET allows the access level for a function or group of
|
||||
functions to be changed. LEVELS DISABLE (or DIS for short)
|
||||
disables an automatic feature or disallows access to a
|
||||
function by anyone, INCLUDING the founder (although, the founder
|
||||
can always reenable it).
|
||||
|
||||
Seviyeleri ayarlanabilecek fonksiyonlar için, HELP LEVELS DESC e
|
||||
bakýn.
|
||||
LEVELS LIST shows the current levels for each function or
|
||||
group of functions. LEVELS RESET resets the levels to the
|
||||
default levels of a newly-created channel (see
|
||||
HELP ACCESS LEVELS).
|
||||
|
||||
For a list of the features and functions whose levels can be
|
||||
set, see HELP LEVELS DESC.
|
||||
|
||||
CHAN_HELP_LEVELS_DESC
|
||||
Aþaðýda seviyeleri deðiþtirilebilecek fonksiyonlar listelidir.
|
||||
@@ -4908,10 +4983,10 @@ CHAN_HELP_INVITE
|
||||
üzeri olanlar kullanabilir.
|
||||
|
||||
CHAN_HELP_UNBAN
|
||||
Kullanýmý: UNBAN kanaladý
|
||||
Kullanýmý: UNBAN kanaladý [nick]
|
||||
|
||||
%S'e sizin kanala girmenizi engelleyen tüm banlarý kaldýrmasýný
|
||||
söyler.
|
||||
Tells %S to remove all bans preventing you or the given
|
||||
user from entering the given channel.
|
||||
|
||||
Varsayýlan olarak, AOP lar ile 5 ve üzeri access seviyesi olanlar
|
||||
kullanabilir.
|
||||
@@ -4971,35 +5046,11 @@ CHAN_HELP_GETKEY
|
||||
|
||||
Belirtilen kanalýn anahtarýný söyler.
|
||||
|
||||
CHAN_HELP_SENDPASS
|
||||
Kullanýmý: SENDPASS kanaladý
|
||||
|
||||
Kanalýn þifresini founderýn nick kayýtlarýnda belirtilen
|
||||
e-mail adresine gönderir. Bu komut kanal þifresini
|
||||
unutanlarýn çok iþine yarayacaktýr.
|
||||
|
||||
Bazý networklerde IRC operatörlerinin Kullanýmýyla
|
||||
sýnýrlandýrýlmýþ olabilir.
|
||||
|
||||
CHAN_SERVADMIN_HELP
|
||||
|
||||
Servis adminleri kanalýn kaydýný þifreyle tanýtmadan silebilir,
|
||||
ve access, Akick ve seviye ayarlarýný görüntüleyebilirler.
|
||||
|
||||
CHAN_SERVADMIN_HELP_LOGOUT
|
||||
Kullanýmý: LOGOUT kanaladý [nick]
|
||||
|
||||
Bu komut belirtilen nickin artýk belirtilen kanalda
|
||||
tanýmlanmamasýný saðlar.
|
||||
|
||||
Eðer kanal founderý iseniz, istediðiniz kiþide, deðilseniz
|
||||
sadece kendinizde bu komutu kullanabilirsiniz.
|
||||
|
||||
Eðer Servis admini iseniz, kanal founderý olmanýza gerek
|
||||
olmadan istediðiniz kiþide bu komutu kullanabilirsiniz.
|
||||
Hatta nick parametresini boþ býrakarak o kanalda kendini
|
||||
kanala tanýtmýþ herkesi tanýmlanmamýþ yapabilirsiniz.
|
||||
|
||||
CHAN_SERVADMIN_HELP_DROP
|
||||
Kullanýmý: DROP kanaladý
|
||||
|
||||
@@ -5024,8 +5075,8 @@ CHAN_SERVADMIN_HELP_SET_NOEXPIRE
|
||||
|
||||
CHAN_SERVADMIN_HELP_INFO
|
||||
|
||||
Servis adminleri herhangi bir kanal için ALL parametresini
|
||||
kullanabilirler.
|
||||
Services Operators with the chanserv/auspex permission can
|
||||
use the ALL parameter with any channel.
|
||||
|
||||
CHAN_SERVADMIN_HELP_LIST
|
||||
Kullanýmý: LIST model [FORBIDDEN] [NOEXPIRE]
|
||||
@@ -6409,3 +6460,15 @@ OPER_UMODE_UNSUPPORTED
|
||||
OPER_SUPER_ADMIN_NOT_ENABLED
|
||||
SuperAdmin setting not enabled in services.conf
|
||||
|
||||
OPER_HELP_SYNC
|
||||
Syntax: SQLSYNC
|
||||
|
||||
This command syncs your databases with SQL. You should
|
||||
only have to execute this command once, when you initially
|
||||
import your databases into SQL.
|
||||
OPER_HELP_CMD_SQLSYNC
|
||||
SQLSYNC Import your databases to SQL
|
||||
OPER_SYNC_UPDATING
|
||||
Updating MySQL.
|
||||
OPER_SYNC_UPDATED
|
||||
Finished updating MySQL.
|
||||
|
||||
@@ -92,7 +92,8 @@ my @msgfilters = (
|
||||
$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;
|
||||
$msg =~ s/std::basic_string\<char\, .*?irc_char_traits, std::allocator\<char\> \>(\s+|)/irc::string/g;
|
||||
$msg =~ s/std::basic_string\<char\, .*?ci_char_traits, std::allocator\<char\> \>(\s+|)/ci::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;
|
||||
@@ -103,6 +104,7 @@ my @msgfilters = (
|
||||
$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;
|
||||
$msg =~ s/__gnu_cxx::__normal_iterator\<char\*, ci::string\>/ci::string::iterator/g;
|
||||
return $msg;
|
||||
} ],
|
||||
);
|
||||
|
||||
+13
-6
@@ -2,10 +2,8 @@
|
||||
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)
|
||||
remove_item_from_list(SRC_SRCS win32_memory.cpp)
|
||||
endif(NOT MSVC)
|
||||
# Don't include win32_memory.cpp, it's only required by Visual Studio to override it's override of the new/delete operators
|
||||
remove_item_from_list(SRC_SRCS win32_memory.cpp)
|
||||
# If not using Windows, don't include windows.cpp, as it's Windows-specific
|
||||
if(NOT WIN32)
|
||||
remove_item_from_list(SRC_SRCS windows.cpp)
|
||||
@@ -54,12 +52,21 @@ if(WIN32)
|
||||
endif(MINGW)
|
||||
endif(WIN32)
|
||||
|
||||
# If compiling with Visual Studio, create a static library out of win32_memory.cpp to be included with everything else, needed to override it's override of new/delete operators
|
||||
if(MSVC)
|
||||
set_source_files_properties(win32_memory.cpp PROPERTIES LANGUAGE CXX COMPILE_FLAGS "${CXXFLAGS}")
|
||||
add_library(win32_memory STATIC win32_memory.cpp)
|
||||
set(WIN32_MEMORY win32_memory)
|
||||
else(MSVC)
|
||||
set(WIN32_MEMORY)
|
||||
endif(MSVC)
|
||||
|
||||
# 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
|
||||
# On Windows, also link Anope to the wsock32 and Ws2_32 library, as well as set the version
|
||||
if(WIN32)
|
||||
target_link_libraries(${PROGRAM_NAME} wsock32)
|
||||
target_link_libraries(${PROGRAM_NAME} wsock32 Ws2_32 ${WIN32_MEMORY})
|
||||
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
|
||||
|
||||
+11
-10
@@ -1,13 +1,13 @@
|
||||
OBJS = actions.o base64.o bots.o botserv.o channels.o chanserv.o command.o commands.o compat.o \
|
||||
config.o datafiles.o encrypt.o hashcomp.o hostserv.o init.o ircd.o language.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 protocol.o send.o servers.o sessions.o slist.o sockutil.o opertype.o users.o module.o modulemanager.o configreader.o \
|
||||
wildcard.o nickcore.o nickalias.o timers.o
|
||||
config.o encrypt.o hashcomp.o hostserv.o init.o ircd.o language.o log.o mail.o main.o \
|
||||
memory.o memoserv.o messages.o misc.o modules.o nickserv.o operserv.o \
|
||||
process.o protocol.o send.o servers.o sessions.o slist.o sockets.o opertype.o users.o module.o modulemanager.o configreader.o \
|
||||
wildcard.o nickcore.o nickalias.o timers.o modes.o regchannel.o
|
||||
|
||||
INCLUDES = ../include/commands.h ../include/defs.h ../include/language.h \
|
||||
../include/pseudo.h ../include/sysconf.h ../include/config.h \
|
||||
../include/messages.h ../include/services.h \
|
||||
../include/timers.h ../include/datafiles.h ../include/extern.h \
|
||||
../include/timers.h ../include/extern.h \
|
||||
../include/modules.h ../include/slist.h ../include/hashcomp.h
|
||||
|
||||
MAKEARGS = 'CFLAGS=${CFLAGS}' 'CC=${CC}' 'ANOPELIBS=${ANOPELIBS}' \
|
||||
@@ -16,7 +16,7 @@ MAKEARGS = 'CFLAGS=${CFLAGS}' 'CC=${CC}' 'ANOPELIBS=${ANOPELIBS}' \
|
||||
'TOUCH=${TOUCH}' 'SHELL=${SHELL}' \
|
||||
'RUNGROUP=${RUNGROUP}' \
|
||||
'SHARED=${SHARED}' 'MODULEFLAGS=${MODULEFLAGS}' \
|
||||
'MAKEBIN=${MAKEBIN}'
|
||||
'MAKEBIN=${MAKEBIN}' 'MYSQLDIR=${MYSQLDIR}'
|
||||
|
||||
.c.o:
|
||||
$(MAKEBIN) $(CC) $(CFLAGS) -I../include/ -c $<
|
||||
@@ -33,6 +33,7 @@ services: $(OBJS)
|
||||
$(MAKEBIN) $(CC) $(CFLAGS) $(OBJS) $(ANOPELIBS) $(MLIBS) -o $@ $(LDFLAGS)
|
||||
|
||||
$(OBJS): Makefile
|
||||
modes.o: modes.cpp $(INCLUDES)
|
||||
timers.o: timers.cpp $(INCLUDES)
|
||||
nickcore.o: nickcore.cpp $(INCLUDES)
|
||||
nickalias.o: nickalias.cpp $(INCLUDES)
|
||||
@@ -46,7 +47,6 @@ command.o: command.cpp $(INCLUDES)
|
||||
commands.o: commands.c $(INCLUDES)
|
||||
compat.o: compat.c $(INCLUDES)
|
||||
config.o: config.c $(INCLUDES)
|
||||
datafiles.o: datafiles.c $(INCLUDES)
|
||||
encrypt.o: encrypt.c $(INCLUDES)
|
||||
init.o: init.c $(INCLUDES)
|
||||
ircd.o: ircd.c $(INCLUDES)
|
||||
@@ -62,16 +62,16 @@ 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)
|
||||
operserv.o: operserv.c $(INCLUDES)
|
||||
process.o: process.c $(INCLUDES)
|
||||
protocol.o: protocol.cpp $(INCLUDES)
|
||||
regchannel.o: regchannel.cpp $(INCLUDES)
|
||||
send.o: send.c $(INCLUDES)
|
||||
servers.o: servers.c $(INCLUDES)
|
||||
sessions.o: sessions.c $(INCLUDES)
|
||||
slist.o: slist.c $(INCLUDES)
|
||||
sockutil.o: sockutil.c $(INCLUDES)
|
||||
sockets.o: sockets.cpp $(INCLUDES)
|
||||
opertype.o: opertype.cpp $(INCLUDES)
|
||||
users.o: users.c $(INCLUDES)
|
||||
vsnprintf.o: vsnprintf.c $(INCLUDES)
|
||||
@@ -116,7 +116,8 @@ install: services
|
||||
$(INSTALL) bin/anoperc $(INSTDIR)/bin/anoperc
|
||||
test -d ${INSTDIR}/data || mkdir ${INSTDIR}/data
|
||||
(cd ../lang ; $(MAKE) install)
|
||||
$(CP) ../data/* $(INSTDIR)/data
|
||||
$(CP) ../data/*.* $(INSTDIR)/data
|
||||
$(INSTALL) bin/mydbgen $(INSTDIR)/bin/mydbgen
|
||||
test -d $(INSTDIR)/data/backups || mkdir $(INSTDIR)/data/backups
|
||||
test -d $(INSTDIR)/data/logs || mkdir $(INSTDIR)/data/logs
|
||||
@if [ "$(INSTDIR)/data/modules" ] ; then \
|
||||
|
||||
+65
-120
@@ -1,6 +1,6 @@
|
||||
/* Various routines to perform simple actions.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2010 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -20,24 +20,26 @@
|
||||
* Note a bad password attempt for the given user. If they've used up
|
||||
* their limit, toss them off.
|
||||
* @param u the User to check
|
||||
* @return void
|
||||
* @return true if the user was killed, otherwise false
|
||||
*/
|
||||
void bad_password(User * u)
|
||||
bool bad_password(User *u)
|
||||
{
|
||||
time_t now = time(NULL);
|
||||
|
||||
if (!u || !BadPassLimit) {
|
||||
return;
|
||||
if (!u || !Config.BadPassLimit)
|
||||
return false;
|
||||
|
||||
if (Config.BadPassTimeout > 0 && u->invalid_pw_time > 0 && u->invalid_pw_time < now - Config.BadPassTimeout)
|
||||
u->invalid_pw_count = 0;
|
||||
++u->invalid_pw_count;
|
||||
u->invalid_pw_time = now;
|
||||
if (u->invalid_pw_count >= Config.BadPassLimit)
|
||||
{
|
||||
kill_user("", u->nick, "Too many invalid passwords");
|
||||
return true;
|
||||
}
|
||||
|
||||
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");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
@@ -49,27 +51,21 @@ 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(const std::string &source, const std::string &user, const std::string &reason)
|
||||
{
|
||||
char buf[BUFSIZE];
|
||||
|
||||
if (!user || !*user) {
|
||||
if (user.empty())
|
||||
return;
|
||||
}
|
||||
if (!source || !*source) {
|
||||
source = ServerName;
|
||||
}
|
||||
if (!reason) {
|
||||
reason = "";
|
||||
}
|
||||
|
||||
snprintf(buf, sizeof(buf), "%s (%s)", source, reason);
|
||||
std::string real_source = source.empty() ? Config.ServerName : source;
|
||||
|
||||
ircdproto->SendSVSKill(source, user, buf);
|
||||
snprintf(buf, sizeof(buf), "%s (%s)", source.c_str(), reason.c_str());
|
||||
|
||||
if (!ircd->quitonkill && finduser(user)) {
|
||||
ircdproto->SendSVSKill(findbot(source), finduser(user), buf);
|
||||
|
||||
if (!ircd->quitonkill && finduser(user))
|
||||
do_kill(user, buf);
|
||||
}
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
@@ -80,44 +76,42 @@ void kill_user(const char *source, const char *user, const char *reason)
|
||||
* @param reason for the sqline
|
||||
* @return void
|
||||
*/
|
||||
void sqline(char *mask, char *reason)
|
||||
void sqline(const std::string &mask, const std::string &reason)
|
||||
{
|
||||
int i;
|
||||
Channel *c, *next;
|
||||
const char *av[3];
|
||||
struct c_userlist *cu, *cunext;
|
||||
|
||||
if (ircd->chansqline) {
|
||||
if (*mask == '#') {
|
||||
if (ircd->chansqline)
|
||||
{
|
||||
if (mask[0] == '#')
|
||||
{
|
||||
ircdproto->SendSQLine(mask, reason);
|
||||
|
||||
for (i = 0; i < 1024; i++) {
|
||||
for (c = chanlist[i]; c; c = next) {
|
||||
for (i = 0; i < 1024; ++i)
|
||||
{
|
||||
for (c = chanlist[i]; c; c = next)
|
||||
{
|
||||
next = c->next;
|
||||
|
||||
if (!Anope::Match(c->name, mask, false)) {
|
||||
if (!Anope::Match(c->name, mask, false))
|
||||
continue;
|
||||
}
|
||||
for (cu = c->users; cu; cu = cunext) {
|
||||
cunext = cu->next;
|
||||
if (is_oper(cu->user)) {
|
||||
for (CUserList::iterator it = c->users.begin(); it != c->users.end();)
|
||||
{
|
||||
UserContainer *uc = *it;
|
||||
++it;
|
||||
|
||||
if (is_oper(uc->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);
|
||||
c->Kick(NULL, uc->user, "%s", reason.c_str());
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ircdproto->SendSQLine(mask, reason);
|
||||
}
|
||||
} else {
|
||||
ircdproto->SendSQLine(mask, reason);
|
||||
else
|
||||
ircdproto->SendSQLine(mask, reason);
|
||||
}
|
||||
else
|
||||
ircdproto->SendSQLine(mask, reason);
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
@@ -128,99 +122,50 @@ void sqline(char *mask, char *reason)
|
||||
* @param nick to remove the ban for
|
||||
* @return void
|
||||
*/
|
||||
void common_unban(ChannelInfo * ci, char *nick)
|
||||
void common_unban(ChannelInfo *ci, const std::string &nick)
|
||||
{
|
||||
const 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))
|
||||
if (!ci || !ci->c || nick.empty())
|
||||
return;
|
||||
|
||||
if (u->hostip == NULL) {
|
||||
if (!(u = finduser(nick)))
|
||||
return;
|
||||
|
||||
if (!ci->c->bans || !ci->c->bans->count)
|
||||
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) {
|
||||
if (host)
|
||||
u->hostip = sstrdup(host);
|
||||
}
|
||||
} else {
|
||||
host = sstrdup(u->hostip);
|
||||
}
|
||||
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) {
|
||||
if (ircd->svsmode_unban)
|
||||
ircdproto->SendBanDel(ci->c, nick);
|
||||
else
|
||||
{
|
||||
for (ban = ci->c->bans->entries; ban; ban = next)
|
||||
{
|
||||
next = ban->next;
|
||||
if (entry_match(ban, u->nick, u->GetIdent().c_str(), u->host, ip) ||
|
||||
entry_match(ban, u->nick, u->GetIdent().c_str(), u->GetDisplayedHost().c_str(), 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);
|
||||
}
|
||||
if (entry_match(ban, u->nick.c_str(), u->GetIdent().c_str(), u->host, ip) || entry_match(ban, u->nick.c_str(), u->GetIdent().c_str(), u->GetDisplayedHost().c_str(), ip))
|
||||
ci->c->RemoveMode(NULL, CMODE_BAN, ban->mask);
|
||||
}
|
||||
}
|
||||
/* host_resolve() sstrdup us this info so we gotta free it */
|
||||
if (host) {
|
||||
if (host)
|
||||
delete [] host;
|
||||
}
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/**
|
||||
* Prepare to set SVSMODE and update internal user modes
|
||||
* @param u user to apply modes to
|
||||
* @param modes the modes to set on the user
|
||||
* @param arg the arguments for the user modes
|
||||
* @return void
|
||||
*/
|
||||
void common_svsmode(User * u, const char *modes, const char *arg)
|
||||
{
|
||||
int ac = 1;
|
||||
const char *av[2];
|
||||
|
||||
av[0] = modes;
|
||||
if (arg) {
|
||||
av[1] = arg;
|
||||
ac++;
|
||||
}
|
||||
|
||||
ircdproto->SendSVSMode(u, ac, av);
|
||||
ircdproto->ProcessUsermodes(u, ac, av);
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
+125
-119
@@ -1,6 +1,6 @@
|
||||
/* base64 routines.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2010 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -18,16 +18,16 @@
|
||||
#include "services.h"
|
||||
|
||||
static char *int_to_base64(long);
|
||||
static long base64_to_int(char *);
|
||||
static long base64_to_int(const char *);
|
||||
|
||||
const char* base64enc(long i)
|
||||
const char *base64enc(long i)
|
||||
{
|
||||
if (i < 0)
|
||||
return ("0");
|
||||
return "0";
|
||||
return int_to_base64(i);
|
||||
}
|
||||
|
||||
long base64dec(char* b64)
|
||||
long base64dec(const char *b64)
|
||||
{
|
||||
if (b64)
|
||||
return base64_to_int(b64);
|
||||
@@ -35,7 +35,6 @@ long base64dec(char* b64)
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static const char Base64[] =
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
||||
static const char Pad64 = '=';
|
||||
@@ -103,14 +102,15 @@ static const char Pad64 = '=';
|
||||
characters followed by one "=" padding character.
|
||||
*/
|
||||
|
||||
int b64_encode(char *src, size_t srclength, char *target, size_t targsize)
|
||||
int b64_encode(const 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;
|
||||
|
||||
while (2 < srclength) {
|
||||
while (2 < srclength)
|
||||
{
|
||||
input[0] = *src++;
|
||||
input[1] = *src++;
|
||||
input[2] = *src++;
|
||||
@@ -122,7 +122,7 @@ int b64_encode(char *src, size_t srclength, char *target, size_t targsize)
|
||||
output[3] = input[2] & 0x3f;
|
||||
|
||||
if (datalength + 4 > targsize)
|
||||
return (-1);
|
||||
return -1;
|
||||
target[datalength++] = Base64[output[0]];
|
||||
target[datalength++] = Base64[output[1]];
|
||||
target[datalength++] = Base64[output[2]];
|
||||
@@ -130,10 +130,11 @@ int b64_encode(char *src, size_t srclength, char *target, size_t targsize)
|
||||
}
|
||||
|
||||
/* Now we worry about padding. */
|
||||
if (0 != srclength) {
|
||||
if (srclength)
|
||||
{
|
||||
/* Get what's left. */
|
||||
input[0] = input[1] = input[2] = '\0';
|
||||
for (i = 0; i < srclength; i++)
|
||||
for (i = 0; i < srclength; ++i)
|
||||
input[i] = *src++;
|
||||
|
||||
output[0] = input[0] >> 2;
|
||||
@@ -141,7 +142,7 @@ int b64_encode(char *src, size_t srclength, char *target, size_t targsize)
|
||||
output[2] = ((input[1] & 0x0f) << 2) + (input[2] >> 6);
|
||||
|
||||
if (datalength + 4 > targsize)
|
||||
return (-1);
|
||||
return -1;
|
||||
target[datalength++] = Base64[output[0]];
|
||||
target[datalength++] = Base64[output[1]];
|
||||
if (srclength == 1)
|
||||
@@ -151,9 +152,9 @@ int b64_encode(char *src, size_t srclength, char *target, size_t targsize)
|
||||
target[datalength++] = Pad64;
|
||||
}
|
||||
if (datalength >= targsize)
|
||||
return (-1);
|
||||
target[datalength] = '\0'; /* Returned value doesn't count \0. */
|
||||
return (datalength);
|
||||
return -1;
|
||||
target[datalength] = '\0'; /* Returned value doesn't count \0. */
|
||||
return datalength;
|
||||
}
|
||||
|
||||
/* skips all whitespace anywhere.
|
||||
@@ -170,7 +171,8 @@ int b64_decode(const char *src, char *target, size_t targsize)
|
||||
state = 0;
|
||||
tarindex = 0;
|
||||
|
||||
while ((ch = *src++) != '\0') {
|
||||
while ((ch = *src++) != '\0')
|
||||
{
|
||||
if (isspace(ch)) /* Skip whitespace anywhere. */
|
||||
continue;
|
||||
|
||||
@@ -178,51 +180,54 @@ int b64_decode(const char *src, char *target, size_t targsize)
|
||||
break;
|
||||
|
||||
pos = const_cast<char *>(strchr(Base64, ch));
|
||||
if (pos == 0) /* A non-base64 character. */
|
||||
return (-1);
|
||||
if (!pos) /* 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 (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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -231,53 +236,57 @@ int b64_decode(const char *src, char *target, size_t targsize)
|
||||
* on a byte boundary, and/or with erroneous trailing characters.
|
||||
*/
|
||||
|
||||
if (ch == Pad64) { /* We got a pad char. */
|
||||
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);
|
||||
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 (; 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 (; 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);
|
||||
/*
|
||||
* 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])
|
||||
return -1;
|
||||
}
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* We ended by seeing the end of the string. Make sure we
|
||||
* have no partial bytes lying around.
|
||||
*/
|
||||
if (state != 0)
|
||||
return (-1);
|
||||
if (state)
|
||||
return -1;
|
||||
}
|
||||
|
||||
return (tarindex);
|
||||
return tarindex;
|
||||
}
|
||||
|
||||
const char* encode_ip(unsigned char *ip)
|
||||
@@ -290,13 +299,14 @@ const char* encode_ip(unsigned char *ip)
|
||||
if (!ip)
|
||||
return "*";
|
||||
|
||||
if (strchr(reinterpret_cast<char *>(ip), ':')) {
|
||||
if (strchr(reinterpret_cast<char *>(ip), ':'))
|
||||
return NULL;
|
||||
} else {
|
||||
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);
|
||||
b64_encode(reinterpret_cast<const char *>(&cp), sizeof(struct in_addr), buf, 25);
|
||||
}
|
||||
return buf;
|
||||
}
|
||||
@@ -309,9 +319,9 @@ int decode_ip(const char *buf)
|
||||
|
||||
b64_decode(buf, targ, 25);
|
||||
ia = *reinterpret_cast<struct in_addr *>(targ);
|
||||
if (len == 24) { /* IPv6 */
|
||||
if (len == 24) /* IPv6 */
|
||||
return 0;
|
||||
} else if (len == 8) /* IPv4 */
|
||||
else if (len == 8) /* IPv4 */
|
||||
return ia.s_addr;
|
||||
else /* Error?? */
|
||||
return 0;
|
||||
@@ -364,28 +374,28 @@ static char *int_to_base64(long val)
|
||||
* if the value is then too large it can easily lead to
|
||||
* a buffer underflow and thus to a crash. -- Syzop
|
||||
*/
|
||||
if (val > 2147483647L) {
|
||||
if (val > 2147483647L)
|
||||
abort();
|
||||
}
|
||||
|
||||
do {
|
||||
do
|
||||
{
|
||||
base64buf[--i] = int6_to_base64_map[val & 63];
|
||||
}
|
||||
while (val >>= 6);
|
||||
} while (val >>= 6);
|
||||
|
||||
return base64buf + i;
|
||||
}
|
||||
|
||||
static long base64_to_int(char *b64)
|
||||
static long base64_to_int(const char *b64)
|
||||
{
|
||||
int v = base64_to_int6_map[static_cast<unsigned char>(*b64++)];
|
||||
int v = base64_to_int6_map[static_cast<const unsigned char>(*b64++)];
|
||||
|
||||
if (!b64)
|
||||
return 0;
|
||||
|
||||
while (*b64) {
|
||||
while (*b64)
|
||||
{
|
||||
v <<= 6;
|
||||
v += base64_to_int6_map[static_cast<unsigned char>(*b64++)];
|
||||
v += base64_to_int6_map[static_cast<const unsigned char>(*b64++)];
|
||||
}
|
||||
|
||||
return v;
|
||||
@@ -393,18 +403,14 @@ static long base64_to_int(char *b64)
|
||||
|
||||
long base64dects(const char *ts)
|
||||
{
|
||||
char *token;
|
||||
long value;
|
||||
|
||||
if (!ts) {
|
||||
if (!ts)
|
||||
return 0;
|
||||
}
|
||||
token = myStrGetToken(ts, '!', 1);
|
||||
|
||||
if (!token) {
|
||||
char *token = myStrGetToken(ts, '!', 1);
|
||||
if (!token)
|
||||
return strtoul(ts, NULL, 10);
|
||||
}
|
||||
value = base64dec(token);
|
||||
|
||||
long value = base64dec(token);
|
||||
delete [] token;
|
||||
return value;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# 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
|
||||
install (PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/anoperc ${CMAKE_CURRENT_SOURCE_DIR}/mydbgen
|
||||
DESTINATION bin
|
||||
)
|
||||
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
#
|
||||
# Configuration script for Services
|
||||
#
|
||||
# (C) 2003-2008 Anope Team
|
||||
# (C) 2003-2010 Anope Team
|
||||
# Contact us at team@anope.org
|
||||
#
|
||||
# Please read COPYING and README for further details.
|
||||
|
||||
Executable
+156
@@ -0,0 +1,156 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# $Id$
|
||||
|
||||
# Location of the .sql file with the schema
|
||||
DBSQL="tables.sql"
|
||||
|
||||
# Schema Version
|
||||
SVER="1"
|
||||
|
||||
# Local Version, defaults to 0
|
||||
LVER="0"
|
||||
|
||||
TFILE="/tmp/.anopedb.$$"
|
||||
|
||||
if [ "`eval echo -n 'a'`" = "-n a" ] ; then
|
||||
c="\c"
|
||||
else
|
||||
n="-n"
|
||||
fi
|
||||
|
||||
DBFILE=../data/$DBSQL
|
||||
|
||||
if [ ! -f "./$DBFILE" ] ; then
|
||||
echo "Error: Required file $DBSQL was not found!";
|
||||
exit
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "This script will guide you through the process of configuring your Anope"
|
||||
echo "installation to make use of MySQL support. This script must be used for both"
|
||||
echo "new installs as well as for upgrading for users who have a previous version"
|
||||
echo "of Anope installed"
|
||||
|
||||
while [ -z "$SQLHOST" ] ; do
|
||||
echo ""
|
||||
echo "What is the hostname of your MySQL server?"
|
||||
echo $n "-> $c"
|
||||
read cc
|
||||
if [ ! -z "$cc" ] ; then
|
||||
SQLHOST=$cc
|
||||
fi
|
||||
done
|
||||
|
||||
while [ -z "$SQLUSER" ] ; do
|
||||
echo ""
|
||||
echo "What is your MySQL username?"
|
||||
echo $n "-> $c"
|
||||
read cc
|
||||
if [ ! -z "$cc" ] ; then
|
||||
SQLUSER=$cc
|
||||
fi
|
||||
done
|
||||
|
||||
OLD_TTY=`stty -g`
|
||||
|
||||
echo ""
|
||||
echo "What is your MySQL password?"
|
||||
echo $n "-> $c"
|
||||
stty -echo echonl
|
||||
read cc
|
||||
SQLPASS_PREFIX=""
|
||||
if [ ! -z "$cc" ] ; then
|
||||
SQLPASS_PREFIX="-p"
|
||||
SQLPASS=$cc
|
||||
fi
|
||||
stty $OLD_TTY
|
||||
|
||||
mysqlshow -h$SQLHOST -u$SQLUSER $SQLPASS_PREFIX$SQLPASS >/dev/null 2>&1
|
||||
if test "$?" = "1" ; then
|
||||
echo "Error: Unable to login, verify your login/password and hostname"
|
||||
exit
|
||||
fi
|
||||
|
||||
while [ -z "$SQLDB" ] ; do
|
||||
echo ""
|
||||
echo "What is the name of the Anope SQL database?"
|
||||
echo $n "-> $c"
|
||||
read cc
|
||||
if [ ! -z "$cc" ] ; then
|
||||
SQLDB=$cc
|
||||
fi
|
||||
done
|
||||
|
||||
MYSQLDUMP="mysqldump -h$SQLHOST -u$SQLUSER $SQLPASS_PREFIX$SQLPASS $SQLDB"
|
||||
MYSQLSHOW="mysqlshow -h$SQLHOST -u$SQLUSER $SQLPASS_PREFIX$SQLPASS $SQLDB"
|
||||
MYSQL="mysql -h$SQLHOST -u$SQLUSER $SQLPASS_PREFIX$SQLPASS $SQLDB"
|
||||
|
||||
echo ""
|
||||
|
||||
$MYSQLSHOW | grep -q $SQLDB
|
||||
if test "$?" = "1" ; then
|
||||
echo -n "Unable to find databse, creating... "
|
||||
mysql -h$SQLHOST -u$SQLUSER $SQLPASS_PREFIX$SQLPASS -Bs -e "create database $SQLDB" >/dev/null 2>&1
|
||||
if test "$?" = "0" ; then
|
||||
echo "done!"
|
||||
else
|
||||
echo "failed!"
|
||||
FAILED="$FAILED 'database creation'"
|
||||
fi
|
||||
fi
|
||||
|
||||
$MYSQL -Bs -e "show tables like 'anope_os_core'" | grep -q anope_os_core
|
||||
if test "$?" = "1" ; then
|
||||
echo -n "Unable to find Anope schema, creating... "
|
||||
$MYSQL < $DBFILE
|
||||
if test "$?" = "0" ; then
|
||||
echo "done!"
|
||||
else
|
||||
echo "failed!"
|
||||
FAILED="$FAILED 'schema creation'"
|
||||
fi
|
||||
else
|
||||
echo "done!"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
if [ $LVER -ne $SVER ]; then
|
||||
echo -n "Inserting initial version number... "
|
||||
$MYSQL -Bs -e "delete from anope_info"
|
||||
echo "INSERT INTO anope_info (version, date) VALUES ($SVER, now())" > $TFILE
|
||||
$MYSQL < $TFILE >/dev/null 2>&1
|
||||
if test "$?" = "0" ; then
|
||||
echo "done!"
|
||||
else
|
||||
echo "failed!"
|
||||
FAILED="$FAILED 'version insert'"
|
||||
fi
|
||||
fi
|
||||
|
||||
rm -f $TFILE
|
||||
if test "x$FAILED" = "x" ; then
|
||||
# Try to find out more about this installation
|
||||
SQLPORT="$(mysql_config --port 2> /dev/null)"
|
||||
echo ""
|
||||
echo "Your MySQL setup is complete and your Anope schema is up to date. Make"
|
||||
echo "sure you configure MySQL on your services.conf file prior to launching"
|
||||
echo "Anope with MySQL support. Your configuration values are:"
|
||||
echo ""
|
||||
echo "mysql"
|
||||
echo "{"
|
||||
echo " database = \"$SQLDB\""
|
||||
echo " server = \"$SQLHOST\""
|
||||
echo " username = \"$SQLUSER\""
|
||||
echo " password = \"$SQLPASS\""
|
||||
echo " port = \"$SQLPORT\""
|
||||
echo " updatedelay = \"60\""
|
||||
echo "}"
|
||||
echo ""
|
||||
else
|
||||
echo "The following operations failed:"
|
||||
echo "$FAILED"
|
||||
fi
|
||||
|
||||
exit
|
||||
+68
-92
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2008-2009 Robin Burchell <w00t@inspircd.org>
|
||||
* Copyright (C) 2008-2009 Anope Team <team@anope.org>
|
||||
* Copyright (C) 2008-2010 Robin Burchell <w00t@inspircd.org>
|
||||
* Copyright (C) 2008-2010 Anope Team <team@anope.org>
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
@@ -12,77 +12,62 @@
|
||||
#include "services.h"
|
||||
#include "modules.h"
|
||||
|
||||
BotInfo::BotInfo(const char *nnick)
|
||||
BotInfo::BotInfo(const std::string &nnick, const std::string &nuser, const std::string &nhost, const std::string &nreal)
|
||||
{
|
||||
this->nick = sstrdup(nnick);
|
||||
this->lastmsg = time(NULL);
|
||||
this->uid = ts6_uid_retrieve(); // XXX is this safe? has ts6 been setup yet?
|
||||
nbots++;
|
||||
this->nick = nnick;
|
||||
this->user = nuser;
|
||||
this->host = nhost;
|
||||
this->real = nreal;
|
||||
this->lastmsg = this->created = time(NULL);
|
||||
this->uid = ts6_uid_retrieve();
|
||||
this->cmdTable = NULL;
|
||||
this->flags = 0;
|
||||
++nbots;
|
||||
this->chancount = 0;
|
||||
|
||||
if (s_ChanServ && !stricmp(s_ChanServ, nnick))
|
||||
this->flags |= BI_CHANSERV;
|
||||
else if (s_BotServ && !stricmp(s_BotServ, nnick))
|
||||
this->flags |= BI_BOTSERV;
|
||||
else if (s_HostServ && !stricmp(s_HostServ, nnick))
|
||||
this->flags |= BI_HOSTSERV;
|
||||
else if (s_OperServ && !stricmp(s_OperServ, nnick))
|
||||
this->flags |= BI_OPERSERV;
|
||||
else if (s_MemoServ && !stricmp(s_MemoServ, nnick))
|
||||
this->flags |= BI_MEMOSERV;
|
||||
else if (s_NickServ && !stricmp(s_NickServ, nnick))
|
||||
this->flags |= BI_NICKSERV;
|
||||
else if (s_GlobalNoticer && !stricmp(s_GlobalNoticer, nnick))
|
||||
this->flags |= BI_GLOBAL;
|
||||
|
||||
FOREACH_MOD(I_OnBotPreLoad, OnBotPreLoad(this));
|
||||
|
||||
ci::string ci_nick(nnick.c_str());
|
||||
if (Config.s_ChanServ && ci_nick == Config.s_ChanServ)
|
||||
{
|
||||
this->cmdTable = CHANSERV;
|
||||
this->SetFlag(BI_CHANSERV);
|
||||
}
|
||||
else if (Config.s_BotServ && ci_nick == Config.s_BotServ)
|
||||
{
|
||||
this->cmdTable = BOTSERV;
|
||||
this->SetFlag(BI_BOTSERV);
|
||||
}
|
||||
else if (Config.s_HostServ && ci_nick == Config.s_HostServ)
|
||||
{
|
||||
this->cmdTable = HOSTSERV;
|
||||
this->SetFlag(BI_HOSTSERV);
|
||||
}
|
||||
else if (Config.s_OperServ && ci_nick == Config.s_OperServ)
|
||||
{
|
||||
this->cmdTable = OPERSERV;
|
||||
this->SetFlag(BI_OPERSERV);
|
||||
}
|
||||
else if (Config.s_MemoServ && ci_nick == Config.s_MemoServ)
|
||||
{
|
||||
this->cmdTable = MEMOSERV;
|
||||
this->SetFlag(BI_MEMOSERV);
|
||||
}
|
||||
else if (Config.s_NickServ && ci_nick == Config.s_NickServ)
|
||||
{
|
||||
this->cmdTable = NICKSERV;
|
||||
this->SetFlag(BI_NICKSERV);
|
||||
}
|
||||
else if (Config.s_GlobalNoticer && ci_nick == Config.s_GlobalNoticer)
|
||||
{
|
||||
this->SetFlag(BI_GLOBAL);
|
||||
}
|
||||
|
||||
insert_bot(this); // XXX, this is ugly, but it needs to stay until hashing of bots is redone in STL.
|
||||
|
||||
// If we're synchronised with the uplink already, call introduce_user() for this bot.
|
||||
alog("serv_uplink is %p and status is %d", static_cast<void *>(serv_uplink), serv_uplink ? serv_uplink->sync == SSYNC_DONE : 0);
|
||||
if (serv_uplink && serv_uplink->sync == SSYNC_DONE)
|
||||
ircdproto->SendClientIntroduction(this->nick, this->user, this->host, this->real, ircd->pseudoclient_mode, this->uid.c_str());
|
||||
}
|
||||
|
||||
BotInfo::BotInfo(const char *nnick, const char *nuser, const char *nhost, const char *nreal)
|
||||
{
|
||||
this->nick = sstrdup(nnick);
|
||||
this->user = sstrdup(nuser);
|
||||
this->host = sstrdup(nhost);
|
||||
this->real = sstrdup(nreal);
|
||||
this->lastmsg = time(NULL);
|
||||
this->uid = ts6_uid_retrieve(); // XXX is this safe? has ts6 been setup yet?
|
||||
nbots++;
|
||||
this->cmdTable = NULL;
|
||||
this->flags = 0;
|
||||
this->chancount = 0;
|
||||
|
||||
if (s_ChanServ && !stricmp(s_ChanServ, nnick))
|
||||
this->flags |= BI_CHANSERV;
|
||||
else if (s_BotServ && !stricmp(s_BotServ, nnick))
|
||||
this->flags |= BI_BOTSERV;
|
||||
else if (s_HostServ && !stricmp(s_HostServ, nnick))
|
||||
this->flags |= BI_HOSTSERV;
|
||||
else if (s_OperServ && !stricmp(s_OperServ, nnick))
|
||||
this->flags |= BI_OPERSERV;
|
||||
else if (s_MemoServ && !stricmp(s_MemoServ, nnick))
|
||||
this->flags |= BI_MEMOSERV;
|
||||
else if (s_NickServ && !stricmp(s_NickServ, nnick))
|
||||
this->flags |= BI_NICKSERV;
|
||||
else if (s_GlobalNoticer && !stricmp(s_GlobalNoticer, nnick))
|
||||
this->flags |= BI_GLOBAL;
|
||||
|
||||
FOREACH_MOD(I_OnBotPreLoad, OnBotPreLoad(this));
|
||||
|
||||
insert_bot(this); // XXX, this is ugly, but it needs to stay until hashing of bots is redone in STL.
|
||||
|
||||
// If we're synchronised with the uplink already, call introduce_user() for this bot.
|
||||
alog("serv_uplink is %p and status is %d", static_cast<void *>(serv_uplink), serv_uplink ? serv_uplink->sync == SSYNC_DONE : 0);
|
||||
if (serv_uplink && serv_uplink->sync == SSYNC_DONE)
|
||||
ircdproto->SendClientIntroduction(this->nick, this->user, this->host, this->real, ircd->pseudoclient_mode, this->uid.c_str());
|
||||
{
|
||||
ircdproto->SendClientIntroduction(this->nick, this->user, this->host, this->real, ircd->pseudoclient_mode, this->uid);
|
||||
ircdproto->SendSQLine(this->nick, "Reserved for services");
|
||||
}
|
||||
}
|
||||
|
||||
BotInfo::~BotInfo()
|
||||
@@ -90,7 +75,7 @@ BotInfo::~BotInfo()
|
||||
int i;
|
||||
ChannelInfo *ci;
|
||||
|
||||
for (i = 0; i < 256; i++)
|
||||
for (i = 0; i < 256; ++i)
|
||||
for (ci = chanlists[i]; ci; ci = ci->next)
|
||||
if (ci->bi == this)
|
||||
ci->bi = NULL;
|
||||
@@ -100,14 +85,9 @@ BotInfo::~BotInfo()
|
||||
if (this->prev)
|
||||
this->prev->next = this->next;
|
||||
else
|
||||
botlists[tolower(*this->nick)] = this->next;
|
||||
botlists[tolower(this->nick[0])] = this->next;
|
||||
|
||||
nbots--;
|
||||
|
||||
delete [] this->nick;
|
||||
delete [] this->user;
|
||||
delete [] this->host;
|
||||
delete [] this->real;
|
||||
--nbots;
|
||||
}
|
||||
|
||||
|
||||
@@ -118,11 +98,9 @@ void BotInfo::ChangeNick(const char *newnick)
|
||||
if (this->prev)
|
||||
this->prev->next = this->next;
|
||||
else
|
||||
botlists[tolower(*this->nick)] = this->next;
|
||||
botlists[tolower(this->nick[0])] = this->next;
|
||||
|
||||
if (this->nick)
|
||||
delete [] this->nick;
|
||||
this->nick = sstrdup(newnick);
|
||||
this->nick = newnick;
|
||||
|
||||
insert_bot(this);
|
||||
}
|
||||
@@ -132,9 +110,9 @@ void BotInfo::RejoinAll()
|
||||
int i;
|
||||
ChannelInfo *ci;
|
||||
|
||||
for (i = 0; i < 256; i++)
|
||||
for (i = 0; i < 256; ++i)
|
||||
for (ci = chanlists[i]; ci; ci = ci->next)
|
||||
if (ci->bi == this && ci->c && (ci->c->usercount >= BSMinUsers))
|
||||
if (ci->bi == this && ci->c && (ci->c->users.size() >= Config.BSMinUsers))
|
||||
bot_join(ci);
|
||||
}
|
||||
|
||||
@@ -146,16 +124,11 @@ void BotInfo::Assign(User *u, ChannelInfo *ci)
|
||||
return;
|
||||
|
||||
if (ci->bi)
|
||||
{
|
||||
if (u)
|
||||
ci->bi->UnAssign(u, ci);
|
||||
else
|
||||
ci->bi->UnAssign(NULL, ci);
|
||||
}
|
||||
ci->bi->UnAssign(u, ci);
|
||||
|
||||
ci->bi = this;
|
||||
this->chancount++;
|
||||
if (ci->c && ci->c->usercount >= BSMinUsers)
|
||||
++this->chancount;
|
||||
if (ci->c && ci->c->users.size() >= Config.BSMinUsers)
|
||||
bot_join(ci);
|
||||
}
|
||||
|
||||
@@ -166,11 +139,14 @@ void BotInfo::UnAssign(User *u, ChannelInfo *ci)
|
||||
if (MOD_RESULT == EVENT_STOP)
|
||||
return;
|
||||
|
||||
if (u && ci->c && ci->c->usercount >= BSMinUsers)
|
||||
ircdproto->SendPart(ci->bi, ci->name, "UNASSIGN from %s", u->nick);
|
||||
if (ci->c && ci->c->users.size() >= Config.BSMinUsers)
|
||||
{
|
||||
if (u)
|
||||
ircdproto->SendPart(ci->bi, ci->c, "UNASSIGN from %s", u->nick.c_str());
|
||||
else
|
||||
ircdproto->SendPart(ci->bi, ci->c, "");
|
||||
}
|
||||
|
||||
ci->bi->chancount--;
|
||||
--ci->bi->chancount;
|
||||
ci->bi = NULL;
|
||||
}
|
||||
|
||||
|
||||
|
||||
+169
-396
@@ -1,6 +1,6 @@
|
||||
/* BotServ functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2010 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -34,7 +34,7 @@ E void moduleAddBotServCmds();
|
||||
/*************************************************************************/
|
||||
/* *INDENT-OFF* */
|
||||
void moduleAddBotServCmds() {
|
||||
ModuleManager::LoadModuleList(BotServCoreNumber, BotServCoreModules);
|
||||
ModuleManager::LoadModuleList(Config.BotServCoreModules);
|
||||
}
|
||||
/* *INDENT-ON* */
|
||||
/*************************************************************************/
|
||||
@@ -52,10 +52,10 @@ void get_botserv_stats(long *nrec, long *memuse)
|
||||
for (bi = botlists[i]; bi; bi = bi->next) {
|
||||
count++;
|
||||
mem += sizeof(*bi);
|
||||
mem += strlen(bi->nick) + 1;
|
||||
mem += strlen(bi->user) + 1;
|
||||
mem += strlen(bi->host) + 1;
|
||||
mem += strlen(bi->real) + 1;
|
||||
mem += bi->nick.size() + 1;
|
||||
mem += bi->user.size() + 1;
|
||||
mem += bi->host.size() + 1;
|
||||
mem += bi->real.size() + 1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -70,7 +70,7 @@ void get_botserv_stats(long *nrec, long *memuse)
|
||||
|
||||
void bs_init()
|
||||
{
|
||||
if (s_BotServ) {
|
||||
if (Config.s_BotServ) {
|
||||
moduleAddBotServCmds();
|
||||
}
|
||||
}
|
||||
@@ -91,9 +91,9 @@ void botserv(User * u, char *buf)
|
||||
if (!(s = strtok(NULL, ""))) {
|
||||
*s = 0;
|
||||
}
|
||||
ircdproto->SendCTCP(findbot(s_BotServ), u->nick, "PING %s", s);
|
||||
ircdproto->SendCTCP(findbot(Config.s_BotServ), u->nick.c_str(), "PING %s", s);
|
||||
} else {
|
||||
mod_run_cmd(s_BotServ, u, BOTSERV, cmd);
|
||||
mod_run_cmd(Config.s_BotServ, u, BOTSERV, cmd);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -114,7 +114,7 @@ void botmsgs(User * u, BotInfo * bi, char *buf)
|
||||
if (!(s = strtok(NULL, ""))) {
|
||||
*s = 0;
|
||||
}
|
||||
ircdproto->SendCTCP(bi, u->nick, "PING %s", s);
|
||||
ircdproto->SendCTCP(bi, u->nick.c_str(), "PING %s", s);
|
||||
}
|
||||
else if (cmd && bi->cmdTable)
|
||||
{
|
||||
@@ -132,20 +132,18 @@ void botmsgs(User * u, BotInfo * bi, char *buf)
|
||||
void botchanmsgs(User * u, ChannelInfo * ci, char *buf)
|
||||
{
|
||||
int c;
|
||||
int16 cstatus = 0;
|
||||
char *cmd;
|
||||
UserData *ud;
|
||||
bool was_action = false;
|
||||
Command *command;
|
||||
std::string bbuf;
|
||||
|
||||
if (!u || !buf || !ci) {
|
||||
if (!u || !buf || !ci || !ci->c)
|
||||
return;
|
||||
}
|
||||
|
||||
/* Answer to ping if needed, without breaking the buffer. */
|
||||
if (!strnicmp(buf, "\1PING", 5)) {
|
||||
ircdproto->SendCTCP(ci->bi, u->nick, "PING %s", buf);
|
||||
ircdproto->SendCTCP(ci->bi, u->nick.c_str(), "PING %s", buf);
|
||||
}
|
||||
|
||||
/* If it's a /me, cut the CTCP part at the beginning (not
|
||||
@@ -167,45 +165,46 @@ void botchanmsgs(User * u, ChannelInfo * ci, char *buf)
|
||||
* way.
|
||||
*/
|
||||
|
||||
/* We first retrieve the user status on the channel if needed */
|
||||
if (ci->botflags & (BS_DONTKICKOPS | BS_DONTKICKVOICES))
|
||||
cstatus = chan_get_user_status(ci->c, u);
|
||||
bool Allow = false;
|
||||
if (!ci->botflags.HasFlag(BS_DONTKICKOPS) && !ci->botflags.HasFlag(BS_DONTKICKVOICES))
|
||||
Allow = true;
|
||||
else if (ci->botflags.HasFlag(BS_DONTKICKOPS) && (ci->c->HasUserStatus(u, CMODE_HALFOP) || ci->c->HasUserStatus(u, CMODE_OP) || ci->c->HasUserStatus(u, CMODE_PROTECT) || ci->c->HasUserStatus(u, CMODE_OWNER)))
|
||||
Allow = true;
|
||||
else if (ci->botflags.HasFlag(BS_DONTKICKVOICES) && ci->c->HasUserStatus(u, CMODE_VOICE))
|
||||
Allow = true;
|
||||
|
||||
if (buf && !check_access(u, ci, CA_NOKICK) &&
|
||||
(!(ci->botflags & BS_DONTKICKOPS)
|
||||
|| !(cstatus & (CUS_HALFOP | CUS_OP | CUS_OWNER | CUS_PROTECT)))
|
||||
|
||||
&& (!(ci->botflags & BS_DONTKICKVOICES) || !(cstatus & CUS_VOICE))) {
|
||||
if (buf && !check_access(u, ci, CA_NOKICK) && Allow)
|
||||
{
|
||||
/* Bolds kicker */
|
||||
if ((ci->botflags & BS_KICK_BOLDS) && strchr(buf, 2)) {
|
||||
if (ci->botflags.HasFlag(BS_KICK_BOLDS) && strchr(buf, 2)) {
|
||||
check_ban(ci, u, TTB_BOLDS);
|
||||
bot_kick(ci, u, BOT_REASON_BOLD);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Color kicker */
|
||||
if ((ci->botflags & BS_KICK_COLORS) && strchr(buf, 3)) {
|
||||
if (ci->botflags.HasFlag(BS_KICK_COLORS) && strchr(buf, 3)) {
|
||||
check_ban(ci, u, TTB_COLORS);
|
||||
bot_kick(ci, u, BOT_REASON_COLOR);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Reverses kicker */
|
||||
if ((ci->botflags & BS_KICK_REVERSES) && strchr(buf, 22)) {
|
||||
if (ci->botflags.HasFlag(BS_KICK_REVERSES) && strchr(buf, 22)) {
|
||||
check_ban(ci, u, TTB_REVERSES);
|
||||
bot_kick(ci, u, BOT_REASON_REVERSE);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Underlines kicker */
|
||||
if ((ci->botflags & BS_KICK_UNDERLINES) && strchr(buf, 31)) {
|
||||
if (ci->botflags.HasFlag(BS_KICK_UNDERLINES) && strchr(buf, 31)) {
|
||||
check_ban(ci, u, TTB_UNDERLINES);
|
||||
bot_kick(ci, u, BOT_REASON_UNDERLINE);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Caps kicker */
|
||||
if ((ci->botflags & BS_KICK_CAPS)
|
||||
if (ci->botflags.HasFlag(BS_KICK_CAPS)
|
||||
&& ((c = strlen(buf)) >= ci->capsmin)) {
|
||||
int i = 0;
|
||||
int l = 0;
|
||||
@@ -223,7 +222,7 @@ void botchanmsgs(User * u, ChannelInfo * ci, char *buf)
|
||||
* percentage of caps to kick for; the rest is ignored. -GD
|
||||
*/
|
||||
|
||||
if (i >= ci->capsmin && i * 100 / (i + l) >= ci->capspercent) {
|
||||
if (i && l && i >= ci->capsmin && i * 100 / (i + l) >= ci->capspercent) {
|
||||
check_ban(ci, u, TTB_CAPS);
|
||||
bot_kick(ci, u, BOT_REASON_CAPS);
|
||||
return;
|
||||
@@ -231,8 +230,7 @@ void botchanmsgs(User * u, ChannelInfo * ci, char *buf)
|
||||
}
|
||||
|
||||
/* Bad words kicker */
|
||||
if (ci->botflags & BS_KICK_BADWORDS) {
|
||||
int i;
|
||||
if (ci->botflags.HasFlag(BS_KICK_BADWORDS)) {
|
||||
int mustkick = 0;
|
||||
char *nbuf;
|
||||
BadWord *bw;
|
||||
@@ -240,39 +238,38 @@ void botchanmsgs(User * u, ChannelInfo * ci, char *buf)
|
||||
/* Normalize the buffer */
|
||||
nbuf = normalizeBuffer(buf);
|
||||
|
||||
for (i = 0, bw = ci->badwords; i < ci->bwcount; i++, bw++) {
|
||||
if (!bw->in_use)
|
||||
continue;
|
||||
for (unsigned i = 0; i < ci->GetBadWordCount(); ++i)
|
||||
{
|
||||
bw = ci->GetBadWord(i);
|
||||
|
||||
if (bw->type == BW_ANY
|
||||
&& ((BSCaseSensitive && strstr(nbuf, bw->word))
|
||||
|| (!BSCaseSensitive && stristr(nbuf, bw->word)))) {
|
||||
&& ((Config.BSCaseSensitive && strstr(nbuf, bw->word.c_str()))
|
||||
|| (!Config.BSCaseSensitive && stristr(nbuf, bw->word.c_str())))) {
|
||||
mustkick = 1;
|
||||
} else if (bw->type == BW_SINGLE) {
|
||||
int len = strlen(bw->word);
|
||||
int len = bw->word.length();
|
||||
|
||||
if ((BSCaseSensitive && !strcmp(nbuf, bw->word))
|
||||
|| (!BSCaseSensitive
|
||||
&& (!stricmp(nbuf, bw->word)))) {
|
||||
if ((Config.BSCaseSensitive && nbuf == bw->word)
|
||||
|| (!Config.BSCaseSensitive
|
||||
&& (!stricmp(nbuf, bw->word.c_str())))) {
|
||||
mustkick = 1;
|
||||
/* two next if are quite odd isn't it? =) */
|
||||
} else if ((strchr(nbuf, ' ') == nbuf + len)
|
||||
&&
|
||||
((BSCaseSensitive
|
||||
&& !strcmp(nbuf, bw->word))
|
||||
|| (!BSCaseSensitive
|
||||
&& (stristr(nbuf, bw->word) ==
|
||||
((Config.BSCaseSensitive && nbuf == bw->word)
|
||||
|| (!Config.BSCaseSensitive
|
||||
&& (stristr(nbuf, bw->word.c_str()) ==
|
||||
nbuf)))) {
|
||||
mustkick = 1;
|
||||
} else {
|
||||
if ((strrchr(nbuf, ' ') ==
|
||||
nbuf + strlen(nbuf) - len - 1)
|
||||
&&
|
||||
((BSCaseSensitive
|
||||
&& (strstr(nbuf, bw->word) ==
|
||||
((Config.BSCaseSensitive
|
||||
&& (strstr(nbuf, bw->word.c_str()) ==
|
||||
nbuf + strlen(nbuf) - len))
|
||||
|| (!BSCaseSensitive
|
||||
&& (stristr(nbuf, bw->word) ==
|
||||
|| (!Config.BSCaseSensitive
|
||||
&& (stristr(nbuf, bw->word.c_str()) ==
|
||||
nbuf + strlen(nbuf) - len)))) {
|
||||
mustkick = 1;
|
||||
} else {
|
||||
@@ -281,11 +278,11 @@ void botchanmsgs(User * u, ChannelInfo * ci, char *buf)
|
||||
wordbuf[0] = ' ';
|
||||
wordbuf[len + 1] = ' ';
|
||||
wordbuf[len + 2] = '\0';
|
||||
memcpy(wordbuf + 1, bw->word, len);
|
||||
memcpy(wordbuf + 1, bw->word.c_str(), len);
|
||||
|
||||
if ((BSCaseSensitive
|
||||
if ((Config.BSCaseSensitive
|
||||
&& (strstr(nbuf, wordbuf)))
|
||||
|| (!BSCaseSensitive
|
||||
|| (!Config.BSCaseSensitive
|
||||
&& (stristr(nbuf, wordbuf)))) {
|
||||
mustkick = 1;
|
||||
}
|
||||
@@ -295,49 +292,49 @@ void botchanmsgs(User * u, ChannelInfo * ci, char *buf)
|
||||
}
|
||||
}
|
||||
} else if (bw->type == BW_START) {
|
||||
int len = strlen(bw->word);
|
||||
int len = bw->word.length();
|
||||
|
||||
if ((BSCaseSensitive
|
||||
&& (!strncmp(nbuf, bw->word, len)))
|
||||
|| (!BSCaseSensitive
|
||||
&& (!strnicmp(nbuf, bw->word, len)))) {
|
||||
if ((Config.BSCaseSensitive
|
||||
&& (!strncmp(nbuf, bw->word.c_str(), len)))
|
||||
|| (!Config.BSCaseSensitive
|
||||
&& (!strnicmp(nbuf, bw->word.c_str(), len)))) {
|
||||
mustkick = 1;
|
||||
} else {
|
||||
char *wordbuf = new char[len + 2];
|
||||
|
||||
memcpy(wordbuf + 1, bw->word, len);
|
||||
memcpy(wordbuf + 1, bw->word.c_str(), len);
|
||||
wordbuf[0] = ' ';
|
||||
wordbuf[len + 1] = '\0';
|
||||
|
||||
if ((BSCaseSensitive && (strstr(nbuf, wordbuf)))
|
||||
|| (!BSCaseSensitive
|
||||
if ((Config.BSCaseSensitive && (strstr(nbuf, wordbuf)))
|
||||
|| (!Config.BSCaseSensitive
|
||||
&& (stristr(nbuf, wordbuf))))
|
||||
mustkick = 1;
|
||||
|
||||
delete [] wordbuf;
|
||||
}
|
||||
} else if (bw->type == BW_END) {
|
||||
int len = strlen(bw->word);
|
||||
int len = bw->word.length();
|
||||
|
||||
if ((BSCaseSensitive
|
||||
if ((Config.BSCaseSensitive
|
||||
&&
|
||||
(!strncmp
|
||||
(nbuf + strlen(nbuf) - len, bw->word, len)))
|
||||
|| (!BSCaseSensitive
|
||||
(nbuf + strlen(nbuf) - len, bw->word.c_str(), len)))
|
||||
|| (!Config.BSCaseSensitive
|
||||
&&
|
||||
(!strnicmp
|
||||
(nbuf + strlen(nbuf) - len, bw->word,
|
||||
(nbuf + strlen(nbuf) - len, bw->word.c_str(),
|
||||
len)))) {
|
||||
mustkick = 1;
|
||||
} else {
|
||||
char *wordbuf = new char[len + 2];
|
||||
|
||||
memcpy(wordbuf, bw->word, len);
|
||||
memcpy(wordbuf, bw->word.c_str(), len);
|
||||
wordbuf[len] = ' ';
|
||||
wordbuf[len + 1] = '\0';
|
||||
|
||||
if ((BSCaseSensitive && (strstr(nbuf, wordbuf)))
|
||||
|| (!BSCaseSensitive
|
||||
if ((Config.BSCaseSensitive && (strstr(nbuf, wordbuf)))
|
||||
|| (!Config.BSCaseSensitive
|
||||
&& (stristr(nbuf, wordbuf))))
|
||||
mustkick = 1;
|
||||
|
||||
@@ -347,10 +344,10 @@ void botchanmsgs(User * u, ChannelInfo * ci, char *buf)
|
||||
|
||||
if (mustkick) {
|
||||
check_ban(ci, u, TTB_BADWORDS);
|
||||
if (BSGentleBWReason)
|
||||
if (Config.BSGentleBWReason)
|
||||
bot_kick(ci, u, BOT_REASON_BADWORD_GENTLE);
|
||||
else
|
||||
bot_kick(ci, u, BOT_REASON_BADWORD, bw->word);
|
||||
bot_kick(ci, u, BOT_REASON_BADWORD, bw->word.c_str());
|
||||
|
||||
/* free the normalized buffer before return (#850) */
|
||||
delete [] nbuf;
|
||||
@@ -364,7 +361,7 @@ void botchanmsgs(User * u, ChannelInfo * ci, char *buf)
|
||||
}
|
||||
|
||||
/* Flood kicker */
|
||||
if (ci->botflags & BS_KICK_FLOOD) {
|
||||
if (ci->botflags.HasFlag(BS_KICK_FLOOD)) {
|
||||
time_t now = time(NULL);
|
||||
|
||||
ud = get_user_data(ci->c, u);
|
||||
@@ -386,7 +383,7 @@ void botchanmsgs(User * u, ChannelInfo * ci, char *buf)
|
||||
}
|
||||
|
||||
/* Repeat kicker */
|
||||
if (ci->botflags & BS_KICK_REPEAT) {
|
||||
if (ci->botflags.HasFlag(BS_KICK_REPEAT)) {
|
||||
ud = get_user_data(ci->c, u);
|
||||
if (!ud) {
|
||||
return;
|
||||
@@ -411,16 +408,16 @@ void botchanmsgs(User * u, ChannelInfo * ci, char *buf)
|
||||
|
||||
|
||||
/* return if the user is on the ignore list */
|
||||
if (get_ignore(u->nick) != NULL) {
|
||||
if (get_ignore(u->nick.c_str()) != NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
/* Fantaisist commands */
|
||||
|
||||
if (buf && (ci->botflags & BS_FANTASY) && *buf == *BSFantasyCharacter && !was_action) {
|
||||
if (buf && ci->botflags.HasFlag(BS_FANTASY) && *buf == *Config.BSFantasyCharacter && !was_action) {
|
||||
cmd = strtok(buf, " ");
|
||||
|
||||
if (cmd && (cmd[0] == *BSFantasyCharacter)) {
|
||||
if (cmd && (cmd[0] == *Config.BSFantasyCharacter)) {
|
||||
char *params = strtok(NULL, "");
|
||||
|
||||
/* Strip off the fantasy character */
|
||||
@@ -454,146 +451,29 @@ void botchanmsgs(User * u, ChannelInfo * ci, char *buf)
|
||||
FOREACH_MOD(I_OnBotFantasy, OnBotFantasy(cmd, u, ci, params));
|
||||
}
|
||||
else
|
||||
{
|
||||
FOREACH_MOD(I_OnBotNoFantasyAccess, OnBotNoFantasyAccess(cmd, u, ci, params));
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/* Load/save data files. */
|
||||
|
||||
|
||||
#define SAFE(x) do { \
|
||||
if ((x) < 0) { \
|
||||
if (!forceload) \
|
||||
fatal("Read error on %s", BotDBName); \
|
||||
failed = 1; \
|
||||
break; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
void load_bs_dbase()
|
||||
{
|
||||
dbFILE *f;
|
||||
int c, ver;
|
||||
uint16 tmp16;
|
||||
uint32 tmp32;
|
||||
BotInfo *bi;
|
||||
int failed = 0;
|
||||
|
||||
if (!(f = open_db(s_BotServ, BotDBName, "r", BOT_VERSION)))
|
||||
return;
|
||||
|
||||
ver = get_file_version(f);
|
||||
|
||||
while (!failed && (c = getc_db(f)) != 0) {
|
||||
char *s;
|
||||
|
||||
if (c != 1)
|
||||
fatal("Invalid format in %s %d", BotDBName, c);
|
||||
|
||||
SAFE(read_string(&s, f));
|
||||
bi = new BotInfo(s);
|
||||
delete [] s;
|
||||
SAFE(read_string(&bi->user, f));
|
||||
SAFE(read_string(&bi->host, f));
|
||||
SAFE(read_string(&bi->real, f));
|
||||
if (ver >= 10) {
|
||||
SAFE(read_int16(&tmp16, f));
|
||||
bi->flags |= tmp16;
|
||||
}
|
||||
SAFE(read_int32(&tmp32, f));
|
||||
bi->created = tmp32;
|
||||
SAFE(read_int16(&tmp16, f));
|
||||
bi->chancount = tmp16;
|
||||
|
||||
/* Fixes bug #1080, services bot names may have been
|
||||
* changed in the config and different from database
|
||||
* names
|
||||
*/
|
||||
if (s_ChanServ && bi->flags & BI_CHANSERV && strcmp(bi->nick, s_ChanServ))
|
||||
bi->ChangeNick(s_ChanServ);
|
||||
else if (s_BotServ && bi->flags & BI_BOTSERV && strcmp(bi->nick, s_BotServ))
|
||||
bi->ChangeNick(s_BotServ);
|
||||
else if (s_HostServ && bi->flags & BI_HOSTSERV && strcmp(bi->nick, s_HostServ))
|
||||
bi->ChangeNick(s_HostServ);
|
||||
else if (s_OperServ && bi->flags & BI_OPERSERV && strcmp(bi->nick, s_OperServ))
|
||||
bi->ChangeNick(s_OperServ);
|
||||
else if (s_MemoServ && bi->flags & BI_MEMOSERV && strcmp(bi->nick, s_MemoServ))
|
||||
bi->ChangeNick(s_MemoServ);
|
||||
else if (s_NickServ && bi->flags & BI_NICKSERV && strcmp(bi->nick, s_NickServ))
|
||||
bi->ChangeNick(s_NickServ);
|
||||
else if (s_GlobalNoticer && bi->flags & BI_GLOBAL && strcmp(bi->nick, s_GlobalNoticer))
|
||||
bi->ChangeNick(s_GlobalNoticer);
|
||||
}
|
||||
|
||||
close_db(f);
|
||||
}
|
||||
|
||||
#undef SAFE
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
#define SAFE(x) do { \
|
||||
if ((x) < 0) { \
|
||||
restore_db(f); \
|
||||
log_perror("Write error on %s", BotDBName); \
|
||||
if (time(NULL) - lastwarn > WarningTimeout) { \
|
||||
ircdproto->SendGlobops(NULL, "Write error on %s: %s", BotDBName, \
|
||||
strerror(errno)); \
|
||||
lastwarn = time(NULL); \
|
||||
} \
|
||||
return; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
void save_bs_dbase()
|
||||
{
|
||||
dbFILE *f;
|
||||
BotInfo *bi;
|
||||
static time_t lastwarn = 0;
|
||||
int i;
|
||||
|
||||
if (!(f = open_db(s_BotServ, BotDBName, "w", BOT_VERSION)))
|
||||
return;
|
||||
|
||||
for (i = 0; i < 256; i++) {
|
||||
for (bi = botlists[i]; bi; bi = bi->next) {
|
||||
SAFE(write_int8(1, f));
|
||||
SAFE(write_string(bi->nick, f));
|
||||
SAFE(write_string(bi->user, f));
|
||||
SAFE(write_string(bi->host, f));
|
||||
SAFE(write_string(bi->real, f));
|
||||
SAFE(write_int16(bi->flags, f));
|
||||
SAFE(write_int32(bi->created, f));
|
||||
SAFE(write_int16(bi->chancount, f));
|
||||
}
|
||||
}
|
||||
SAFE(write_int8(0, f));
|
||||
|
||||
close_db(f);
|
||||
|
||||
}
|
||||
|
||||
#undef SAFE
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/* Inserts a bot in the bot list. I can't be much explicit mh? */
|
||||
|
||||
void insert_bot(BotInfo * bi)
|
||||
void insert_bot(BotInfo *bi)
|
||||
{
|
||||
BotInfo *ptr, *prev;
|
||||
|
||||
for (prev = NULL, ptr = botlists[tolower(*bi->nick)];
|
||||
ptr != NULL && stricmp(ptr->nick, bi->nick) < 0;
|
||||
ci::string ci_bi_nick(bi->nick.c_str());
|
||||
for (prev = NULL, ptr = botlists[tolower(bi->nick[0])];
|
||||
ptr != NULL && ci_bi_nick > ptr->nick.c_str();
|
||||
prev = ptr, ptr = ptr->next);
|
||||
bi->prev = prev;
|
||||
bi->next = ptr;
|
||||
if (!prev)
|
||||
botlists[tolower(*bi->nick)] = bi;
|
||||
botlists[tolower(bi->nick[0])] = bi;
|
||||
else
|
||||
prev->next = bi;
|
||||
if (ptr)
|
||||
@@ -603,13 +483,15 @@ void insert_bot(BotInfo * bi)
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
|
||||
BotInfo *findbot(const char *nick)
|
||||
BotInfo *findbot(const std::string &nick)
|
||||
{
|
||||
BotInfo *bi;
|
||||
|
||||
if (!nick || !*nick)
|
||||
if (nick.empty())
|
||||
return NULL;
|
||||
|
||||
ci::string ci_nick(nick.c_str());
|
||||
|
||||
/*
|
||||
* XXX Less than efficient, but we need to do this for good TS6 support currently. This *will* improve. -- w00t
|
||||
*/
|
||||
@@ -617,10 +499,10 @@ BotInfo *findbot(const char *nick)
|
||||
{
|
||||
for (bi = botlists[i]; bi; bi = bi->next)
|
||||
{
|
||||
if (!stricmp(nick, bi->nick))
|
||||
if (ci_nick == bi->nick)
|
||||
return bi;
|
||||
|
||||
if (nick == bi->uid)
|
||||
if (ci_nick == bi->uid)
|
||||
return bi;
|
||||
}
|
||||
}
|
||||
@@ -647,7 +529,7 @@ static BanData *get_ban_data(Channel * c, User * u)
|
||||
u->GetDisplayedHost().c_str());
|
||||
|
||||
for (bd = c->bd; bd; bd = next) {
|
||||
if (now - bd->last_use > BSKeepData) {
|
||||
if (now - bd->last_use > Config.BSKeepData) {
|
||||
if (bd->next)
|
||||
bd->next->prev = bd->prev;
|
||||
if (bd->prev)
|
||||
@@ -689,38 +571,31 @@ static BanData *get_ban_data(Channel * c, User * u)
|
||||
* Allocates it if necessary.
|
||||
*/
|
||||
|
||||
static UserData *get_user_data(Channel * c, User * u)
|
||||
static UserData *get_user_data(Channel *c, User *u)
|
||||
{
|
||||
struct c_userlist *user;
|
||||
|
||||
if (!c || !u)
|
||||
return NULL;
|
||||
|
||||
for (user = c->users; user; user = user->next) {
|
||||
if (user->user == u) {
|
||||
if (user->ud) {
|
||||
time_t now = time(NULL);
|
||||
for (CUserList::iterator it = c->users.begin(); it != c->users.end(); ++it)
|
||||
{
|
||||
UserContainer *uc = *it;
|
||||
|
||||
/* Checks whether data is obsolete */
|
||||
if (now - user->ud->last_use > BSKeepData) {
|
||||
if (user->ud->lastline)
|
||||
delete [] user->ud->lastline;
|
||||
/* We should not free and realloc, but reset to 0
|
||||
instead. */
|
||||
memset(user->ud, 0, sizeof(UserData));
|
||||
user->ud->last_use = now;
|
||||
}
|
||||
if (uc->user == u)
|
||||
{
|
||||
time_t now = time(NULL);
|
||||
|
||||
return user->ud;
|
||||
} else {
|
||||
user->ud = new UserData;
|
||||
user->ud->last_use = time(NULL);
|
||||
user->ud->lines = 0;
|
||||
user->ud->last_start = 0;
|
||||
user->ud->lastline = NULL;
|
||||
user->ud->times = 0;
|
||||
return user->ud;
|
||||
/* Checks whether data is obsolete */
|
||||
if (now - uc->ud.last_use > Config.BSKeepData)
|
||||
{
|
||||
if (uc->ud.lastline)
|
||||
delete [] uc->ud.lastline;
|
||||
/* We should not free and realloc, but reset to 0
|
||||
instead. */
|
||||
memset(&uc->ud, 0, sizeof(UserData));
|
||||
uc->ud.last_use = now;
|
||||
}
|
||||
|
||||
return &uc->ud;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -736,97 +611,78 @@ void bot_join(ChannelInfo * ci)
|
||||
if (!ci || !ci->c || !ci->bi)
|
||||
return;
|
||||
|
||||
if (BSSmartJoin) {
|
||||
if (Config.BSSmartJoin)
|
||||
{
|
||||
/* We check for bans */
|
||||
if (ci->c->bans && ci->c->bans->count) {
|
||||
char buf[BUFSIZE];
|
||||
const char *av[4];
|
||||
if (ci->c->bans && ci->c->bans->count)
|
||||
{
|
||||
Entry *ban, *next;
|
||||
int ac;
|
||||
|
||||
if (ircdcap->tsmode) {
|
||||
snprintf(buf, BUFSIZE - 1, "%ld", static_cast<long>(time(NULL)));
|
||||
av[0] = ci->c->name;
|
||||
av[1] = buf;
|
||||
av[2] = "-b";
|
||||
ac = 4;
|
||||
} else {
|
||||
av[0] = ci->c->name;
|
||||
av[1] = "-b";
|
||||
ac = 3;
|
||||
}
|
||||
|
||||
for (ban = ci->c->bans->entries; ban; ban = next) {
|
||||
for (ban = ci->c->bans->entries; ban; ban = next)
|
||||
{
|
||||
next = ban->next;
|
||||
if (entry_match
|
||||
(ban, ci->bi->nick, ci->bi->user, ci->bi->host, 0)) {
|
||||
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);
|
||||
if (entry_match(ban, ci->bi->nick.c_str(), ci->bi->user.c_str(), ci->bi->host.c_str(), 0))
|
||||
{
|
||||
ci->c->RemoveMode(NULL, CMODE_BAN, ban->mask);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
std::string Limit;
|
||||
int limit = 0;
|
||||
if (ci->c->GetParam(CMODE_LIMIT, Limit))
|
||||
{
|
||||
limit = atoi(Limit.c_str());
|
||||
}
|
||||
|
||||
/* Should we be invited? */
|
||||
if ((ci->c->mode & anope_get_invite_mode())
|
||||
|| (ci->c->limit && ci->c->usercount >= ci->c->limit))
|
||||
ircdproto->SendNoticeChanops(NULL, ci->c->name,
|
||||
"%s invited %s into the channel.",
|
||||
ci->bi->nick, ci->bi->nick);
|
||||
if (ci->c->HasMode(CMODE_INVITE)
|
||||
|| (limit && ci->c->users.size() >= limit))
|
||||
ircdproto->SendNoticeChanops(ci->bi, ci->c,
|
||||
"%s invited %s into the channel.",
|
||||
ci->bi->nick.c_str(), ci->bi->nick.c_str());
|
||||
}
|
||||
ircdproto->SendJoin(ci->bi, ci->c->name.c_str(), ci->c->creation_time);
|
||||
for (std::list<ChannelModeStatus *>::iterator it = BotModes.begin(); it != BotModes.end(); ++it)
|
||||
{
|
||||
ci->c->SetMode(ci->bi, *it, ci->bi->nick, false);
|
||||
}
|
||||
ircdproto->SendJoin(ci->bi, ci->c->name, ci->c->creation_time);
|
||||
ircdproto->SendBotOp(ci->bi->nick, ci->c->name);
|
||||
FOREACH_MOD(I_OnBotJoin, OnBotJoin(ci, ci->bi));
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/* This makes a ban if the user has to have one. In every cases it increments
|
||||
the kick count for the user. */
|
||||
|
||||
static void check_ban(ChannelInfo * ci, User * u, int ttbtype)
|
||||
/** Check if a user should be banned by botserv
|
||||
* @param ci The channel the user is on
|
||||
* @param u The user
|
||||
* @param ttbtype The type of bot kicker the user should be checked against
|
||||
*/
|
||||
static void check_ban(ChannelInfo *ci, User *u, int ttbtype)
|
||||
{
|
||||
BanData *bd = get_ban_data(ci->c, u);
|
||||
|
||||
if (!bd)
|
||||
return;
|
||||
|
||||
/* Don't ban ulines */
|
||||
if (is_ulined(u->server->name))
|
||||
return;
|
||||
|
||||
bd->ttb[ttbtype]++;
|
||||
if (ci->ttb[ttbtype] && bd->ttb[ttbtype] >= ci->ttb[ttbtype])
|
||||
{
|
||||
/* Should not use == here because bd->ttb[ttbtype] could possibly be > ci->ttb[ttbtype]
|
||||
* if the TTB was changed after it was not set (0) before and the user had already been
|
||||
* kicked a few times. Bug #1056 - Adam */
|
||||
const char *av[4];
|
||||
int ac;
|
||||
char mask[BUFSIZE];
|
||||
char buf[BUFSIZE];
|
||||
|
||||
bd->ttb[ttbtype] = 0;
|
||||
|
||||
get_idealban(ci, u, mask, sizeof(mask));
|
||||
|
||||
if (ircdcap->tsmode) {
|
||||
snprintf(buf, BUFSIZE - 1, "%ld", static_cast<long>(time(NULL)));
|
||||
av[0] = ci->name;
|
||||
av[1] = buf;
|
||||
av[2] = "+b";
|
||||
av[3] = mask;
|
||||
ac = 4;
|
||||
} else {
|
||||
av[0] = ci->name;
|
||||
av[1] = "+b";
|
||||
av[2] = mask;
|
||||
ac = 3;
|
||||
}
|
||||
|
||||
ircdproto->SendMode(ci->bi, ci->name, "+b %s", mask);
|
||||
do_cmode(ci->bi->nick, ac, av);
|
||||
if (ci->c)
|
||||
ci->c->SetMode(NULL, CMODE_BAN, mask);
|
||||
FOREACH_MOD(I_OnBotBan, OnBotBan(u, ci, mask));
|
||||
}
|
||||
}
|
||||
@@ -840,7 +696,6 @@ static void bot_kick(ChannelInfo * ci, User * u, int message, ...)
|
||||
va_list args;
|
||||
char buf[1024];
|
||||
const char *fmt;
|
||||
const char *av[3];
|
||||
|
||||
if (!ci || !ci->bi || !ci->c || !u)
|
||||
return;
|
||||
@@ -852,190 +707,108 @@ static void bot_kick(ChannelInfo * ci, User * u, int message, ...)
|
||||
vsnprintf(buf, sizeof(buf), fmt, args);
|
||||
va_end(args);
|
||||
|
||||
av[0] = ci->name;
|
||||
av[1] = u->nick;
|
||||
av[2] = buf;
|
||||
ircdproto->SendKick(ci->bi, av[0], av[1], "%s", av[2]);
|
||||
do_kick(ci->bi->nick, 3, av);
|
||||
FOREACH_MOD(I_OnBotKick, OnBotKick(u, ci, buf));
|
||||
ci->c->Kick(ci->bi, u, "%s", buf);
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/* Makes a simple ban and kicks the target */
|
||||
|
||||
void bot_raw_ban(User * requester, ChannelInfo * ci, char *nick,
|
||||
const char *reason)
|
||||
void bot_raw_ban(User * requester, ChannelInfo * ci, char *nick, const char *reason)
|
||||
{
|
||||
int ac;
|
||||
const char *av[4];
|
||||
const char *kav[4]; // seperate as not everything is constified XXX -- w00t
|
||||
char mask[BUFSIZE];
|
||||
char buf[BUFSIZE];
|
||||
User *u = finduser(nick);
|
||||
|
||||
if (!u)
|
||||
return;
|
||||
|
||||
if (ircd->protectedumode) {
|
||||
if ((ModeManager::FindUserModeByName(UMODE_PROTECTED)))
|
||||
{
|
||||
if (is_protected(u) && (requester != u)) {
|
||||
ircdproto->SendPrivmsg(ci->bi, ci->name, "%s",
|
||||
getstring(ACCESS_DENIED));
|
||||
ircdproto->SendPrivmsg(ci->bi, ci->name.c_str(), "%s", getstring(ACCESS_DENIED));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if ((ci->flags & CI_PEACE) && stricmp(requester->nick, nick)
|
||||
&& (get_access(u, ci) >= get_access(requester, ci)))
|
||||
if (ci->HasFlag(CI_PEACE) && stricmp(requester->nick.c_str(), nick) && (get_access(u, ci) >= get_access(requester, ci)))
|
||||
return;
|
||||
|
||||
if (ircd->except) {
|
||||
if (ModeManager::FindChannelModeByName(CMODE_EXCEPT))
|
||||
{
|
||||
if (is_excepted(ci, u) == 1) {
|
||||
ircdproto->SendPrivmsg(ci->bi, ci->name, "%s",
|
||||
getstring(BOT_EXCEPT));
|
||||
ircdproto->SendPrivmsg(ci->bi, ci->name.c_str(), "%s", getstring(BOT_EXCEPT));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
get_idealban(ci, u, mask, sizeof(mask));
|
||||
|
||||
if (ircdcap->tsmode) {
|
||||
snprintf(buf, BUFSIZE - 1, "%ld", static_cast<long>(time(NULL)));
|
||||
av[0] = ci->name;
|
||||
av[1] = buf;
|
||||
av[2] = "+b";
|
||||
av[3] = mask;
|
||||
ac = 4;
|
||||
} else {
|
||||
av[0] = ci->name;
|
||||
av[1] = "+b";
|
||||
av[2] = mask;
|
||||
ac = 3;
|
||||
}
|
||||
|
||||
ircdproto->SendMode(ci->bi, ci->name, "+b %s", mask);
|
||||
do_cmode(ci->bi->nick, ac, av);
|
||||
|
||||
kav[0] = ci->name;
|
||||
kav[1] = nick;
|
||||
|
||||
if (!reason) {
|
||||
kav[2] = ci->bi->nick;
|
||||
} else {
|
||||
if (strlen(reason) > 200)
|
||||
(*const_cast<char **>(&reason))[200] = '\0'; // Unsafe cast -- will review later -- CyberBotX
|
||||
kav[2] = reason;
|
||||
}
|
||||
ci->c->SetMode(NULL, CMODE_BAN, mask);
|
||||
|
||||
/* Check if we need to do a signkick or not -GD */
|
||||
if ((ci->flags & CI_SIGNKICK)
|
||||
|| ((ci->flags & CI_SIGNKICK_LEVEL)
|
||||
&& !check_access(requester, ci, CA_SIGNKICK)))
|
||||
ircdproto->SendKick(ci->bi, kav[0], kav[1], "%s (%s)", kav[2],
|
||||
requester->nick);
|
||||
if (ci->HasFlag(CI_SIGNKICK) || (ci->HasFlag(CI_SIGNKICK_LEVEL) && !check_access(requester, ci, CA_SIGNKICK)))
|
||||
ci->c->Kick(ci->bi, u, "%s (%s)", reason ? reason : ci->bi->nick.c_str(), requester->nick.c_str());
|
||||
else
|
||||
ircdproto->SendKick(ci->bi, kav[0], kav[1], "%s", kav[2]);
|
||||
|
||||
do_kick(ci->bi->nick, 3, kav);
|
||||
FOREACH_MOD(I_OnBotKick, OnBotKick(u, ci, kav[2]));
|
||||
ci->c->Kick(ci->bi, u, "%s", reason ? reason : ci->bi->nick.c_str());
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/* Makes a kick with a "dynamic" reason ;) */
|
||||
|
||||
void bot_raw_kick(User * requester, ChannelInfo * ci, char *nick,
|
||||
const char *reason)
|
||||
void bot_raw_kick(User * requester, ChannelInfo * ci, char *nick, const char *reason)
|
||||
{
|
||||
const char *av[3];
|
||||
User *u = finduser(nick);
|
||||
|
||||
if (!u || !is_on_chan(ci->c, u))
|
||||
if (!u || !ci->c->FindUser(u))
|
||||
return;
|
||||
|
||||
if (ircd->protectedumode) {
|
||||
if ((ModeManager::FindUserModeByName(UMODE_PROTECTED)))
|
||||
{
|
||||
if (is_protected(u) && (requester != u)) {
|
||||
ircdproto->SendPrivmsg(ci->bi, ci->name, "%s",
|
||||
getstring(ACCESS_DENIED));
|
||||
ircdproto->SendPrivmsg(ci->bi, ci->name.c_str(), "%s", getstring(ACCESS_DENIED));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if ((ci->flags & CI_PEACE) && stricmp(requester->nick, nick)
|
||||
&& (get_access(u, ci) >= get_access(requester, ci)))
|
||||
if (ci->HasFlag(CI_PEACE) && stricmp(requester->nick.c_str(), nick) && (get_access(u, ci) >= get_access(requester, ci)))
|
||||
return;
|
||||
|
||||
av[0] = ci->name;
|
||||
av[1] = nick;
|
||||
|
||||
if (!reason) {
|
||||
av[2] = ci->bi->nick;
|
||||
} else {
|
||||
if (strlen(reason) > 200)
|
||||
(*const_cast<char **>(&reason))[200] = '\0'; // Unsafe cast -- will review later -- CyberBotX
|
||||
av[2] = reason;
|
||||
}
|
||||
|
||||
if ((ci->flags & CI_SIGNKICK)
|
||||
|| ((ci->flags & CI_SIGNKICK_LEVEL)
|
||||
&& !check_access(requester, ci, CA_SIGNKICK)))
|
||||
ircdproto->SendKick(ci->bi, av[0], av[1], "%s (%s)", av[2],
|
||||
requester->nick);
|
||||
if (ci->HasFlag(CI_SIGNKICK) || (ci->HasFlag(CI_SIGNKICK_LEVEL) && !check_access(requester, ci, CA_SIGNKICK)))
|
||||
ci->c->Kick(ci->bi, u, "%s (%s)", reason ? reason : ci->bi->nick.c_str(), requester->nick.c_str());
|
||||
else
|
||||
ircdproto->SendKick(ci->bi, av[0], av[1], "%s", av[2]);
|
||||
do_kick(ci->bi->nick, 3, av);
|
||||
FOREACH_MOD(I_OnBotKick, OnBotKick(u, ci, av[2]));
|
||||
ci->c->Kick(ci->bi, u, "%s", reason ? reason : ci->bi->nick.c_str());
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/* Makes a mode operation on a channel for a nick */
|
||||
|
||||
void bot_raw_mode(User * requester, ChannelInfo * ci, const char *mode,
|
||||
char *nick)
|
||||
void bot_raw_mode(User * requester, ChannelInfo * ci, const char *mode, char *nick)
|
||||
{
|
||||
const char *av[4];
|
||||
int ac;
|
||||
char buf[BUFSIZE];
|
||||
User *u;
|
||||
|
||||
*buf = '\0';
|
||||
u = finduser(nick);
|
||||
|
||||
if (!u || !is_on_chan(ci->c, u))
|
||||
if (!u || !ci->c->FindUser(u))
|
||||
return;
|
||||
|
||||
snprintf(buf, BUFSIZE - 1, "%ld", static_cast<long>(time(NULL)));
|
||||
|
||||
if (ircd->protectedumode) {
|
||||
if ((ModeManager::FindUserModeByName(UMODE_PROTECTED))) {
|
||||
if (is_protected(u) && *mode == '-' && (requester != u)) {
|
||||
ircdproto->SendPrivmsg(ci->bi, ci->name, "%s",
|
||||
getstring(ACCESS_DENIED));
|
||||
ircdproto->SendPrivmsg(ci->bi, ci->name.c_str(), "%s", getstring(ACCESS_DENIED));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (*mode == '-' && (ci->flags & CI_PEACE)
|
||||
&& stricmp(requester->nick, nick)
|
||||
&& (get_access(u, ci) >= get_access(requester, ci)))
|
||||
if (*mode == '-' && ci->HasFlag(CI_PEACE)
|
||||
&& stricmp(requester->nick.c_str(), nick) && (get_access(u, ci) >= get_access(requester, ci)))
|
||||
return;
|
||||
|
||||
if (ircdcap->tsmode) {
|
||||
av[0] = ci->name;
|
||||
av[1] = buf;
|
||||
av[2] = mode;
|
||||
av[3] = nick;
|
||||
ac = 4;
|
||||
ircdproto->SendMode(ci->bi, av[0], "%s %s", av[2], av[3]);
|
||||
} else {
|
||||
av[0] = ci->name;
|
||||
av[1] = mode;
|
||||
av[2] = nick;
|
||||
ac = 3;
|
||||
ircdproto->SendMode(ci->bi, av[0], "%s %s", av[1], av[2]);
|
||||
}
|
||||
|
||||
do_cmode(ci->bi->nick, ac, av);
|
||||
ci->c->SetModes(NULL, "%s %s", mode, nick);
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
+1233
-1633
File diff suppressed because it is too large
Load Diff
+405
-1467
File diff suppressed because it is too large
Load Diff
+4
-20
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2008-2009 Robin Burchell <w00t@inspircd.org>
|
||||
* Copyright (C) 2008-2009 Anope Team <team@anope.org>
|
||||
* Copyright (C) 2008-2010 Robin Burchell <w00t@inspircd.org>
|
||||
* Copyright (C) 2008-2010 Anope Team <team@anope.org>
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
@@ -13,7 +13,6 @@
|
||||
|
||||
Command::Command(const std::string &sname, size_t min_params, size_t max_params, const std::string &spermission) : MaxParams(max_params), MinParams(min_params), name(sname), permission(spermission)
|
||||
{
|
||||
this->flags = 0;
|
||||
this->core = 0;
|
||||
this->mod_name = NULL;
|
||||
this->service = NULL;
|
||||
@@ -30,26 +29,11 @@ Command::~Command()
|
||||
}
|
||||
}
|
||||
|
||||
CommandReturn Command::Execute(User *u, std::vector<ci::string> &) { return MOD_CONT; }
|
||||
CommandReturn Command::Execute(User *u, const std::vector<ci::string> &) { return MOD_CONT; }
|
||||
|
||||
bool Command::OnHelp(User *u, const ci::string &subcommand) { return false; }
|
||||
|
||||
void Command::OnSyntaxError(User *u) { }
|
||||
|
||||
void Command::SetFlag(CommandFlags flag)
|
||||
{
|
||||
this->flags |= flag;
|
||||
}
|
||||
|
||||
void Command::UnsetFlag(CommandFlags flag)
|
||||
{
|
||||
this->flags &= ~flag;
|
||||
}
|
||||
|
||||
bool Command::HasFlag(CommandFlags flag) const
|
||||
{
|
||||
return this->flags & flag;
|
||||
}
|
||||
void Command::OnSyntaxError(User *u, const ci::string &subcommand) { }
|
||||
|
||||
void Command::SetPermission(const std::string &reststr)
|
||||
{
|
||||
|
||||
+29
-39
@@ -1,6 +1,6 @@
|
||||
/* Routines for looking up commands in a *Serv command list.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2010 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -35,7 +35,6 @@ Command *lookup_cmd(Command * list, char *cmd)
|
||||
return c;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
@@ -49,44 +48,33 @@ Command *lookup_cmd(Command * list, char *cmd)
|
||||
* @param cmd Command
|
||||
* @return void
|
||||
*/
|
||||
void mod_run_cmd(char *service, User * u, CommandHash * cmdTable[], const char *cmd)
|
||||
void mod_run_cmd(const std::string &service, User * u, CommandHash * cmdTable[], const char *cmd)
|
||||
{
|
||||
Command *c = findCommand(cmdTable, cmd);
|
||||
int retVal = 0;
|
||||
int retVal = MOD_CONT;
|
||||
ChannelInfo *ci;
|
||||
EventReturn MOD_RESULT;
|
||||
|
||||
FOREACH_RESULT(I_OnPreCommandRun, OnPreCommandRun(service, u, cmd, c));
|
||||
if (MOD_RESULT == EVENT_STOP)
|
||||
return;
|
||||
|
||||
if (!c)
|
||||
{
|
||||
if ((!checkDefCon(DEFCON_SILENT_OPER_ONLY)) || is_oper(u))
|
||||
{
|
||||
notice_lang(service, u, UNKNOWN_COMMAND_HELP, cmd, service);
|
||||
}
|
||||
notice_lang(service, u, UNKNOWN_COMMAND_HELP, cmd, service.c_str());
|
||||
return;
|
||||
}
|
||||
|
||||
if ((checkDefCon(DEFCON_OPER_ONLY) || checkDefCon(DEFCON_SILENT_OPER_ONLY)) && !is_oper(u))
|
||||
{
|
||||
if (!checkDefCon(DEFCON_SILENT_OPER_ONLY))
|
||||
{
|
||||
notice_lang(service, u, OPER_DEFCON_DENIED);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (!c->HasFlag(CFLAG_ALLOW_UNREGISTERED))
|
||||
{
|
||||
// Command requires registered users only
|
||||
if (!nick_identified(u))
|
||||
if (!u->IsIdentified())
|
||||
{
|
||||
notice_lang(service, u, NICK_IDENTIFY_REQUIRED, s_NickServ);
|
||||
alog("Access denied for unregistered user %s with service %s and command %s", u->nick, service, cmd);
|
||||
notice_lang(service, u, NICK_IDENTIFY_REQUIRED, Config.s_NickServ);
|
||||
Alog() << "Access denied for unregistered user " << u->nick << " with service " << service << " and command " << cmd;
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Check whether or not access string is empty
|
||||
}
|
||||
|
||||
std::vector<ci::string> params;
|
||||
std::string curparam;
|
||||
@@ -116,11 +104,10 @@ void mod_run_cmd(char *service, User * u, CommandHash * cmdTable[], const char *
|
||||
|
||||
if (params.size() < c->MinParams)
|
||||
{
|
||||
c->OnSyntaxError(u);
|
||||
c->OnSyntaxError(u, !params.empty() ? params[params.size() - 1] : "");
|
||||
return;
|
||||
}
|
||||
|
||||
EventReturn MOD_RESULT = EVENT_CONTINUE;
|
||||
FOREACH_RESULT(I_OnPreCommand, OnPreCommand(u, c->service, c->name.c_str(), params));
|
||||
if (MOD_RESULT == EVENT_STOP)
|
||||
return;
|
||||
@@ -131,18 +118,18 @@ void mod_run_cmd(char *service, User * u, CommandHash * cmdTable[], const char *
|
||||
{
|
||||
if ((ci = cs_findchan(params[0].c_str())))
|
||||
{
|
||||
if ((ci->flags & CI_FORBIDDEN) && (!c->HasFlag(CFLAG_ALLOW_FORBIDDEN)))
|
||||
if ((ci->HasFlag(CI_FORBIDDEN)) && (!c->HasFlag(CFLAG_ALLOW_FORBIDDEN)))
|
||||
{
|
||||
notice_lang(service, u, CHAN_X_FORBIDDEN, ci->name);
|
||||
alog("Access denied for user %s with service %s and command %s because of FORBIDDEN channel %s",
|
||||
u->nick, service, cmd, ci->name);
|
||||
notice_lang(service, u, CHAN_X_FORBIDDEN, ci->name.c_str());
|
||||
Alog() << "Access denied for user " << u->nick << " with service " << service
|
||||
<< " and command " << cmd << " because of FORBIDDEN channel " << ci->name;
|
||||
return;
|
||||
}
|
||||
else if ((ci->flags & CI_SUSPENDED) && (!c->HasFlag(CFLAG_ALLOW_SUSPENDED)))
|
||||
else if ((ci->HasFlag(CI_SUSPENDED)) && (!c->HasFlag(CFLAG_ALLOW_SUSPENDED)))
|
||||
{
|
||||
notice_lang(service, u, CHAN_X_FORBIDDEN, ci->name);
|
||||
alog("Access denied for user %s with service %s and command %s because of SUSPENDED channel %s",
|
||||
u->nick, service, cmd, ci->name);
|
||||
notice_lang(service, u, CHAN_X_FORBIDDEN, ci->name.c_str());
|
||||
Alog() << "Access denied for user " << u->nick << " with service " << service
|
||||
<<" and command " << cmd << " because of SUSPENDED channel " << ci->name;
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -163,10 +150,10 @@ void mod_run_cmd(char *service, User * u, CommandHash * cmdTable[], const char *
|
||||
// If the command requires a permission, and they aren't registered or don't have the required perm, DENIED
|
||||
if (!c->permission.empty())
|
||||
{
|
||||
if (!u->nc->HasPriv(c->permission) && !u->nc->HasCommand(c->permission))
|
||||
if (!u->Account()->HasCommand(c->permission))
|
||||
{
|
||||
notice_lang(service, u, ACCESS_DENIED);
|
||||
alog("Access denied for user %s with service %s and command %s", u->nick, service, cmd);
|
||||
Alog() << "Access denied for user " << u->nick << " with service " << service << " and command " << cmd;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -174,7 +161,10 @@ void mod_run_cmd(char *service, User * u, CommandHash * cmdTable[], const char *
|
||||
|
||||
retVal = c->Execute(u, params);
|
||||
|
||||
FOREACH_MOD(I_OnPostCommand, OnPostCommand(u, c->service, c->name.c_str(), params));
|
||||
if (retVal == MOD_CONT)
|
||||
{
|
||||
FOREACH_MOD(I_OnPostCommand, OnPostCommand(u, c->service, c->name.c_str(), params));
|
||||
}
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
@@ -208,10 +198,10 @@ void mod_help_cmd(char *service, User * u, CommandHash * cmdTable[], const char
|
||||
notice_lang(service, u, COMMAND_REQUIRES_PERM, c->permission.c_str());
|
||||
|
||||
/* User isn't identified and needs to be to use this command */
|
||||
if (!c->HasFlag(CFLAG_ALLOW_UNREGISTERED) && !nick_identified(u))
|
||||
if (!c->HasFlag(CFLAG_ALLOW_UNREGISTERED) && !u->IsIdentified())
|
||||
notice_lang(service, u, COMMAND_IDENTIFY_REQUIRED);
|
||||
/* User doesn't have the proper permission to use this command */
|
||||
else if (!c->permission.empty() && (!u->nc || (!u->nc->HasCommand(c->permission))))
|
||||
else if (!c->permission.empty() && (!u->Account() || (!u->Account()->HasCommand(c->permission))))
|
||||
notice_lang(service, u, COMMAND_CANNOT_USE);
|
||||
/* User can use this command */
|
||||
else
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
/* Compatibility routines.
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2010 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
|
||||
+355
-603
File diff suppressed because it is too large
Load Diff
@@ -2,7 +2,7 @@
|
||||
* | Inspire Internet Relay Chat Daemon |
|
||||
* +------------------------------------+
|
||||
*
|
||||
* InspIRCd: (C) 2002-2009 InspIRCd Development Team
|
||||
* InspIRCd: (C) 2002-2010 InspIRCd Development Team
|
||||
* See: http://www.inspircd.org/wiki/index.php/Credits
|
||||
*
|
||||
* This program is free but copyrighted software; see
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
#include "services.h"
|
||||
|
||||
ConfigReader::ConfigReader() : data(&serverConfig.config_data), errorlog(new std::ostringstream(std::stringstream::in | std::stringstream::out)), privatehash(false), error(CONF_NO_ERROR)
|
||||
ConfigReader::ConfigReader() : data(&Config.config_data), errorlog(new std::ostringstream(std::stringstream::in | std::stringstream::out)), privatehash(false), error(CONF_NO_ERROR)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ ConfigReader::~ConfigReader()
|
||||
|
||||
ConfigReader::ConfigReader(const std::string &filename) : data(new ConfigDataHash), errorlog(new std::ostringstream(std::stringstream::in | std::stringstream::out)), privatehash(true), error(CONF_NO_ERROR)
|
||||
{
|
||||
serverConfig.ClearStack();
|
||||
Config.ClearStack();
|
||||
}
|
||||
|
||||
std::string ConfigReader::ReadValue(const std::string &tag, const std::string &name, const std::string &default_value, int index, bool allow_linefeeds)
|
||||
@@ -35,7 +35,7 @@ std::string ConfigReader::ReadValue(const std::string &tag, const std::string &n
|
||||
/* Don't need to strlcpy() tag and name anymore, ReadConf() takes const char* */
|
||||
std::string result;
|
||||
|
||||
if (!serverConfig.ConfValue(*this->data, tag, name, default_value, index, result, allow_linefeeds))
|
||||
if (!Config.ConfValue(*this->data, tag, name, default_value, index, result, allow_linefeeds))
|
||||
this->error = CONF_VALUE_NOT_FOUND;
|
||||
|
||||
return result;
|
||||
@@ -48,7 +48,7 @@ std::string ConfigReader::ReadValue(const std::string &tag, const std::string &n
|
||||
|
||||
bool ConfigReader::ReadFlag(const std::string &tag, const std::string &name, const std::string &default_value, int index)
|
||||
{
|
||||
return serverConfig.ConfValueBool(*this->data, tag, name, default_value, index);
|
||||
return Config.ConfValueBool(*this->data, tag, name, default_value, index);
|
||||
}
|
||||
|
||||
bool ConfigReader::ReadFlag(const std::string &tag, const std::string &name, int index)
|
||||
@@ -60,7 +60,7 @@ int ConfigReader::ReadInteger(const std::string &tag, const std::string &name, c
|
||||
{
|
||||
int result;
|
||||
|
||||
if (!serverConfig.ConfValueInteger(*this->data, tag, name, default_value, index, result))
|
||||
if (!Config.ConfValueInteger(*this->data, tag, name, default_value, index, result))
|
||||
{
|
||||
this->error = CONF_VALUE_NOT_FOUND;
|
||||
return 0;
|
||||
@@ -89,17 +89,17 @@ long ConfigReader::GetError()
|
||||
|
||||
void ConfigReader::DumpErrors(bool bail)
|
||||
{
|
||||
serverConfig.ReportConfigError(this->errorlog->str(), bail);
|
||||
Config.ReportConfigError(this->errorlog->str(), bail);
|
||||
}
|
||||
|
||||
int ConfigReader::Enumerate(const std::string &tag)
|
||||
{
|
||||
return serverConfig.ConfValueEnum(*this->data, tag);
|
||||
return Config.ConfValueEnum(*this->data, tag);
|
||||
}
|
||||
|
||||
int ConfigReader::EnumerateValues(const std::string &tag, int index)
|
||||
{
|
||||
return serverConfig.ConfVarEnum(*this->data, tag, index);
|
||||
return Config.ConfVarEnum(*this->data, tag, index);
|
||||
}
|
||||
|
||||
bool ConfigReader::Verify()
|
||||
|
||||
@@ -27,10 +27,11 @@ foreach(SRC ${CORE_SRCS})
|
||||
if(TEMP_INCLUDES)
|
||||
append_to_list(EXTRA_INCLUDES ${TEMP_INCLUDES})
|
||||
endif(TEMP_INCLUDES)
|
||||
# For Visual Studio only, include win32_memory.cpp to the list of sources, required to override Visual Studio's overrides of the new/delete operators
|
||||
# For Visual Studio only, include win32_memory static library, required to override Visual Studio's overrides of the new/delete operators
|
||||
if(MSVC)
|
||||
append_to_list(SRC ${Anope_SOURCE_DIR}/src/win32_memory.cpp)
|
||||
set_source_files_properties(${Anope_SOURCE_DIR}/src/win32_memory.cpp LANGUAGE CXX COMPILE_FLAGS "${CXXFLAGS}")
|
||||
set(WIN32_MEMORY win32_memory)
|
||||
else(MSVC)
|
||||
set(WIN32_MEMORY)
|
||||
endif(MSVC)
|
||||
# Generate the module and set it's linker flags, also set it to depend on the main Anope executable to be built beforehand
|
||||
add_library(${SO} MODULE ${SRC})
|
||||
@@ -38,7 +39,7 @@ foreach(SRC ${CORE_SRCS})
|
||||
add_dependencies(${SO} ${PROGRAM_NAME})
|
||||
# For Windows only, have the module link to the export library of Anope as well as the wsock32 library (most of the modules probably don't need this, but this is to be on the safe side), also set it's version
|
||||
if(WIN32)
|
||||
target_link_libraries(${SO} ${PROGRAM_NAME} wsock32)
|
||||
target_link_libraries(${SO} ${PROGRAM_NAME} wsock32 ${WIN32_MEMORY})
|
||||
set_target_properties(${PROGRAM_NAME} PROPERTIES VERSION "${VERSION_DOTTED}")
|
||||
endif(WIN32)
|
||||
# Set the module to be installed to the module directory under the data directory
|
||||
|
||||
+6
-4
@@ -21,11 +21,13 @@ install:
|
||||
|
||||
distclean: spotless
|
||||
|
||||
%.so: %.c
|
||||
$(MAKEBIN) $(CC) ${CFLAGS} ${CDEFS} ${MODULEFLAGS} -I../${INCLUDEDIR} -o $*.so $*.c
|
||||
.SUFFIXES: .c .cpp .so
|
||||
|
||||
%.so: %.cpp
|
||||
$(MAKEBIN) $(CC) ${CFLAGS} ${CDEFS} ${MODULEFLAGS} -I../${INCLUDEDIR} -o $*.so $*.cpp
|
||||
.c.so:
|
||||
$(MAKEBIN) $(CC) ${CFLAGS} ${CDEFS} ${MODULEFLAGS} -I../${INCLUDEDIR} -o $@ $<
|
||||
|
||||
.cpp.so:
|
||||
$(MAKEBIN) $(CC) ${CFLAGS} ${CDEFS} ${MODULEFLAGS} -I../${INCLUDEDIR} -o $@ $<
|
||||
|
||||
subs:
|
||||
@for i in $(SUBS); do \
|
||||
|
||||
+19
-16
@@ -1,6 +1,6 @@
|
||||
/* BotServ core functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2010 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -22,47 +22,48 @@ class CommandBSAct : public Command
|
||||
{
|
||||
}
|
||||
|
||||
CommandReturn Execute(User *u, std::vector<ci::string> ¶ms)
|
||||
CommandReturn Execute(User *u, const std::vector<ci::string> ¶ms)
|
||||
{
|
||||
ChannelInfo *ci = cs_findchan(params[0].c_str());
|
||||
ci::string message = params[1];
|
||||
|
||||
if (!check_access(u, ci, CA_SAY))
|
||||
{
|
||||
notice_lang(s_BotServ, u, ACCESS_DENIED);
|
||||
notice_lang(Config.s_BotServ, u, ACCESS_DENIED);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
if (!ci->bi)
|
||||
{
|
||||
notice_help(s_BotServ, u, BOT_NOT_ASSIGNED);
|
||||
notice_help(Config.s_BotServ, u, BOT_NOT_ASSIGNED);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
if (!ci->c || ci->c->usercount < BSMinUsers)
|
||||
if (!ci->c || ci->c->users.size() < Config.BSMinUsers)
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_NOT_ON_CHANNEL, ci->name);
|
||||
notice_lang(Config.s_BotServ, u, BOT_NOT_ON_CHANNEL, ci->name.c_str());
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
size_t i = 0;
|
||||
while ((i = params[1].find_first_of("\001"), i) && i != std::string::npos)
|
||||
params[1].erase(i, 1);
|
||||
while ((i = message.find_first_of("\001"), i) && i != std::string::npos)
|
||||
message.erase(i, 1);
|
||||
|
||||
ircdproto->SendAction(ci->bi, ci->name, "%s", params[1].c_str());
|
||||
ircdproto->SendAction(ci->bi, ci->name.c_str(), "%s", message.c_str());
|
||||
ci->bi->lastmsg = time(NULL);
|
||||
if (LogBot && LogChannel && logchan && !debug && findchan(LogChannel))
|
||||
ircdproto->SendPrivmsg(ci->bi, LogChannel, "ACT %s %s %s", u->nick, ci->name, params[1].c_str());
|
||||
if (Config.LogBot && Config.LogChannel && LogChan && !debug && findchan(Config.LogChannel))
|
||||
ircdproto->SendPrivmsg(ci->bi, Config.LogChannel, "ACT %s %s %s", u->nick.c_str(), ci->name.c_str(), message.c_str());
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
void OnSyntaxError(User *u)
|
||||
void OnSyntaxError(User *u, const ci::string &subcommand)
|
||||
{
|
||||
syntax_error(s_BotServ, u, "ACT", BOT_ACT_SYNTAX);
|
||||
syntax_error(Config.s_BotServ, u, "ACT", BOT_ACT_SYNTAX);
|
||||
}
|
||||
|
||||
bool OnHelp(User *u, const ci::string &subcommand)
|
||||
{
|
||||
notice_help(s_BotServ, u, BOT_HELP_ACT);
|
||||
notice_help(Config.s_BotServ, u, BOT_HELP_ACT);
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -76,10 +77,12 @@ class BSAct : public Module
|
||||
this->SetVersion("$Id$");
|
||||
this->SetType(CORE);
|
||||
this->AddCommand(BOTSERV, new CommandBSAct());
|
||||
|
||||
ModuleManager::Attach(I_OnBotServHelp, this);
|
||||
}
|
||||
void BotServHelp(User *u)
|
||||
void OnBotServHelp(User *u)
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_HELP_CMD_ACT);
|
||||
notice_lang(Config.s_BotServ, u, BOT_HELP_CMD_ACT);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
+18
-16
@@ -1,6 +1,6 @@
|
||||
/* BotServ core functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2010 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -22,7 +22,7 @@ class CommandBSAssign : public Command
|
||||
{
|
||||
}
|
||||
|
||||
CommandReturn Execute(User *u, std::vector<ci::string> ¶ms)
|
||||
CommandReturn Execute(User *u, const std::vector<ci::string> ¶ms)
|
||||
{
|
||||
const char *chan = params[0].c_str();
|
||||
const char *nick = params[1].c_str();
|
||||
@@ -31,50 +31,50 @@ class CommandBSAssign : public Command
|
||||
|
||||
if (readonly)
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_ASSIGN_READONLY);
|
||||
notice_lang(Config.s_BotServ, u, BOT_ASSIGN_READONLY);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
if (!(bi = findbot(nick)))
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_DOES_NOT_EXIST, nick);
|
||||
notice_lang(Config.s_BotServ, u, BOT_DOES_NOT_EXIST, nick);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
ci = cs_findchan(chan);
|
||||
|
||||
if ((ci->botflags & BS_NOBOT) || (!check_access(u, ci, CA_ASSIGN) && !u->nc->HasPriv("botserv/administration")))
|
||||
if (ci->botflags.HasFlag(BS_NOBOT) || (!check_access(u, ci, CA_ASSIGN) && !u->Account()->HasPriv("botserv/administration")))
|
||||
{
|
||||
notice_lang(s_BotServ, u, ACCESS_DENIED);
|
||||
notice_lang(Config.s_BotServ, u, ACCESS_DENIED);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
if (bi->flags & BI_PRIVATE && !u->nc->HasCommand("botserv/assign/private"))
|
||||
if (bi->HasFlag(BI_PRIVATE) && !u->Account()->HasCommand("botserv/assign/private"))
|
||||
{
|
||||
notice_lang(s_BotServ, u, ACCESS_DENIED);
|
||||
notice_lang(Config.s_BotServ, u, ACCESS_DENIED);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
if ((ci->bi) && (stricmp(ci->bi->nick, nick) == 0))
|
||||
if (ci->bi && ci::string(ci->bi->nick.c_str()) == nick)
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_ASSIGN_ALREADY, ci->bi->nick, chan);
|
||||
notice_lang(Config.s_BotServ, u, BOT_ASSIGN_ALREADY, ci->bi->nick.c_str(), chan);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
bi->Assign(u, ci);
|
||||
notice_lang(s_BotServ, u, BOT_ASSIGN_ASSIGNED, bi->nick, ci->name);
|
||||
notice_lang(Config.s_BotServ, u, BOT_ASSIGN_ASSIGNED, bi->nick.c_str(), ci->name.c_str());
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
bool OnHelp(User *u, const ci::string &subcommand)
|
||||
{
|
||||
notice_help(s_BotServ, u, BOT_HELP_ASSIGN);
|
||||
notice_help(Config.s_BotServ, u, BOT_HELP_ASSIGN);
|
||||
return true;
|
||||
}
|
||||
|
||||
void OnSyntaxError(User *u)
|
||||
void OnSyntaxError(User *u, const ci::string &subcommand)
|
||||
{
|
||||
syntax_error(s_BotServ, u, "ASSIGN", BOT_ASSIGN_SYNTAX);
|
||||
syntax_error(Config.s_BotServ, u, "ASSIGN", BOT_ASSIGN_SYNTAX);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -87,10 +87,12 @@ class BSAssign : public Module
|
||||
this->SetVersion("$Id$");
|
||||
this->SetType(CORE);
|
||||
this->AddCommand(BOTSERV, new CommandBSAssign);
|
||||
|
||||
ModuleManager::Attach(I_OnBotServHelp, this);
|
||||
}
|
||||
void BotServHelp(User *u)
|
||||
void OnBotServHelp(User *u)
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_HELP_CMD_ASSIGN);
|
||||
notice_lang(Config.s_BotServ, u, BOT_HELP_CMD_ASSIGN);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
+98
-168
@@ -1,6 +1,6 @@
|
||||
/* BotServ core functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2010 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -22,211 +22,145 @@ int badwords_list_callback(User * u, int num, va_list args);
|
||||
class CommandBSBadwords : public Command
|
||||
{
|
||||
private:
|
||||
CommandReturn DoList(User *u, ChannelInfo *ci, const char *word)
|
||||
CommandReturn DoList(User *u, ChannelInfo *ci, const ci::string &word)
|
||||
{
|
||||
int sent_header = 0;
|
||||
int i = 0;
|
||||
|
||||
if (ci->bwcount == 0)
|
||||
if (!ci->GetBadWordCount())
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_BADWORDS_LIST_EMPTY, ci->name);
|
||||
notice_lang(Config.s_BotServ, u, BOT_BADWORDS_LIST_EMPTY, ci->name.c_str());
|
||||
return MOD_CONT;
|
||||
}
|
||||
if (word && strspn(word, "1234567890,-") == strlen(word))
|
||||
if (!word.empty() && strspn(word.c_str(), "1234567890,-") == word.length())
|
||||
{
|
||||
process_numlist(word, NULL, badwords_list_callback, u, ci, &sent_header);
|
||||
process_numlist(word.c_str(), NULL, badwords_list_callback, u, ci, &sent_header);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = 0; i < ci->bwcount; i++)
|
||||
for (unsigned i = 0; i < ci->GetBadWordCount(); i++)
|
||||
{
|
||||
if (!(ci->badwords[i].in_use))
|
||||
continue;
|
||||
if (word && ci->badwords[i].word
|
||||
&& !Anope::Match(ci->badwords[i].word, word, false))
|
||||
BadWord *badword = ci->GetBadWord(i);
|
||||
|
||||
if (!word.empty() && !Anope::Match(badword->word, word.c_str(), false))
|
||||
continue;
|
||||
|
||||
badwords_list(u, i, ci, &sent_header);
|
||||
}
|
||||
}
|
||||
if (!sent_header)
|
||||
notice_lang(s_BotServ, u, BOT_BADWORDS_NO_MATCH, ci->name);
|
||||
notice_lang(Config.s_BotServ, u, BOT_BADWORDS_NO_MATCH, ci->name.c_str());
|
||||
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
CommandReturn DoAdd(User *u, ChannelInfo *ci, const char *word)
|
||||
CommandReturn DoAdd(User *u, ChannelInfo *ci, const ci::string &word)
|
||||
{
|
||||
char *opt, *pos;
|
||||
int type = BW_ANY;
|
||||
unsigned i = 0;
|
||||
BadWord *bw;
|
||||
size_t pos = word.find_last_of(" ");
|
||||
BadWordType type = BW_ANY;
|
||||
ci::string realword = word;
|
||||
|
||||
if (readonly)
|
||||
if (pos != ci::string::npos)
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_BADWORDS_DISABLED);
|
||||
ci::string opt = ci::string(word, pos + 1);
|
||||
if (!opt.empty())
|
||||
{
|
||||
if (opt == "SINGLE")
|
||||
type = BW_SINGLE;
|
||||
else if (opt == "START")
|
||||
type = BW_START;
|
||||
else if (opt == "END")
|
||||
type = BW_END;
|
||||
}
|
||||
realword = ci::string(word, 0, pos);
|
||||
}
|
||||
|
||||
if (ci->GetBadWordCount() >= Config.BSBadWordsMax)
|
||||
{
|
||||
notice_lang(Config.s_BotServ, u, BOT_BADWORDS_REACHED_LIMIT, Config.BSBadWordsMax);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
pos = strrchr(const_cast<char *>(word), ' '); // XXX - Potentially unsafe cast
|
||||
if (pos)
|
||||
for (unsigned i = 0; i < ci->GetBadWordCount(); ++i)
|
||||
{
|
||||
opt = pos + 1;
|
||||
if (*opt)
|
||||
{
|
||||
if (!stricmp(opt, "SINGLE"))
|
||||
type = BW_SINGLE;
|
||||
else if (!stricmp(opt, "START"))
|
||||
type = BW_START;
|
||||
else if (!stricmp(opt, "END"))
|
||||
type = BW_END;
|
||||
if (type != BW_ANY)
|
||||
*pos = 0;
|
||||
}
|
||||
}
|
||||
BadWord *bw = ci->GetBadWord(i);
|
||||
|
||||
for (bw = ci->badwords, i = 0; i < ci->bwcount; bw++, i++)
|
||||
{
|
||||
if (bw->word && ((BSCaseSensitive && (!strcmp(bw->word, word)))
|
||||
|| (!BSCaseSensitive
|
||||
&& (!stricmp(bw->word, word)))))
|
||||
if (!bw->word.empty() && (Config.BSCaseSensitive && !stricmp(bw->word.c_str(), realword.c_str())
|
||||
|| (!Config.BSCaseSensitive && bw->word == realword.c_str())))
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_BADWORDS_ALREADY_EXISTS,
|
||||
bw->word, ci->name);
|
||||
notice_lang(Config.s_BotServ, u, BOT_BADWORDS_ALREADY_EXISTS, bw->word.c_str(), ci->name.c_str());
|
||||
return MOD_CONT;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < ci->bwcount; i++)
|
||||
{
|
||||
if (!ci->badwords[i].in_use)
|
||||
break;
|
||||
}
|
||||
if (i == ci->bwcount)
|
||||
{
|
||||
if (i < BSBadWordsMax)
|
||||
{
|
||||
ci->bwcount++;
|
||||
ci->badwords =
|
||||
static_cast<BadWord *>(srealloc(ci->badwords, sizeof(BadWord) * ci->bwcount));
|
||||
}
|
||||
else
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_BADWORDS_REACHED_LIMIT,
|
||||
BSBadWordsMax);
|
||||
return MOD_CONT;
|
||||
}
|
||||
}
|
||||
bw = &ci->badwords[i];
|
||||
bw->in_use = 1;
|
||||
bw->word = sstrdup(word);
|
||||
bw->type = type;
|
||||
ci->AddBadWord(realword.c_str(), type);
|
||||
|
||||
notice_lang(Config.s_BotServ, u, BOT_BADWORDS_ADDED, realword.c_str(), ci->name.c_str());
|
||||
|
||||
notice_lang(s_BotServ, u, BOT_BADWORDS_ADDED, bw->word, ci->name);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
CommandReturn DoDelete(User *u, ChannelInfo *ci, const char *word)
|
||||
CommandReturn DoDelete(User *u, ChannelInfo *ci, const ci::string &word)
|
||||
{
|
||||
int deleted = 0, a, b;
|
||||
int i;
|
||||
BadWord *bw;
|
||||
|
||||
/* Special case: is it a number/list? Only do search if it isn't. */
|
||||
if (isdigit(*word) && strspn(word, "1234567890,-") == strlen(word))
|
||||
if (!word.empty() && isdigit(word[0]) && strspn(word.c_str(), "1234567890,-") == word.length())
|
||||
{
|
||||
int count, last = -1;
|
||||
deleted = process_numlist(word, &count, badwords_del_callback, u, ci, &last);
|
||||
int count, deleted, last = -1;
|
||||
deleted = process_numlist(word.c_str(), &count, badwords_del_callback, u, ci, &last);
|
||||
|
||||
if (!deleted)
|
||||
{
|
||||
if (count == 1)
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_BADWORDS_NO_SUCH_ENTRY, last, ci->name);
|
||||
notice_lang(Config.s_BotServ, u, BOT_BADWORDS_NO_SUCH_ENTRY, last, ci->name.c_str());
|
||||
}
|
||||
else
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_BADWORDS_NO_MATCH, ci->name);
|
||||
notice_lang(Config.s_BotServ, u, BOT_BADWORDS_NO_MATCH, ci->name.c_str());
|
||||
}
|
||||
}
|
||||
else if (deleted == 1)
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_BADWORDS_DELETED_ONE, ci->name);
|
||||
notice_lang(Config.s_BotServ, u, BOT_BADWORDS_DELETED_ONE, ci->name.c_str());
|
||||
}
|
||||
else
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_BADWORDS_DELETED_SEVERAL, deleted, ci->name);
|
||||
notice_lang(Config.s_BotServ, u, BOT_BADWORDS_DELETED_SEVERAL, deleted, ci->name.c_str());
|
||||
}
|
||||
|
||||
if (deleted)
|
||||
ci->CleanBadWords();
|
||||
}
|
||||
else
|
||||
{
|
||||
unsigned i;
|
||||
BadWord *badword;
|
||||
|
||||
for (i = 0; i < ci->bwcount; i++)
|
||||
for (i = 0; i < ci->GetBadWordCount(); ++i)
|
||||
{
|
||||
if (ci->badwords[i].in_use && !stricmp(ci->badwords[i].word, word))
|
||||
badword = ci->GetBadWord(i);
|
||||
|
||||
if (badword->word == word)
|
||||
break;
|
||||
}
|
||||
|
||||
if (i == ci->bwcount)
|
||||
if (i == ci->GetBadWordCount())
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_BADWORDS_NOT_FOUND, word, ci->name);
|
||||
notice_lang(Config.s_BotServ, u, BOT_BADWORDS_NOT_FOUND, word.c_str(), ci->name.c_str());
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
ci->EraseBadWord(badword);
|
||||
|
||||
bw = &ci->badwords[i];
|
||||
notice_lang(s_BotServ, u, BOT_BADWORDS_DELETED, bw->word, ci->name);
|
||||
if (bw->word)
|
||||
delete [] bw->word;
|
||||
bw->word = NULL;
|
||||
bw->in_use = 0;
|
||||
deleted = 1;
|
||||
}
|
||||
|
||||
if (deleted) {
|
||||
/* Reordering - DrStein */
|
||||
for (b = 0; b < ci->bwcount; b++) {
|
||||
if (ci->badwords[b].in_use) {
|
||||
for (a = 0; a < ci->bwcount; a++) {
|
||||
if (a > b)
|
||||
break;
|
||||
if (!(ci->badwords[a].in_use)) {
|
||||
ci->badwords[a].in_use = ci->badwords[b].in_use;
|
||||
ci->badwords[a].type = ci->badwords[b].type;
|
||||
if (ci->badwords[b].word) {
|
||||
ci->badwords[a].word = sstrdup(ci->badwords[b].word);
|
||||
delete [] ci->badwords[b].word;
|
||||
}
|
||||
ci->badwords[b].word = NULL;
|
||||
ci->badwords[b].in_use = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/* After reordering only the entries at the end could still be empty.
|
||||
* We ll free the places no longer in use... - Viper */
|
||||
for (i = ci->bwcount - 1; i >= 0; i--) {
|
||||
if (ci->badwords[i].in_use)
|
||||
break;
|
||||
ci->bwcount--;
|
||||
}
|
||||
ci->badwords =
|
||||
static_cast<BadWord *>(srealloc(ci->badwords,sizeof(BadWord) * ci->bwcount));
|
||||
notice_lang(Config.s_BotServ, u, BOT_BADWORDS_DELETED, badword->word.c_str(), ci->name.c_str());
|
||||
}
|
||||
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
CommandReturn DoClear(User *u, ChannelInfo *ci, const char *word)
|
||||
CommandReturn DoClear(User *u, ChannelInfo *ci)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < ci->bwcount; i++)
|
||||
if (ci->badwords[i].word)
|
||||
delete [] ci->badwords[i].word;
|
||||
|
||||
free(ci->badwords);
|
||||
ci->badwords = NULL;
|
||||
ci->bwcount = 0;
|
||||
|
||||
notice_lang(s_BotServ, u, BOT_BADWORDS_CLEAR);
|
||||
ci->ClearBadWords();
|
||||
notice_lang(Config.s_BotServ, u, BOT_BADWORDS_CLEAR);
|
||||
return MOD_CONT;
|
||||
}
|
||||
public:
|
||||
@@ -234,31 +168,31 @@ class CommandBSBadwords : public Command
|
||||
{
|
||||
}
|
||||
|
||||
CommandReturn Execute(User *u, std::vector<ci::string> ¶ms)
|
||||
CommandReturn Execute(User *u, const std::vector<ci::string> ¶ms)
|
||||
{
|
||||
const char *chan = params[0].c_str();
|
||||
ci::string cmd = params[1];
|
||||
const char *word = params.size() > 2 ? params[2].c_str() : NULL;
|
||||
ci::string word = params.size() > 2 ? params[2].c_str() : "";
|
||||
ChannelInfo *ci;
|
||||
bool need_args = cmd == "LIST" || cmd == "CLEAR";
|
||||
|
||||
if (need_args ? 0 : !word)
|
||||
if (!need_args && word.empty())
|
||||
{
|
||||
this->OnSyntaxError(u);
|
||||
this->OnSyntaxError(u, cmd);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
ci = cs_findchan(chan);
|
||||
|
||||
if (!check_access(u, ci, CA_BADWORDS) && (!need_args || !u->nc->HasPriv("botserv/administration")))
|
||||
if (!check_access(u, ci, CA_BADWORDS) && (!need_args || !u->Account()->HasPriv("botserv/administration")))
|
||||
{
|
||||
notice_lang(s_BotServ, u, ACCESS_DENIED);
|
||||
notice_lang(Config.s_BotServ, u, ACCESS_DENIED);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
if (readonly)
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_BADWORDS_DISABLED);
|
||||
notice_lang(Config.s_BotServ, u, BOT_BADWORDS_DISABLED);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
@@ -269,21 +203,22 @@ class CommandBSBadwords : public Command
|
||||
else if (cmd == "LIST")
|
||||
return this->DoList(u, ci, word);
|
||||
else if (cmd == "CLEAR")
|
||||
return this->DoClear(u, ci, word);
|
||||
return this->DoClear(u, ci);
|
||||
else
|
||||
this->OnSyntaxError(u);
|
||||
this->OnSyntaxError(u, "");
|
||||
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
bool OnHelp(User *u, const ci::string &subcommand)
|
||||
{
|
||||
notice_help(s_BotServ, u, BOT_HELP_BADWORDS);
|
||||
notice_help(Config.s_BotServ, u, BOT_HELP_BADWORDS);
|
||||
return true;
|
||||
}
|
||||
|
||||
void OnSyntaxError(User *u)
|
||||
void OnSyntaxError(User *u, const ci::string &subcommand)
|
||||
{
|
||||
syntax_error(s_BotServ, u, "BADWORDS", BOT_BADWORDS_SYNTAX);
|
||||
syntax_error(Config.s_BotServ, u, "BADWORDS", BOT_BADWORDS_SYNTAX);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -296,52 +231,45 @@ class BSBadwords : public Module
|
||||
this->SetVersion("$Id$");
|
||||
this->SetType(CORE);
|
||||
this->AddCommand(BOTSERV, new CommandBSBadwords);
|
||||
|
||||
ModuleManager::Attach(I_OnBotServHelp, this);
|
||||
}
|
||||
void BotServHelp(User *u)
|
||||
void OnBotServHelp(User *u)
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_HELP_CMD_BADWORDS);
|
||||
notice_lang(Config.s_BotServ, u, BOT_HELP_CMD_BADWORDS);
|
||||
}
|
||||
};
|
||||
|
||||
int badwords_del_callback(User * u, int num, va_list args)
|
||||
{
|
||||
BadWord *bw;
|
||||
ChannelInfo *ci = va_arg(args, ChannelInfo *);
|
||||
int *last = va_arg(args, int *);
|
||||
|
||||
*last = num;
|
||||
|
||||
if (num < 1 || num > ci->bwcount)
|
||||
if (num < 1 || num > ci->GetBadWordCount())
|
||||
return 0;
|
||||
|
||||
bw = &ci->badwords[num - 1];
|
||||
if (bw->word)
|
||||
delete [] bw->word;
|
||||
bw->word = NULL;
|
||||
bw->in_use = 0;
|
||||
ci->GetBadWord(num - 1)->InUse = false;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int badwords_list(User * u, int index, ChannelInfo * ci, int *sent_header)
|
||||
{
|
||||
BadWord *bw = &ci->badwords[index];
|
||||
BadWord *bw = ci->GetBadWord(index);
|
||||
|
||||
if (!bw->in_use)
|
||||
return 0;
|
||||
if (!*sent_header) {
|
||||
notice_lang(s_BotServ, u, BOT_BADWORDS_LIST_HEADER, ci->name);
|
||||
if (!*sent_header)
|
||||
{
|
||||
notice_lang(Config.s_BotServ, u, BOT_BADWORDS_LIST_HEADER, ci->name.c_str());
|
||||
*sent_header = 1;
|
||||
}
|
||||
|
||||
notice_lang(s_BotServ, u, BOT_BADWORDS_LIST_FORMAT, index + 1,
|
||||
bw->word,
|
||||
((bw->type ==
|
||||
BW_SINGLE) ? "(SINGLE)" : ((bw->type ==
|
||||
BW_START) ? "(START)"
|
||||
: ((bw->type ==
|
||||
BW_END) ? "(END)" : "")))
|
||||
);
|
||||
notice_lang(Config.s_BotServ, u, BOT_BADWORDS_LIST_FORMAT, index + 1, bw->word.c_str(),
|
||||
((bw->type == BW_SINGLE) ? "(SINGLE)" : ((bw->type == BW_START) ? "(START)"
|
||||
: ((bw->type == BW_END) ? "(END)" : "")))
|
||||
);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -349,8 +277,10 @@ int badwords_list_callback(User * u, int num, va_list args)
|
||||
{
|
||||
ChannelInfo *ci = va_arg(args, ChannelInfo *);
|
||||
int *sent_header = va_arg(args, int *);
|
||||
if (num < 1 || num > ci->bwcount)
|
||||
|
||||
if (num < 1 || num > ci->GetBadWordCount())
|
||||
return 0;
|
||||
|
||||
return badwords_list(u, num - 1, ci, sent_header);
|
||||
}
|
||||
|
||||
|
||||
+88
-104
@@ -1,6 +1,6 @@
|
||||
/* BotServ core functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2010 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -18,57 +18,51 @@
|
||||
class CommandBSBot : public Command
|
||||
{
|
||||
private:
|
||||
CommandReturn DoAdd(User *u, std::vector<ci::string> ¶ms)
|
||||
CommandReturn DoAdd(User *u, const std::vector<ci::string> ¶ms)
|
||||
{
|
||||
const char *nick = params[1].c_str();
|
||||
const char *user = params.size() > 2 ? params[2].c_str() : NULL;
|
||||
const char *host = params.size() > 3 ? params[3].c_str() : NULL;
|
||||
const char *real = params.size() > 4 ? params[4].c_str() : NULL;
|
||||
const char *user = params[2].c_str();
|
||||
const char *host = params[3].c_str();
|
||||
const char *real = params[4].c_str();
|
||||
const char *ch = NULL;
|
||||
BotInfo *bi;
|
||||
|
||||
if (!nick || !user || !host || !real)
|
||||
{
|
||||
this->OnSyntaxError(u);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
if (findbot(nick))
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_BOT_ALREADY_EXISTS, nick);
|
||||
notice_lang(Config.s_BotServ, u, BOT_BOT_ALREADY_EXISTS, nick);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
if (strlen(nick) > NickLen)
|
||||
if (strlen(nick) > Config.NickLen)
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_BAD_NICK);
|
||||
notice_lang(Config.s_BotServ, u, BOT_BAD_NICK);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
if (strlen(user) >= USERMAX)
|
||||
if (strlen(user) > Config.UserLen)
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_LONG_IDENT, USERMAX - 1);
|
||||
notice_lang(Config.s_BotServ, u, BOT_LONG_IDENT, Config.UserLen);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
if (strlen(user) > HOSTMAX)
|
||||
if (strlen(user) > Config.HostLen)
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_LONG_HOST, HOSTMAX);
|
||||
notice_lang(Config.s_BotServ, u, BOT_LONG_HOST, Config.HostLen);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
/* Check the nick is valid re RFC 2812 */
|
||||
if (isdigit(nick[0]) || nick[0] == '-')
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_BAD_NICK);
|
||||
notice_lang(Config.s_BotServ, u, BOT_BAD_NICK);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
for (ch = nick; *ch && (ch - nick) < NICKMAX; ch++)
|
||||
for (ch = nick; *ch && (ch - nick) < Config.NickLen; ch++)
|
||||
{
|
||||
if (!isvalidnick(*ch))
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_BAD_NICK);
|
||||
notice_lang(Config.s_BotServ, u, BOT_BAD_NICK);
|
||||
return MOD_CONT;
|
||||
}
|
||||
}
|
||||
@@ -76,22 +70,22 @@ class CommandBSBot : public Command
|
||||
/* check for hardcored ircd forbidden nicks */
|
||||
if (!ircdproto->IsNickValid(nick))
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_BAD_NICK);
|
||||
notice_lang(Config.s_BotServ, u, BOT_BAD_NICK);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
/* Check the host is valid re RFC 2812 */
|
||||
if (!isValidHost(host, 3))
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_BAD_HOST);
|
||||
notice_lang(Config.s_BotServ, u, BOT_BAD_HOST);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
for (ch = user; *ch && (ch - user) < USERMAX; ch++)
|
||||
for (ch = user; *ch && (ch - user) < Config.UserLen; ch++)
|
||||
{
|
||||
if (!isalnum(*ch))
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_LONG_IDENT, USERMAX - 1);
|
||||
notice_lang(Config.s_BotServ, u, BOT_BAD_IDENT, Config.UserLen);
|
||||
return MOD_CONT;
|
||||
}
|
||||
}
|
||||
@@ -103,27 +97,26 @@ class CommandBSBot : public Command
|
||||
*/
|
||||
if (findnick(nick))
|
||||
{
|
||||
notice_lang(s_BotServ, u, NICK_ALREADY_REGISTERED, nick);
|
||||
notice_lang(Config.s_BotServ, u, NICK_ALREADY_REGISTERED, nick);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
if (!(bi = new BotInfo(nick, user, host, real)))
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_BOT_CREATION_FAILED);
|
||||
notice_lang(Config.s_BotServ, u, BOT_BOT_CREATION_FAILED);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
/* We check whether user with this nick is online, and kill it if so */
|
||||
EnforceQlinedNick(nick, s_BotServ);
|
||||
EnforceQlinedNick(nick, Config.s_BotServ);
|
||||
|
||||
notice_lang(s_BotServ, u, BOT_BOT_ADDED, bi->nick, bi->user,
|
||||
bi->host, bi->real);
|
||||
notice_lang(Config.s_BotServ, u, BOT_BOT_ADDED, bi->nick.c_str(), bi->user.c_str(), bi->host.c_str(), bi->real.c_str());
|
||||
|
||||
FOREACH_MOD(I_OnBotCreate, OnBotCreate(bi));
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
CommandReturn DoChange(User *u, std::vector<ci::string> ¶ms)
|
||||
CommandReturn DoChange(User *u, const std::vector<ci::string> ¶ms)
|
||||
{
|
||||
const char *oldnick = params[1].c_str();
|
||||
const char *nick = params.size() > 2 ? params[2].c_str() : NULL;
|
||||
@@ -135,43 +128,43 @@ class CommandBSBot : public Command
|
||||
|
||||
if (!oldnick || !nick)
|
||||
{
|
||||
this->OnSyntaxError(u);
|
||||
this->OnSyntaxError(u, "CHANGE");
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
if (!(bi = findbot(oldnick)))
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_DOES_NOT_EXIST, oldnick);
|
||||
notice_lang(Config.s_BotServ, u, BOT_DOES_NOT_EXIST, oldnick);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
if (stricmp(oldnick, nick) && nickIsServices(oldnick, 0))
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_DOES_NOT_EXIST, oldnick);
|
||||
notice_lang(Config.s_BotServ, u, BOT_DOES_NOT_EXIST, oldnick);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
if (strlen(nick) > NickLen)
|
||||
if (strlen(nick) > Config.NickLen)
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_BAD_NICK);
|
||||
notice_lang(Config.s_BotServ, u, BOT_BAD_NICK);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
if (user && strlen(user) >= USERMAX)
|
||||
if (user && strlen(user) > Config.UserLen)
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_LONG_IDENT, USERMAX - 1);
|
||||
notice_lang(Config.s_BotServ, u, BOT_LONG_IDENT, Config.UserLen);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
if (host && strlen(host) > HOSTMAX)
|
||||
if (host && strlen(host) > Config.HostLen)
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_LONG_HOST, HOSTMAX);
|
||||
notice_lang(Config.s_BotServ, u, BOT_LONG_HOST, Config.HostLen);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
if (stricmp(oldnick, nick) && nickIsServices(nick, 0))
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_DOES_NOT_EXIST, oldnick);
|
||||
notice_lang(Config.s_BotServ, u, BOT_DOES_NOT_EXIST, oldnick);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
@@ -180,27 +173,24 @@ class CommandBSBot : public Command
|
||||
* And we must finally check that the nick is not already
|
||||
* taken by another bot.
|
||||
*/
|
||||
if (!strcmp(bi->nick, nick)
|
||||
&& ((user) ? !strcmp(bi->user, user) : 1)
|
||||
&& ((host) ? !strcmp(bi->host, host) : 1)
|
||||
&& ((real) ? !strcmp(bi->real, real) : 1))
|
||||
if (bi->nick == nick && (user ? bi->user == user : 1) && (host ? bi->host == host : 1) && (real ? bi->real == real : 1))
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_BOT_ANY_CHANGES);
|
||||
notice_lang(Config.s_BotServ, u, BOT_BOT_ANY_CHANGES);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
/* Check the nick is valid re RFC 2812 */
|
||||
if (isdigit(nick[0]) || nick[0] == '-')
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_BAD_NICK);
|
||||
notice_lang(Config.s_BotServ, u, BOT_BAD_NICK);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
for (ch = nick; *ch && (ch - nick) < NICKMAX; ch++)
|
||||
for (ch = nick; *ch && (ch - nick) < Config.NickLen; ch++)
|
||||
{
|
||||
if (!isvalidnick(*ch))
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_BAD_NICK);
|
||||
notice_lang(Config.s_BotServ, u, BOT_BAD_NICK);
|
||||
return MOD_CONT;
|
||||
}
|
||||
}
|
||||
@@ -208,35 +198,36 @@ class CommandBSBot : public Command
|
||||
/* check for hardcored ircd forbidden nicks */
|
||||
if (!ircdproto->IsNickValid(nick))
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_BAD_NICK);
|
||||
notice_lang(Config.s_BotServ, u, BOT_BAD_NICK);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
if (host && !isValidHost(host, 3))
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_BAD_HOST);
|
||||
notice_lang(Config.s_BotServ, u, BOT_BAD_HOST);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
if (user)
|
||||
{
|
||||
for (ch = user; *ch && (ch - user) < USERMAX; ch++)
|
||||
for (ch = user; *ch && (ch - user) < Config.UserLen; ch++)
|
||||
{
|
||||
if (!isalnum(*ch))
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_LONG_IDENT, USERMAX - 1);
|
||||
notice_lang(Config.s_BotServ, u, BOT_BAD_IDENT, Config.UserLen);
|
||||
return MOD_CONT;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (stricmp(bi->nick, nick) && findbot(nick))
|
||||
ci::string ci_bi_nick(bi->nick.c_str());
|
||||
if (ci_bi_nick != nick && findbot(nick))
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_BOT_ALREADY_EXISTS, nick);
|
||||
notice_lang(Config.s_BotServ, u, BOT_BOT_ALREADY_EXISTS, nick);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
if (stricmp(bi->nick, nick))
|
||||
if (ci_bi_nick != nick)
|
||||
{
|
||||
/* We check whether the nick is registered, and inform the user
|
||||
* if so. You need to drop the nick manually before you can use
|
||||
@@ -244,7 +235,7 @@ class CommandBSBot : public Command
|
||||
*/
|
||||
if (findnick(nick))
|
||||
{
|
||||
notice_lang(s_BotServ, u, NICK_ALREADY_REGISTERED, nick);
|
||||
notice_lang(Config.s_BotServ, u, NICK_ALREADY_REGISTERED, nick);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
@@ -256,7 +247,7 @@ class CommandBSBot : public Command
|
||||
}
|
||||
|
||||
/* We check whether user with this nick is online, and kill it if so */
|
||||
EnforceQlinedNick(nick, s_BotServ);
|
||||
EnforceQlinedNick(nick, Config.s_BotServ);
|
||||
}
|
||||
|
||||
if (user)
|
||||
@@ -266,24 +257,15 @@ class CommandBSBot : public Command
|
||||
ircdproto->SendSQLine(bi->nick, "Reserved for services");
|
||||
}
|
||||
|
||||
if (strcmp(nick, bi->nick))
|
||||
if (bi->nick != nick)
|
||||
bi->ChangeNick(nick);
|
||||
|
||||
if (user && strcmp(user, bi->user))
|
||||
{
|
||||
delete [] bi->user;
|
||||
bi->user = sstrdup(user);
|
||||
}
|
||||
if (host && strcmp(host, bi->host))
|
||||
{
|
||||
delete [] bi->host;
|
||||
bi->host = sstrdup(host);
|
||||
}
|
||||
if (real && strcmp(real, bi->real))
|
||||
{
|
||||
delete [] bi->real;
|
||||
bi->real = sstrdup(real);
|
||||
}
|
||||
if (user && bi->user != user)
|
||||
bi->user = user;
|
||||
if (host && bi->host != host)
|
||||
bi->host = host;
|
||||
if (real && bi->real != real)
|
||||
bi->real = real;
|
||||
|
||||
if (user)
|
||||
{
|
||||
@@ -291,48 +273,47 @@ class CommandBSBot : public Command
|
||||
// This isn't the nicest way to do this, unfortunately.
|
||||
bi->uid = ts6_uid_retrieve();
|
||||
}
|
||||
ircdproto->SendClientIntroduction(bi->nick, bi->user, bi->host, bi->real,
|
||||
ircd->pseudoclient_mode, bi->uid.c_str());
|
||||
ircdproto->SendClientIntroduction(bi->nick, bi->user, bi->host, bi->real, ircd->pseudoclient_mode, bi->uid);
|
||||
ircdproto->SendSQLine(bi->nick, "Reserved for services");
|
||||
bi->RejoinAll();
|
||||
}
|
||||
|
||||
notice_lang(s_BotServ, u, BOT_BOT_CHANGED,
|
||||
oldnick, bi->nick, bi->user, bi->host, bi->real);
|
||||
notice_lang(Config.s_BotServ, u, BOT_BOT_CHANGED, oldnick, bi->nick.c_str(), bi->user.c_str(), bi->host.c_str(), bi->real.c_str());
|
||||
|
||||
FOREACH_MOD(I_OnBotChange, OnBotChange(bi));
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
CommandReturn DoDel(User *u, std::vector<ci::string> ¶ms)
|
||||
CommandReturn DoDel(User *u, const std::vector<ci::string> ¶ms)
|
||||
{
|
||||
const char *nick = params[1].c_str();
|
||||
BotInfo *bi;
|
||||
|
||||
if (!nick)
|
||||
{
|
||||
this->OnSyntaxError(u);
|
||||
this->OnSyntaxError(u, "DEL");
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
if (!(bi = findbot(nick)))
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_DOES_NOT_EXIST, nick);
|
||||
notice_lang(Config.s_BotServ, u, BOT_DOES_NOT_EXIST, nick);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
if (nickIsServices(nick, 0))
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_DOES_NOT_EXIST, nick);
|
||||
notice_lang(Config.s_BotServ, u, BOT_DOES_NOT_EXIST, nick);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
FOREACH_MOD(I_OnBotDelete, OnBotDelete(bi));
|
||||
|
||||
ircdproto->SendQuit(bi, "Quit: Help! I'm being deleted by %s!", u->nick);
|
||||
ircdproto->SendQuit(bi, "Quit: Help! I'm being deleted by %s!", u->nick.c_str());
|
||||
ircdproto->SendSQLineDel(bi->nick);
|
||||
|
||||
delete bi;
|
||||
notice_lang(s_BotServ, u, BOT_BOT_DELETED, nick);
|
||||
notice_lang(Config.s_BotServ, u, BOT_BOT_DELETED, nick);
|
||||
return MOD_CONT;
|
||||
}
|
||||
public:
|
||||
@@ -341,50 +322,51 @@ class CommandBSBot : public Command
|
||||
this->SetFlag(CFLAG_STRIP_CHANNEL);
|
||||
}
|
||||
|
||||
CommandReturn Execute(User *u, std::vector<ci::string> ¶ms)
|
||||
CommandReturn Execute(User *u, const std::vector<ci::string> ¶ms)
|
||||
{
|
||||
ci::string cmd = params[0];
|
||||
|
||||
if (readonly)
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_BOT_READONLY);
|
||||
notice_lang(Config.s_BotServ, u, BOT_BOT_READONLY);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
if (cmd == "ADD")
|
||||
{
|
||||
// ADD nick user host real - 5
|
||||
if (!u->nc->HasCommand("botserv/bot/add"))
|
||||
if (!u->Account()->HasCommand("botserv/bot/add"))
|
||||
{
|
||||
notice_lang(s_BotServ, u, ACCESS_DENIED);
|
||||
notice_lang(Config.s_BotServ, u, ACCESS_DENIED);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
if (params.size() < 5)
|
||||
{
|
||||
this->OnSyntaxError(u);
|
||||
this->OnSyntaxError(u, "ADD");
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
std::vector<ci::string> tempparams = params;
|
||||
// ADD takes less params than CHANGE, so we need to take 6 if given and append it with a space to 5.
|
||||
if (params.size() >= 6)
|
||||
params[4] = params[4] + " " + params[5];
|
||||
if (tempparams.size() >= 6)
|
||||
tempparams[4] = tempparams[4] + " " + tempparams[5];
|
||||
|
||||
return this->DoAdd(u, params);
|
||||
return this->DoAdd(u, tempparams);
|
||||
}
|
||||
else if (cmd == "CHANGE")
|
||||
{
|
||||
// CHANGE oldn newn user host real - 6
|
||||
// but only oldn and newn are required
|
||||
if (!u->nc->HasCommand("botserv/bot/change"))
|
||||
if (!u->Account()->HasCommand("botserv/bot/change"))
|
||||
{
|
||||
notice_lang(s_BotServ, u, ACCESS_DENIED);
|
||||
notice_lang(Config.s_BotServ, u, ACCESS_DENIED);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
if (params.size() < 3)
|
||||
{
|
||||
this->OnSyntaxError(u);
|
||||
this->OnSyntaxError(u, "CHANGE");
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
@@ -393,35 +375,35 @@ class CommandBSBot : public Command
|
||||
else if (cmd == "DEL")
|
||||
{
|
||||
// DEL nick
|
||||
if (!u->nc->HasCommand("botserv/bot/del"))
|
||||
if (!u->Account()->HasCommand("botserv/bot/del"))
|
||||
{
|
||||
notice_lang(s_BotServ, u, ACCESS_DENIED);
|
||||
notice_lang(Config.s_BotServ, u, ACCESS_DENIED);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
if (params.size() < 1)
|
||||
{
|
||||
this->OnSyntaxError(u);
|
||||
this->OnSyntaxError(u, "DEL");
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
return this->DoDel(u, params);
|
||||
}
|
||||
else
|
||||
this->OnSyntaxError(u);
|
||||
this->OnSyntaxError(u, "");
|
||||
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
bool OnHelp(User *u, const ci::string &subcommand)
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_SERVADMIN_HELP_BOT);
|
||||
notice_lang(Config.s_BotServ, u, BOT_SERVADMIN_HELP_BOT);
|
||||
return true;
|
||||
}
|
||||
|
||||
void OnSyntaxError(User *u)
|
||||
void OnSyntaxError(User *u, const ci::string &subcommand)
|
||||
{
|
||||
syntax_error(s_BotServ, u, "BOT", BOT_BOT_SYNTAX);
|
||||
syntax_error(Config.s_BotServ, u, "BOT", BOT_BOT_SYNTAX);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -434,10 +416,12 @@ class BSBot : public Module
|
||||
this->SetVersion("$Id$");
|
||||
this->SetType(CORE);
|
||||
this->AddCommand(BOTSERV, new CommandBSBot());
|
||||
|
||||
ModuleManager::Attach(I_OnBotServHelp, this);
|
||||
}
|
||||
void BotServHelp(User *u)
|
||||
void OnBotServHelp(User *u)
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_HELP_CMD_BOT);
|
||||
notice_lang(Config.s_BotServ, u, BOT_HELP_CMD_BOT);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
+17
-15
@@ -1,6 +1,6 @@
|
||||
/* BotServ core functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2010 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -22,34 +22,34 @@ class CommandBSBotList : public Command
|
||||
{
|
||||
}
|
||||
|
||||
CommandReturn Execute(User *u, std::vector<ci::string> ¶ms)
|
||||
CommandReturn Execute(User *u, const std::vector<ci::string> ¶ms)
|
||||
{
|
||||
int i, count = 0;
|
||||
BotInfo *bi;
|
||||
|
||||
if (!nbots) {
|
||||
notice_lang(s_BotServ, u, BOT_BOTLIST_EMPTY);
|
||||
notice_lang(Config.s_BotServ, u, BOT_BOTLIST_EMPTY);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
for (i = 0; i < 256; i++) {
|
||||
for (bi = botlists[i]; bi; bi = bi->next) {
|
||||
if (!(bi->flags & BI_PRIVATE)) {
|
||||
if (!(bi->HasFlag(BI_PRIVATE))) {
|
||||
if (!count)
|
||||
notice_lang(s_BotServ, u, BOT_BOTLIST_HEADER);
|
||||
notice_lang(Config.s_BotServ, u, BOT_BOTLIST_HEADER);
|
||||
count++;
|
||||
u->SendMessage(s_BotServ, " %-15s (%s@%s)", bi->nick, bi->user, bi->host);
|
||||
u->SendMessage(Config.s_BotServ, " %-15s (%s@%s)", bi->nick.c_str(), bi->user.c_str(), bi->host.c_str());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (u->nc->HasCommand("botserv/botlist") && count < nbots) {
|
||||
notice_lang(s_BotServ, u, BOT_BOTLIST_PRIVATE_HEADER);
|
||||
if (u->Account()->HasCommand("botserv/botlist") && count < nbots) {
|
||||
notice_lang(Config.s_BotServ, u, BOT_BOTLIST_PRIVATE_HEADER);
|
||||
|
||||
for (i = 0; i < 256; i++) {
|
||||
for (bi = botlists[i]; bi; bi = bi->next) {
|
||||
if (bi->flags & BI_PRIVATE) {
|
||||
u->SendMessage(s_BotServ, " %-15s (%s@%s)", bi->nick, bi->user, bi->host);
|
||||
if (bi->HasFlag(BI_PRIVATE)) {
|
||||
u->SendMessage(Config.s_BotServ, " %-15s (%s@%s)", bi->nick.c_str(), bi->user.c_str(), bi->host.c_str());
|
||||
count++;
|
||||
}
|
||||
}
|
||||
@@ -57,15 +57,15 @@ class CommandBSBotList : public Command
|
||||
}
|
||||
|
||||
if (!count)
|
||||
notice_lang(s_BotServ, u, BOT_BOTLIST_EMPTY);
|
||||
notice_lang(Config.s_BotServ, u, BOT_BOTLIST_EMPTY);
|
||||
else
|
||||
notice_lang(s_BotServ, u, BOT_BOTLIST_FOOTER, count);
|
||||
notice_lang(Config.s_BotServ, u, BOT_BOTLIST_FOOTER, count);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
bool OnHelp(User *u, const ci::string &subcommand)
|
||||
{
|
||||
notice_help(s_BotServ, u, BOT_HELP_BOTLIST);
|
||||
notice_help(Config.s_BotServ, u, BOT_HELP_BOTLIST);
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -79,10 +79,12 @@ class BSBotList : public Module
|
||||
this->SetVersion("$Id$");
|
||||
this->SetType(CORE);
|
||||
this->AddCommand(BOTSERV, new CommandBSBotList());
|
||||
|
||||
ModuleManager::Attach(I_OnBotServHelp, this);
|
||||
}
|
||||
void BotServHelp(User *u)
|
||||
void OnBotServHelp(User *u)
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_HELP_CMD_BOTLIST);
|
||||
notice_lang(Config.s_BotServ, u, BOT_HELP_CMD_BOTLIST);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
+7
-7
@@ -1,6 +1,6 @@
|
||||
/* BotServ core functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2010 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -24,18 +24,18 @@ class CommandBSHelp : public Command
|
||||
this->SetFlag(CFLAG_STRIP_CHANNEL);
|
||||
}
|
||||
|
||||
CommandReturn Execute(User *u, std::vector<ci::string> ¶ms)
|
||||
CommandReturn Execute(User *u, const std::vector<ci::string> ¶ms)
|
||||
{
|
||||
mod_help_cmd(s_BotServ, u, BOTSERV, params[0].c_str());
|
||||
mod_help_cmd(Config.s_BotServ, u, BOTSERV, params[0].c_str());
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
void OnSyntaxError(User *u)
|
||||
void OnSyntaxError(User *u, const ci::string &subcommand)
|
||||
{
|
||||
// Abuse syntax error to display general list help.
|
||||
notice_help(s_BotServ, u, BOT_HELP);
|
||||
moduleDisplayHelp(s_BotServ, u);
|
||||
notice_help(s_BotServ, u, BOT_HELP_FOOTER, BSMinUsers);
|
||||
notice_help(Config.s_BotServ, u, BOT_HELP);
|
||||
FOREACH_MOD(I_OnBotServHelp, OnBotServHelp(u));
|
||||
notice_help(Config.s_BotServ, u, BOT_HELP_FOOTER, Config.BSMinUsers);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
+65
-67
@@ -1,6 +1,6 @@
|
||||
/* BotServ core functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2010 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -30,20 +30,20 @@ class CommandBSInfo : public Command
|
||||
for (i = 0; i < 256; i++) {
|
||||
for (ci = chanlists[i]; ci; ci = ci->next) {
|
||||
if (ci->bi == bi) {
|
||||
if (strlen(buf) + strlen(ci->name) > 300) {
|
||||
u->SendMessage(s_BotServ, "%s", buf);
|
||||
if (strlen(buf) + strlen(ci->name.c_str()) > 300) {
|
||||
u->SendMessage(Config.s_BotServ, "%s", buf);
|
||||
*buf = 0;
|
||||
end = buf;
|
||||
}
|
||||
end +=
|
||||
snprintf(end, sizeof(buf) - (end - buf), " %s ",
|
||||
ci->name);
|
||||
ci->name.c_str());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (*buf)
|
||||
u->SendMessage(s_BotServ, "%s", buf);
|
||||
u->SendMessage(Config.s_BotServ, "%s", buf);
|
||||
return;
|
||||
}
|
||||
public:
|
||||
@@ -52,7 +52,7 @@ class CommandBSInfo : public Command
|
||||
this->SetFlag(CFLAG_STRIP_CHANNEL);
|
||||
}
|
||||
|
||||
CommandReturn Execute(User *u, std::vector<ci::string> ¶ms)
|
||||
CommandReturn Execute(User *u, const std::vector<ci::string> ¶ms)
|
||||
{
|
||||
BotInfo *bi;
|
||||
ChannelInfo *ci;
|
||||
@@ -66,185 +66,181 @@ class CommandBSInfo : public Command
|
||||
{
|
||||
struct tm *tm;
|
||||
|
||||
notice_lang(s_BotServ, u, BOT_INFO_BOT_HEADER, bi->nick);
|
||||
notice_lang(s_BotServ, u, BOT_INFO_BOT_MASK, bi->user, bi->host);
|
||||
notice_lang(s_BotServ, u, BOT_INFO_BOT_REALNAME, bi->real);
|
||||
notice_lang(Config.s_BotServ, u, BOT_INFO_BOT_HEADER, bi->nick.c_str());
|
||||
notice_lang(Config.s_BotServ, u, BOT_INFO_BOT_MASK, bi->user.c_str(), bi->host.c_str());
|
||||
notice_lang(Config.s_BotServ, u, BOT_INFO_BOT_REALNAME, bi->real.c_str());
|
||||
tm = localtime(&bi->created);
|
||||
strftime_lang(buf, sizeof(buf), u, STRFTIME_DATE_TIME_FORMAT, tm);
|
||||
notice_lang(s_BotServ, u, BOT_INFO_BOT_CREATED, buf);
|
||||
notice_lang(s_BotServ, u, BOT_INFO_BOT_OPTIONS,
|
||||
getstring(u,
|
||||
(bi->
|
||||
flags & BI_PRIVATE) ? BOT_INFO_OPT_PRIVATE :
|
||||
BOT_INFO_OPT_NONE));
|
||||
notice_lang(s_BotServ, u, BOT_INFO_BOT_USAGE, bi->chancount);
|
||||
notice_lang(Config.s_BotServ, u, BOT_INFO_BOT_CREATED, buf);
|
||||
notice_lang(Config.s_BotServ, u, BOT_INFO_BOT_OPTIONS, getstring(u, (bi->HasFlag(BI_PRIVATE) ? BOT_INFO_OPT_PRIVATE : BOT_INFO_OPT_NONE)));
|
||||
notice_lang(Config.s_BotServ, u, BOT_INFO_BOT_USAGE, bi->chancount);
|
||||
|
||||
if (u->nc->HasPriv("botserv/administration"))
|
||||
if (u->Account()->HasPriv("botserv/administration"))
|
||||
this->send_bot_channels(u, bi);
|
||||
}
|
||||
else if ((ci = cs_findchan(query)))
|
||||
{
|
||||
if (!is_founder(u, ci) && !u->nc->HasPriv("botserv/administration"))
|
||||
if (!IsFounder(u, ci) && !u->Account()->HasPriv("botserv/administration"))
|
||||
{
|
||||
notice_lang(s_BotServ, u, ACCESS_DENIED);
|
||||
notice_lang(Config.s_BotServ, u, ACCESS_DENIED);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
notice_lang(s_BotServ, u, BOT_INFO_CHAN_HEADER, ci->name);
|
||||
notice_lang(Config.s_BotServ, u, BOT_INFO_CHAN_HEADER, ci->name.c_str());
|
||||
if (ci->bi)
|
||||
notice_lang(s_BotServ, u, BOT_INFO_CHAN_BOT, ci->bi->nick);
|
||||
notice_lang(Config.s_BotServ, u, BOT_INFO_CHAN_BOT, ci->bi->nick.c_str());
|
||||
else
|
||||
notice_lang(s_BotServ, u, BOT_INFO_CHAN_BOT_NONE);
|
||||
notice_lang(Config.s_BotServ, u, BOT_INFO_CHAN_BOT_NONE);
|
||||
|
||||
if (ci->botflags & BS_KICK_BADWORDS) {
|
||||
if (ci->botflags.HasFlag(BS_KICK_BADWORDS)) {
|
||||
if (ci->ttb[TTB_BADWORDS])
|
||||
notice_lang(s_BotServ, u, BOT_INFO_CHAN_KICK_BADWORDS_BAN,
|
||||
notice_lang(Config.s_BotServ, u, BOT_INFO_CHAN_KICK_BADWORDS_BAN,
|
||||
getstring(u, BOT_INFO_ACTIVE),
|
||||
ci->ttb[TTB_BADWORDS]);
|
||||
else
|
||||
notice_lang(s_BotServ, u, BOT_INFO_CHAN_KICK_BADWORDS,
|
||||
notice_lang(Config.s_BotServ, u, BOT_INFO_CHAN_KICK_BADWORDS,
|
||||
getstring(u, BOT_INFO_ACTIVE));
|
||||
} else
|
||||
notice_lang(s_BotServ, u, BOT_INFO_CHAN_KICK_BADWORDS,
|
||||
notice_lang(Config.s_BotServ, u, BOT_INFO_CHAN_KICK_BADWORDS,
|
||||
getstring(u, BOT_INFO_INACTIVE));
|
||||
if (ci->botflags & BS_KICK_BOLDS) {
|
||||
if (ci->botflags.HasFlag(BS_KICK_BOLDS)) {
|
||||
if (ci->ttb[TTB_BOLDS])
|
||||
notice_lang(s_BotServ, u, BOT_INFO_CHAN_KICK_BOLDS_BAN,
|
||||
notice_lang(Config.s_BotServ, u, BOT_INFO_CHAN_KICK_BOLDS_BAN,
|
||||
getstring(u, BOT_INFO_ACTIVE),
|
||||
ci->ttb[TTB_BOLDS]);
|
||||
else
|
||||
notice_lang(s_BotServ, u, BOT_INFO_CHAN_KICK_BOLDS,
|
||||
notice_lang(Config.s_BotServ, u, BOT_INFO_CHAN_KICK_BOLDS,
|
||||
getstring(u, BOT_INFO_ACTIVE));
|
||||
} else
|
||||
notice_lang(s_BotServ, u, BOT_INFO_CHAN_KICK_BOLDS,
|
||||
notice_lang(Config.s_BotServ, u, BOT_INFO_CHAN_KICK_BOLDS,
|
||||
getstring(u, BOT_INFO_INACTIVE));
|
||||
if (ci->botflags & BS_KICK_CAPS) {
|
||||
if (ci->botflags.HasFlag(BS_KICK_CAPS)) {
|
||||
if (ci->ttb[TTB_CAPS])
|
||||
notice_lang(s_BotServ, u, BOT_INFO_CHAN_KICK_CAPS_BAN,
|
||||
notice_lang(Config.s_BotServ, u, BOT_INFO_CHAN_KICK_CAPS_BAN,
|
||||
getstring(u, BOT_INFO_ACTIVE),
|
||||
ci->ttb[TTB_CAPS], ci->capsmin,
|
||||
ci->capspercent);
|
||||
else
|
||||
notice_lang(s_BotServ, u, BOT_INFO_CHAN_KICK_CAPS_ON,
|
||||
notice_lang(Config.s_BotServ, u, BOT_INFO_CHAN_KICK_CAPS_ON,
|
||||
getstring(u, BOT_INFO_ACTIVE), ci->capsmin,
|
||||
ci->capspercent);
|
||||
} else
|
||||
notice_lang(s_BotServ, u, BOT_INFO_CHAN_KICK_CAPS_OFF,
|
||||
notice_lang(Config.s_BotServ, u, BOT_INFO_CHAN_KICK_CAPS_OFF,
|
||||
getstring(u, BOT_INFO_INACTIVE));
|
||||
if (ci->botflags & BS_KICK_COLORS) {
|
||||
if (ci->botflags.HasFlag(BS_KICK_COLORS)) {
|
||||
if (ci->ttb[TTB_COLORS])
|
||||
notice_lang(s_BotServ, u, BOT_INFO_CHAN_KICK_COLORS_BAN,
|
||||
notice_lang(Config.s_BotServ, u, BOT_INFO_CHAN_KICK_COLORS_BAN,
|
||||
getstring(u, BOT_INFO_ACTIVE),
|
||||
ci->ttb[TTB_COLORS]);
|
||||
else
|
||||
notice_lang(s_BotServ, u, BOT_INFO_CHAN_KICK_COLORS,
|
||||
notice_lang(Config.s_BotServ, u, BOT_INFO_CHAN_KICK_COLORS,
|
||||
getstring(u, BOT_INFO_ACTIVE));
|
||||
} else
|
||||
notice_lang(s_BotServ, u, BOT_INFO_CHAN_KICK_COLORS,
|
||||
notice_lang(Config.s_BotServ, u, BOT_INFO_CHAN_KICK_COLORS,
|
||||
getstring(u, BOT_INFO_INACTIVE));
|
||||
if (ci->botflags & BS_KICK_FLOOD) {
|
||||
if (ci->botflags.HasFlag(BS_KICK_FLOOD)) {
|
||||
if (ci->ttb[TTB_FLOOD])
|
||||
notice_lang(s_BotServ, u, BOT_INFO_CHAN_KICK_FLOOD_BAN,
|
||||
notice_lang(Config.s_BotServ, u, BOT_INFO_CHAN_KICK_FLOOD_BAN,
|
||||
getstring(u, BOT_INFO_ACTIVE),
|
||||
ci->ttb[TTB_FLOOD], ci->floodlines,
|
||||
ci->floodsecs);
|
||||
else
|
||||
notice_lang(s_BotServ, u, BOT_INFO_CHAN_KICK_FLOOD_ON,
|
||||
notice_lang(Config.s_BotServ, u, BOT_INFO_CHAN_KICK_FLOOD_ON,
|
||||
getstring(u, BOT_INFO_ACTIVE),
|
||||
ci->floodlines, ci->floodsecs);
|
||||
} else
|
||||
notice_lang(s_BotServ, u, BOT_INFO_CHAN_KICK_FLOOD_OFF,
|
||||
notice_lang(Config.s_BotServ, u, BOT_INFO_CHAN_KICK_FLOOD_OFF,
|
||||
getstring(u, BOT_INFO_INACTIVE));
|
||||
if (ci->botflags & BS_KICK_REPEAT) {
|
||||
if (ci->botflags.HasFlag(BS_KICK_REPEAT)) {
|
||||
if (ci->ttb[TTB_REPEAT])
|
||||
notice_lang(s_BotServ, u, BOT_INFO_CHAN_KICK_REPEAT_BAN,
|
||||
notice_lang(Config.s_BotServ, u, BOT_INFO_CHAN_KICK_REPEAT_BAN,
|
||||
getstring(u, BOT_INFO_ACTIVE),
|
||||
ci->ttb[TTB_REPEAT], ci->repeattimes);
|
||||
else
|
||||
notice_lang(s_BotServ, u, BOT_INFO_CHAN_KICK_REPEAT_ON,
|
||||
notice_lang(Config.s_BotServ, u, BOT_INFO_CHAN_KICK_REPEAT_ON,
|
||||
getstring(u, BOT_INFO_ACTIVE),
|
||||
ci->repeattimes);
|
||||
} else
|
||||
notice_lang(s_BotServ, u, BOT_INFO_CHAN_KICK_REPEAT_OFF,
|
||||
notice_lang(Config.s_BotServ, u, BOT_INFO_CHAN_KICK_REPEAT_OFF,
|
||||
getstring(u, BOT_INFO_INACTIVE));
|
||||
if (ci->botflags & BS_KICK_REVERSES) {
|
||||
if (ci->botflags.HasFlag(BS_KICK_REVERSES)) {
|
||||
if (ci->ttb[TTB_REVERSES])
|
||||
notice_lang(s_BotServ, u, BOT_INFO_CHAN_KICK_REVERSES_BAN,
|
||||
notice_lang(Config.s_BotServ, u, BOT_INFO_CHAN_KICK_REVERSES_BAN,
|
||||
getstring(u, BOT_INFO_ACTIVE),
|
||||
ci->ttb[TTB_REVERSES]);
|
||||
else
|
||||
notice_lang(s_BotServ, u, BOT_INFO_CHAN_KICK_REVERSES,
|
||||
notice_lang(Config.s_BotServ, u, BOT_INFO_CHAN_KICK_REVERSES,
|
||||
getstring(u, BOT_INFO_ACTIVE));
|
||||
} else
|
||||
notice_lang(s_BotServ, u, BOT_INFO_CHAN_KICK_REVERSES,
|
||||
notice_lang(Config.s_BotServ, u, BOT_INFO_CHAN_KICK_REVERSES,
|
||||
getstring(u, BOT_INFO_INACTIVE));
|
||||
if (ci->botflags & BS_KICK_UNDERLINES) {
|
||||
if (ci->botflags.HasFlag(BS_KICK_UNDERLINES)) {
|
||||
if (ci->ttb[TTB_UNDERLINES])
|
||||
notice_lang(s_BotServ, u,
|
||||
notice_lang(Config.s_BotServ, u,
|
||||
BOT_INFO_CHAN_KICK_UNDERLINES_BAN,
|
||||
getstring(u, BOT_INFO_ACTIVE),
|
||||
ci->ttb[TTB_UNDERLINES]);
|
||||
else
|
||||
notice_lang(s_BotServ, u, BOT_INFO_CHAN_KICK_UNDERLINES,
|
||||
notice_lang(Config.s_BotServ, u, BOT_INFO_CHAN_KICK_UNDERLINES,
|
||||
getstring(u, BOT_INFO_ACTIVE));
|
||||
} else
|
||||
notice_lang(s_BotServ, u, BOT_INFO_CHAN_KICK_UNDERLINES,
|
||||
notice_lang(Config.s_BotServ, u, BOT_INFO_CHAN_KICK_UNDERLINES,
|
||||
getstring(u, BOT_INFO_INACTIVE));
|
||||
|
||||
end = buf;
|
||||
*end = 0;
|
||||
if (ci->botflags & BS_DONTKICKOPS) {
|
||||
if (ci->botflags.HasFlag(BS_DONTKICKOPS)) {
|
||||
end += snprintf(end, sizeof(buf) - (end - buf), "%s",
|
||||
getstring(u, BOT_INFO_OPT_DONTKICKOPS));
|
||||
need_comma = 1;
|
||||
}
|
||||
if (ci->botflags & BS_DONTKICKVOICES) {
|
||||
if (ci->botflags.HasFlag(BS_DONTKICKVOICES)) {
|
||||
end += snprintf(end, sizeof(buf) - (end - buf), "%s%s",
|
||||
need_comma ? commastr : "",
|
||||
getstring(u, BOT_INFO_OPT_DONTKICKVOICES));
|
||||
need_comma = 1;
|
||||
}
|
||||
if (ci->botflags & BS_FANTASY) {
|
||||
if (ci->botflags.HasFlag(BS_FANTASY)) {
|
||||
end += snprintf(end, sizeof(buf) - (end - buf), "%s%s",
|
||||
need_comma ? commastr : "",
|
||||
getstring(u, BOT_INFO_OPT_FANTASY));
|
||||
need_comma = 1;
|
||||
}
|
||||
if (ci->botflags & BS_GREET) {
|
||||
if (ci->botflags.HasFlag(BS_GREET)) {
|
||||
end += snprintf(end, sizeof(buf) - (end - buf), "%s%s",
|
||||
need_comma ? commastr : "",
|
||||
getstring(u, BOT_INFO_OPT_GREET));
|
||||
need_comma = 1;
|
||||
}
|
||||
if (ci->botflags & BS_NOBOT) {
|
||||
if (ci->botflags.HasFlag(BS_NOBOT)) {
|
||||
end += snprintf(end, sizeof(buf) - (end - buf), "%s%s",
|
||||
need_comma ? commastr : "",
|
||||
getstring(u, BOT_INFO_OPT_NOBOT));
|
||||
need_comma = 1;
|
||||
}
|
||||
if (ci->botflags & BS_SYMBIOSIS) {
|
||||
if (ci->botflags.HasFlag(BS_SYMBIOSIS)) {
|
||||
end += snprintf(end, sizeof(buf) - (end - buf), "%s%s",
|
||||
need_comma ? commastr : "",
|
||||
getstring(u, BOT_INFO_OPT_SYMBIOSIS));
|
||||
need_comma = 1;
|
||||
}
|
||||
notice_lang(s_BotServ, u, BOT_INFO_CHAN_OPTIONS,
|
||||
notice_lang(Config.s_BotServ, u, BOT_INFO_CHAN_OPTIONS,
|
||||
*buf ? buf : getstring(u, BOT_INFO_OPT_NONE));
|
||||
|
||||
} else
|
||||
notice_lang(s_BotServ, u, BOT_INFO_NOT_FOUND, query);
|
||||
notice_lang(Config.s_BotServ, u, BOT_INFO_NOT_FOUND, query);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
bool OnHelp(User *u, const ci::string &subcommand)
|
||||
{
|
||||
notice_help(s_BotServ, u, BOT_HELP_INFO);
|
||||
notice_help(Config.s_BotServ, u, BOT_HELP_INFO);
|
||||
return true;
|
||||
}
|
||||
|
||||
void OnSyntaxError(User *u)
|
||||
void OnSyntaxError(User *u, const ci::string &subcommand)
|
||||
{
|
||||
syntax_error(s_BotServ, u, "INFO", BOT_INFO_SYNTAX);
|
||||
syntax_error(Config.s_BotServ, u, "INFO", BOT_INFO_SYNTAX);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -257,10 +253,12 @@ class BSInfo : public Module
|
||||
this->SetVersion("$Id$");
|
||||
this->SetType(CORE);
|
||||
this->AddCommand(BOTSERV, new CommandBSInfo());
|
||||
|
||||
ModuleManager::Attach(I_OnBotServHelp, this);
|
||||
}
|
||||
void BotServHelp(User *u)
|
||||
void OnBotServHelp(User *u)
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_HELP_CMD_INFO);
|
||||
notice_lang(Config.s_BotServ, u, BOT_HELP_CMD_INFO);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
+103
-121
@@ -1,6 +1,6 @@
|
||||
/* BotServ core functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2010 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -15,16 +15,14 @@
|
||||
|
||||
#include "module.h"
|
||||
|
||||
int do_kickcmd(User * u);
|
||||
|
||||
class CommandBSKick : public Command
|
||||
{
|
||||
public:
|
||||
CommandBSKick() : Command("KICK", 3, 4)
|
||||
CommandBSKick() : Command("KICK", 3, 6)
|
||||
{
|
||||
}
|
||||
|
||||
CommandReturn Execute(User *u, std::vector<ci::string> ¶ms)
|
||||
CommandReturn Execute(User *u, const std::vector<ci::string> ¶ms)
|
||||
{
|
||||
const char *chan = params[0].c_str();
|
||||
ci::string option = params[1];
|
||||
@@ -34,88 +32,81 @@ class CommandBSKick : public Command
|
||||
ChannelInfo *ci = cs_findchan(chan);
|
||||
|
||||
if (readonly)
|
||||
notice_lang(s_BotServ, u, BOT_KICK_DISABLED);
|
||||
notice_lang(Config.s_BotServ, u, BOT_KICK_DISABLED);
|
||||
else if (!chan || option.empty() || value.empty())
|
||||
syntax_error(s_BotServ, u, "KICK", BOT_KICK_SYNTAX);
|
||||
syntax_error(Config.s_BotServ, u, "KICK", BOT_KICK_SYNTAX);
|
||||
else if (value != "ON" && value != "OFF")
|
||||
syntax_error(s_BotServ, u, "KICK", BOT_KICK_SYNTAX);
|
||||
else if (!check_access(u, ci, CA_SET) && !u->nc->HasPriv("botserv/administration"))
|
||||
notice_lang(s_BotServ, u, ACCESS_DENIED);
|
||||
syntax_error(Config.s_BotServ, u, "KICK", BOT_KICK_SYNTAX);
|
||||
else if (!check_access(u, ci, CA_SET) && !u->Account()->HasPriv("botserv/administration"))
|
||||
notice_lang(Config.s_BotServ, u, ACCESS_DENIED);
|
||||
else if (!ci->bi)
|
||||
notice_help(s_BotServ, u, BOT_NOT_ASSIGNED);
|
||||
notice_help(Config.s_BotServ, u, BOT_NOT_ASSIGNED);
|
||||
else {
|
||||
if (option == "BADWORDS") {
|
||||
if (value == "ON") {
|
||||
if (ttb) {
|
||||
errno = 0;
|
||||
ci->ttb[TTB_BADWORDS] =
|
||||
strtol(ttb, NULL, 10);
|
||||
ci->ttb[TTB_BADWORDS] = strtol(ttb, NULL, 10);
|
||||
/* Only error if errno returns ERANGE or EINVAL or we are less then 0 - TSL */
|
||||
if (errno == ERANGE || errno == EINVAL
|
||||
|| ci->ttb[TTB_BADWORDS] < 0) {
|
||||
if (errno == ERANGE || errno == EINVAL || ci->ttb[TTB_BADWORDS] < 0)
|
||||
{
|
||||
/* leaving the debug behind since we might want to know what these are */
|
||||
if (debug) {
|
||||
alog("debug: errno is %d ERANGE %d EINVAL %d ttb %d", errno, ERANGE, EINVAL, ci->ttb[TTB_BADWORDS]);
|
||||
}
|
||||
Alog(LOG_DEBUG) << "errno is " << errno << " ERANGE " << ERANGE << " EINVAL " << EINVAL << " ttb " << ci->ttb[TTB_BADWORDS];
|
||||
/* reset the value back to 0 - TSL */
|
||||
ci->ttb[TTB_BADWORDS] = 0;
|
||||
notice_lang(s_BotServ, u, BOT_KICK_BAD_TTB, ttb);
|
||||
notice_lang(Config.s_BotServ, u, BOT_KICK_BAD_TTB, ttb);
|
||||
return MOD_CONT;
|
||||
}
|
||||
} else {
|
||||
ci->ttb[TTB_BADWORDS] = 0;
|
||||
}
|
||||
ci->botflags |= BS_KICK_BADWORDS;
|
||||
ci->botflags.SetFlag(BS_KICK_BADWORDS);
|
||||
if (ci->ttb[TTB_BADWORDS])
|
||||
notice_lang(s_BotServ, u, BOT_KICK_BADWORDS_ON_BAN,
|
||||
notice_lang(Config.s_BotServ, u, BOT_KICK_BADWORDS_ON_BAN,
|
||||
ci->ttb[TTB_BADWORDS]);
|
||||
else
|
||||
notice_lang(s_BotServ, u, BOT_KICK_BADWORDS_ON);
|
||||
notice_lang(Config.s_BotServ, u, BOT_KICK_BADWORDS_ON);
|
||||
} else {
|
||||
ci->botflags &= ~BS_KICK_BADWORDS;
|
||||
notice_lang(s_BotServ, u, BOT_KICK_BADWORDS_OFF);
|
||||
ci->botflags.UnsetFlag(BS_KICK_BADWORDS);
|
||||
notice_lang(Config.s_BotServ, u, BOT_KICK_BADWORDS_OFF);
|
||||
}
|
||||
} else if (option == "BOLDS") {
|
||||
if (value == "ON") {
|
||||
if (ttb) {
|
||||
errno = 0;
|
||||
ci->ttb[TTB_BOLDS] = strtol(ttb, NULL, 10);
|
||||
if (errno == ERANGE || errno == EINVAL
|
||||
|| ci->ttb[TTB_BOLDS] < 0) {
|
||||
if (debug) {
|
||||
alog("debug: errno is %d ERANGE %d EINVAL %d ttb %d", errno, ERANGE, EINVAL, ci->ttb[TTB_BOLDS]);
|
||||
}
|
||||
if (errno == ERANGE || errno == EINVAL || ci->ttb[TTB_BOLDS] < 0)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "errno is " << errno << " ERANGE " << ERANGE << " EINVAL " << EINVAL << " ttb " << ci->ttb[TTB_BOLDS];
|
||||
ci->ttb[TTB_BOLDS] = 0;
|
||||
notice_lang(s_BotServ, u, BOT_KICK_BAD_TTB, ttb);
|
||||
notice_lang(Config.s_BotServ, u, BOT_KICK_BAD_TTB, ttb);
|
||||
return MOD_CONT;
|
||||
}
|
||||
} else
|
||||
ci->ttb[TTB_BOLDS] = 0;
|
||||
ci->botflags |= BS_KICK_BOLDS;
|
||||
ci->botflags.SetFlag(BS_KICK_BOLDS);
|
||||
if (ci->ttb[TTB_BOLDS])
|
||||
notice_lang(s_BotServ, u, BOT_KICK_BOLDS_ON_BAN,
|
||||
notice_lang(Config.s_BotServ, u, BOT_KICK_BOLDS_ON_BAN,
|
||||
ci->ttb[TTB_BOLDS]);
|
||||
else
|
||||
notice_lang(s_BotServ, u, BOT_KICK_BOLDS_ON);
|
||||
notice_lang(Config.s_BotServ, u, BOT_KICK_BOLDS_ON);
|
||||
} else {
|
||||
ci->botflags &= ~BS_KICK_BOLDS;
|
||||
notice_lang(s_BotServ, u, BOT_KICK_BOLDS_OFF);
|
||||
ci->botflags.UnsetFlag(BS_KICK_BOLDS);
|
||||
notice_lang(Config.s_BotServ, u, BOT_KICK_BOLDS_OFF);
|
||||
}
|
||||
} else if (option == "CAPS") {
|
||||
if (value == "ON") {
|
||||
char *min = strtok(NULL, " ");
|
||||
char *percent = strtok(NULL, " ");
|
||||
const char *min = params.size() > 4 ? params[4].c_str() : NULL;
|
||||
const char *percent = params.size() > 5 ? params[5].c_str() : NULL;
|
||||
|
||||
if (ttb) {
|
||||
errno = 0;
|
||||
ci->ttb[TTB_CAPS] = strtol(ttb, NULL, 10);
|
||||
if (errno == ERANGE || errno == EINVAL
|
||||
|| ci->ttb[TTB_CAPS] < 0) {
|
||||
if (debug) {
|
||||
alog("debug: errno is %d ERANGE %d EINVAL %d ttb %d", errno, ERANGE, EINVAL, ci->ttb[TTB_CAPS]);
|
||||
}
|
||||
if (errno == ERANGE || errno == EINVAL || ci->ttb[TTB_CAPS] < 0)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "errno is " << errno << " ERANGE " << ERANGE << " EINVAL " << EINVAL << " ttb " << ci->ttb[TTB_CAPS];
|
||||
ci->ttb[TTB_CAPS] = 0;
|
||||
notice_lang(s_BotServ, u, BOT_KICK_BAD_TTB, ttb);
|
||||
notice_lang(Config.s_BotServ, u, BOT_KICK_BAD_TTB, ttb);
|
||||
return MOD_CONT;
|
||||
}
|
||||
} else
|
||||
@@ -135,59 +126,54 @@ class CommandBSKick : public Command
|
||||
if (ci->capspercent < 1 || ci->capspercent > 100)
|
||||
ci->capspercent = 25;
|
||||
|
||||
ci->botflags |= BS_KICK_CAPS;
|
||||
ci->botflags.SetFlag(BS_KICK_CAPS);
|
||||
if (ci->ttb[TTB_CAPS])
|
||||
notice_lang(s_BotServ, u, BOT_KICK_CAPS_ON_BAN,
|
||||
notice_lang(Config.s_BotServ, u, BOT_KICK_CAPS_ON_BAN,
|
||||
ci->capsmin, ci->capspercent,
|
||||
ci->ttb[TTB_CAPS]);
|
||||
else
|
||||
notice_lang(s_BotServ, u, BOT_KICK_CAPS_ON,
|
||||
notice_lang(Config.s_BotServ, u, BOT_KICK_CAPS_ON,
|
||||
ci->capsmin, ci->capspercent);
|
||||
} else {
|
||||
ci->botflags &= ~BS_KICK_CAPS;
|
||||
notice_lang(s_BotServ, u, BOT_KICK_CAPS_OFF);
|
||||
ci->botflags.UnsetFlag(BS_KICK_CAPS);
|
||||
notice_lang(Config.s_BotServ, u, BOT_KICK_CAPS_OFF);
|
||||
}
|
||||
} else if (option == "COLORS") {
|
||||
if (value == "ON") {
|
||||
if (ttb) {
|
||||
errno = 0;
|
||||
ci->ttb[TTB_COLORS] = strtol(ttb, NULL, 10);
|
||||
if (errno == ERANGE || errno == EINVAL
|
||||
|| ci->ttb[TTB_COLORS] < 0) {
|
||||
if (debug) {
|
||||
alog("debug: errno is %d ERANGE %d EINVAL %d ttb %d", errno, ERANGE, EINVAL, ci->ttb[TTB_COLORS]);
|
||||
}
|
||||
if (errno == ERANGE || errno == EINVAL || ci->ttb[TTB_COLORS] < 0)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "errno is " << errno << " ERANGE " << ERANGE << " EINVAL " << EINVAL << " ttb " << ci->ttb[TTB_COLORS];
|
||||
ci->ttb[TTB_COLORS] = 0;
|
||||
notice_lang(s_BotServ, u, BOT_KICK_BAD_TTB, ttb);
|
||||
notice_lang(Config.s_BotServ, u, BOT_KICK_BAD_TTB, ttb);
|
||||
return MOD_CONT;
|
||||
}
|
||||
} else
|
||||
ci->ttb[TTB_COLORS] = 0;
|
||||
ci->botflags |= BS_KICK_COLORS;
|
||||
ci->botflags.SetFlag(BS_KICK_COLORS);
|
||||
if (ci->ttb[TTB_COLORS])
|
||||
notice_lang(s_BotServ, u, BOT_KICK_COLORS_ON_BAN,
|
||||
notice_lang(Config.s_BotServ, u, BOT_KICK_COLORS_ON_BAN,
|
||||
ci->ttb[TTB_COLORS]);
|
||||
else
|
||||
notice_lang(s_BotServ, u, BOT_KICK_COLORS_ON);
|
||||
notice_lang(Config.s_BotServ, u, BOT_KICK_COLORS_ON);
|
||||
} else {
|
||||
ci->botflags &= ~BS_KICK_COLORS;
|
||||
notice_lang(s_BotServ, u, BOT_KICK_COLORS_OFF);
|
||||
ci->botflags.UnsetFlag(BS_KICK_COLORS);
|
||||
notice_lang(Config.s_BotServ, u, BOT_KICK_COLORS_OFF);
|
||||
}
|
||||
} else if (option == "FLOOD") {
|
||||
if (value == "ON") {
|
||||
char *lines = strtok(NULL, " ");
|
||||
char *secs = strtok(NULL, " ");
|
||||
const char *lines = params.size() > 4 ? params[4].c_str() : NULL;
|
||||
const char *secs = params.size() > 5 ? params[5].c_str() : NULL;
|
||||
|
||||
if (ttb) {
|
||||
errno = 0;
|
||||
ci->ttb[TTB_FLOOD] = strtol(ttb, NULL, 10);
|
||||
if (errno == ERANGE || errno == EINVAL
|
||||
|| ci->ttb[TTB_FLOOD] < 0) {
|
||||
if (debug) {
|
||||
alog("debug: errno is %d ERANGE %d EINVAL %d ttb %d", errno, ERANGE, EINVAL, ci->ttb[TTB_FLOOD]);
|
||||
}
|
||||
if (errno == ERANGE || errno == EINVAL || ci->ttb[TTB_FLOOD] < 0) {
|
||||
Alog(LOG_DEBUG) << "errno is " << errno << " ERANGE " << ERANGE << " EINVAL " << EINVAL << " ttb " << ci->ttb[TTB_FLOOD];
|
||||
ci->ttb[TTB_FLOOD] = 0;
|
||||
notice_lang(s_BotServ, u, BOT_KICK_BAD_TTB, ttb);
|
||||
notice_lang(Config.s_BotServ, u, BOT_KICK_BAD_TTB, ttb);
|
||||
return MOD_CONT;
|
||||
}
|
||||
} else
|
||||
@@ -204,35 +190,33 @@ class CommandBSKick : public Command
|
||||
ci->floodsecs = 10;
|
||||
else
|
||||
ci->floodsecs = atol(secs);
|
||||
if (ci->floodsecs < 1 || ci->floodsecs > BSKeepData)
|
||||
if (ci->floodsecs < 1 || ci->floodsecs > Config.BSKeepData)
|
||||
ci->floodsecs = 10;
|
||||
|
||||
ci->botflags |= BS_KICK_FLOOD;
|
||||
ci->botflags.SetFlag(BS_KICK_FLOOD);
|
||||
if (ci->ttb[TTB_FLOOD])
|
||||
notice_lang(s_BotServ, u, BOT_KICK_FLOOD_ON_BAN,
|
||||
notice_lang(Config.s_BotServ, u, BOT_KICK_FLOOD_ON_BAN,
|
||||
ci->floodlines, ci->floodsecs,
|
||||
ci->ttb[TTB_FLOOD]);
|
||||
else
|
||||
notice_lang(s_BotServ, u, BOT_KICK_FLOOD_ON,
|
||||
notice_lang(Config.s_BotServ, u, BOT_KICK_FLOOD_ON,
|
||||
ci->floodlines, ci->floodsecs);
|
||||
} else {
|
||||
ci->botflags &= ~BS_KICK_FLOOD;
|
||||
notice_lang(s_BotServ, u, BOT_KICK_FLOOD_OFF);
|
||||
ci->botflags.UnsetFlag(BS_KICK_FLOOD);
|
||||
notice_lang(Config.s_BotServ, u, BOT_KICK_FLOOD_OFF);
|
||||
}
|
||||
} else if (option == "REPEAT") {
|
||||
if (value == "ON") {
|
||||
char *times = strtok(NULL, " ");
|
||||
const char *times = params.size() > 4 ? params[4].c_str() : NULL;
|
||||
|
||||
if (ttb) {
|
||||
errno = 0;
|
||||
ci->ttb[TTB_REPEAT] = strtol(ttb, NULL, 10);
|
||||
if (errno == ERANGE || errno == EINVAL
|
||||
|| ci->ttb[TTB_REPEAT] < 0) {
|
||||
if (debug) {
|
||||
alog("debug: errno is %d ERANGE %d EINVAL %d ttb %d", errno, ERANGE, EINVAL, ci->ttb[TTB_REPEAT]);
|
||||
}
|
||||
if (errno == ERANGE || errno == EINVAL || ci->ttb[TTB_REPEAT] < 0)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "errno is " << errno << " ERANGE " << ERANGE << " EINVAL " << EINVAL << " ttb " << ci->ttb[TTB_REPEAT];
|
||||
ci->ttb[TTB_REPEAT] = 0;
|
||||
notice_lang(s_BotServ, u, BOT_KICK_BAD_TTB, ttb);
|
||||
notice_lang(Config.s_BotServ, u, BOT_KICK_BAD_TTB, ttb);
|
||||
return MOD_CONT;
|
||||
}
|
||||
} else
|
||||
@@ -245,16 +229,16 @@ class CommandBSKick : public Command
|
||||
if (ci->repeattimes < 2)
|
||||
ci->repeattimes = 3;
|
||||
|
||||
ci->botflags |= BS_KICK_REPEAT;
|
||||
ci->botflags.SetFlag(BS_KICK_REPEAT);
|
||||
if (ci->ttb[TTB_REPEAT])
|
||||
notice_lang(s_BotServ, u, BOT_KICK_REPEAT_ON_BAN,
|
||||
notice_lang(Config.s_BotServ, u, BOT_KICK_REPEAT_ON_BAN,
|
||||
ci->repeattimes, ci->ttb[TTB_REPEAT]);
|
||||
else
|
||||
notice_lang(s_BotServ, u, BOT_KICK_REPEAT_ON,
|
||||
notice_lang(Config.s_BotServ, u, BOT_KICK_REPEAT_ON,
|
||||
ci->repeattimes);
|
||||
} else {
|
||||
ci->botflags &= ~BS_KICK_REPEAT;
|
||||
notice_lang(s_BotServ, u, BOT_KICK_REPEAT_OFF);
|
||||
ci->botflags.UnsetFlag(BS_KICK_REPEAT);
|
||||
notice_lang(Config.s_BotServ, u, BOT_KICK_REPEAT_OFF);
|
||||
}
|
||||
} else if (option == "REVERSES") {
|
||||
if (value == "ON") {
|
||||
@@ -262,26 +246,24 @@ class CommandBSKick : public Command
|
||||
errno = 0;
|
||||
ci->ttb[TTB_REVERSES] =
|
||||
strtol(ttb, NULL, 10);
|
||||
if (errno == ERANGE || errno == EINVAL
|
||||
|| ci->ttb[TTB_REVERSES] < 0) {
|
||||
if (debug) {
|
||||
alog("debug: errno is %d ERANGE %d EINVAL %d ttb %d", errno, ERANGE, EINVAL, ci->ttb[TTB_REVERSES]);
|
||||
}
|
||||
if (errno == ERANGE || errno == EINVAL || ci->ttb[TTB_REVERSES] < 0)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "errno is " << errno << " ERANGE " << ERANGE << " EINVAL " << EINVAL << " ttb " << ci->ttb[TTB_REVERSES];
|
||||
ci->ttb[TTB_REVERSES] = 0;
|
||||
notice_lang(s_BotServ, u, BOT_KICK_BAD_TTB, ttb);
|
||||
notice_lang(Config.s_BotServ, u, BOT_KICK_BAD_TTB, ttb);
|
||||
return MOD_CONT;
|
||||
}
|
||||
} else
|
||||
ci->ttb[TTB_REVERSES] = 0;
|
||||
ci->botflags |= BS_KICK_REVERSES;
|
||||
ci->botflags.SetFlag(BS_KICK_REVERSES);
|
||||
if (ci->ttb[TTB_REVERSES])
|
||||
notice_lang(s_BotServ, u, BOT_KICK_REVERSES_ON_BAN,
|
||||
notice_lang(Config.s_BotServ, u, BOT_KICK_REVERSES_ON_BAN,
|
||||
ci->ttb[TTB_REVERSES]);
|
||||
else
|
||||
notice_lang(s_BotServ, u, BOT_KICK_REVERSES_ON);
|
||||
notice_lang(Config.s_BotServ, u, BOT_KICK_REVERSES_ON);
|
||||
} else {
|
||||
ci->botflags &= ~BS_KICK_REVERSES;
|
||||
notice_lang(s_BotServ, u, BOT_KICK_REVERSES_OFF);
|
||||
ci->botflags.UnsetFlag(BS_KICK_REVERSES);
|
||||
notice_lang(Config.s_BotServ, u, BOT_KICK_REVERSES_OFF);
|
||||
}
|
||||
} else if (option == "UNDERLINES") {
|
||||
if (value == "ON") {
|
||||
@@ -289,29 +271,27 @@ class CommandBSKick : public Command
|
||||
errno = 0;
|
||||
ci->ttb[TTB_UNDERLINES] =
|
||||
strtol(ttb, NULL, 10);
|
||||
if (errno == ERANGE || errno == EINVAL
|
||||
|| ci->ttb[TTB_UNDERLINES] < 0) {
|
||||
if (debug) {
|
||||
alog("debug: errno is %d ERANGE %d EINVAL %d ttb %d", errno, ERANGE, EINVAL, ci->ttb[TTB_UNDERLINES]);
|
||||
}
|
||||
if (errno == ERANGE || errno == EINVAL || ci->ttb[TTB_UNDERLINES] < 0)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "errno is " << errno << " ERANGE " << ERANGE << " EINVAL " << EINVAL << " ttb " << ci->ttb[TTB_UNDERLINES];
|
||||
ci->ttb[TTB_UNDERLINES] = 0;
|
||||
notice_lang(s_BotServ, u, BOT_KICK_BAD_TTB, ttb);
|
||||
notice_lang(Config.s_BotServ, u, BOT_KICK_BAD_TTB, ttb);
|
||||
return MOD_CONT;
|
||||
}
|
||||
} else
|
||||
ci->ttb[TTB_UNDERLINES] = 0;
|
||||
ci->botflags |= BS_KICK_UNDERLINES;
|
||||
ci->botflags.SetFlag(BS_KICK_UNDERLINES);
|
||||
if (ci->ttb[TTB_UNDERLINES])
|
||||
notice_lang(s_BotServ, u, BOT_KICK_UNDERLINES_ON_BAN,
|
||||
notice_lang(Config.s_BotServ, u, BOT_KICK_UNDERLINES_ON_BAN,
|
||||
ci->ttb[TTB_UNDERLINES]);
|
||||
else
|
||||
notice_lang(s_BotServ, u, BOT_KICK_UNDERLINES_ON);
|
||||
notice_lang(Config.s_BotServ, u, BOT_KICK_UNDERLINES_ON);
|
||||
} else {
|
||||
ci->botflags &= ~BS_KICK_UNDERLINES;
|
||||
notice_lang(s_BotServ, u, BOT_KICK_UNDERLINES_OFF);
|
||||
ci->botflags.UnsetFlag(BS_KICK_UNDERLINES);
|
||||
notice_lang(Config.s_BotServ, u, BOT_KICK_UNDERLINES_OFF);
|
||||
}
|
||||
} else
|
||||
notice_help(s_BotServ, u, BOT_KICK_UNKNOWN, option.c_str());
|
||||
notice_help(Config.s_BotServ, u, BOT_KICK_UNKNOWN, option.c_str());
|
||||
}
|
||||
return MOD_CONT;
|
||||
}
|
||||
@@ -319,32 +299,32 @@ class CommandBSKick : public Command
|
||||
bool OnHelp(User *u, const ci::string &subcommand)
|
||||
{
|
||||
if (subcommand.empty())
|
||||
notice_help(s_BotServ, u, BOT_HELP_KICK);
|
||||
notice_help(Config.s_BotServ, u, BOT_HELP_KICK);
|
||||
else if (subcommand == "BADWORDS")
|
||||
notice_help(s_BotServ, u, BOT_HELP_KICK_BADWORDS);
|
||||
notice_help(Config.s_BotServ, u, BOT_HELP_KICK_BADWORDS);
|
||||
else if (subcommand == "BOLDS")
|
||||
notice_help(s_BotServ, u, BOT_HELP_KICK_BOLDS);
|
||||
notice_help(Config.s_BotServ, u, BOT_HELP_KICK_BOLDS);
|
||||
else if (subcommand == "CAPS")
|
||||
notice_help(s_BotServ, u, BOT_HELP_KICK_CAPS);
|
||||
notice_help(Config.s_BotServ, u, BOT_HELP_KICK_CAPS);
|
||||
else if (subcommand == "COLORS")
|
||||
notice_help(s_BotServ, u, BOT_HELP_KICK_COLORS);
|
||||
notice_help(Config.s_BotServ, u, BOT_HELP_KICK_COLORS);
|
||||
else if (subcommand == "FLOOD")
|
||||
notice_help(s_BotServ, u, BOT_HELP_KICK_FLOOD);
|
||||
notice_help(Config.s_BotServ, u, BOT_HELP_KICK_FLOOD);
|
||||
else if (subcommand == "REPEAT")
|
||||
notice_help(s_BotServ, u, BOT_HELP_KICK_REPEAT);
|
||||
notice_help(Config.s_BotServ, u, BOT_HELP_KICK_REPEAT);
|
||||
else if (subcommand == "REVERSES")
|
||||
notice_help(s_BotServ, u, BOT_HELP_KICK_REVERSES);
|
||||
notice_help(Config.s_BotServ, u, BOT_HELP_KICK_REVERSES);
|
||||
else if (subcommand == "UNDERLINES")
|
||||
notice_help(s_BotServ, u, BOT_HELP_KICK_UNDERLINES);
|
||||
notice_help(Config.s_BotServ, u, BOT_HELP_KICK_UNDERLINES);
|
||||
else
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void OnSyntaxError(User *u)
|
||||
void OnSyntaxError(User *u, const ci::string &subcommand)
|
||||
{
|
||||
syntax_error(s_BotServ, u, "KICK", BOT_KICK_SYNTAX);
|
||||
syntax_error(Config.s_BotServ, u, "KICK", BOT_KICK_SYNTAX);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -357,10 +337,12 @@ class BSKick : public Module
|
||||
this->SetVersion("$Id$");
|
||||
this->SetType(CORE);
|
||||
this->AddCommand(BOTSERV, new CommandBSKick());
|
||||
|
||||
ModuleManager::Attach(I_OnBotServHelp, this);
|
||||
}
|
||||
void BotServHelp(User *u)
|
||||
void OnBotServHelp(User *u)
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_HELP_CMD_KICK);
|
||||
notice_lang(Config.s_BotServ, u, BOT_HELP_CMD_KICK);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
+17
-15
@@ -1,6 +1,6 @@
|
||||
/* BotServ core functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2010 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -22,7 +22,7 @@ class CommandBSSay : public Command
|
||||
{
|
||||
}
|
||||
|
||||
CommandReturn Execute(User *u, std::vector<ci::string> ¶ms)
|
||||
CommandReturn Execute(User *u, const std::vector<ci::string> ¶ms)
|
||||
{
|
||||
ChannelInfo *ci;
|
||||
|
||||
@@ -33,44 +33,44 @@ class CommandBSSay : public Command
|
||||
|
||||
if (!check_access(u, ci, CA_SAY))
|
||||
{
|
||||
notice_lang(s_BotServ, u, ACCESS_DENIED);
|
||||
notice_lang(Config.s_BotServ, u, ACCESS_DENIED);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
if (!ci->bi)
|
||||
{
|
||||
notice_help(s_BotServ, u, BOT_NOT_ASSIGNED);
|
||||
notice_help(Config.s_BotServ, u, BOT_NOT_ASSIGNED);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
if (!ci->c || ci->c->usercount < BSMinUsers)
|
||||
if (!ci->c || ci->c->users.size() < Config.BSMinUsers)
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_NOT_ON_CHANNEL, ci->name);
|
||||
notice_lang(Config.s_BotServ, u, BOT_NOT_ON_CHANNEL, ci->name.c_str());
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
if (text[0] == '\001')
|
||||
{
|
||||
this->OnSyntaxError(u);
|
||||
this->OnSyntaxError(u, "");
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
ircdproto->SendPrivmsg(ci->bi, ci->name, "%s", text);
|
||||
ircdproto->SendPrivmsg(ci->bi, ci->name.c_str(), "%s", text);
|
||||
ci->bi->lastmsg = time(NULL);
|
||||
if (LogBot && LogChannel && logchan && !debug && findchan(LogChannel))
|
||||
ircdproto->SendPrivmsg(ci->bi, LogChannel, "SAY %s %s %s", u->nick, ci->name, text);
|
||||
if (Config.LogBot && Config.LogChannel && LogChan && !debug && findchan(Config.LogChannel))
|
||||
ircdproto->SendPrivmsg(ci->bi, Config.LogChannel, "SAY %s %s %s", u->nick.c_str(), ci->name.c_str(), text);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
bool OnHelp(User *u, const ci::string &subcommand)
|
||||
{
|
||||
notice_help(s_BotServ, u, BOT_HELP_SAY);
|
||||
notice_help(Config.s_BotServ, u, BOT_HELP_SAY);
|
||||
return true;
|
||||
}
|
||||
|
||||
void OnSyntaxError(User *u)
|
||||
void OnSyntaxError(User *u, const ci::string &subcommand)
|
||||
{
|
||||
syntax_error(s_BotServ, u, "SAY", BOT_SAY_SYNTAX);
|
||||
syntax_error(Config.s_BotServ, u, "SAY", BOT_SAY_SYNTAX);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -83,10 +83,12 @@ class BSSay : public Module
|
||||
this->SetVersion("$Id$");
|
||||
this->SetType(CORE);
|
||||
this->AddCommand(BOTSERV, new CommandBSSay());
|
||||
|
||||
ModuleManager::Attach(I_OnBotServHelp, this);
|
||||
}
|
||||
void BotServHelp(User *u)
|
||||
void OnBotServHelp(User *u)
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_HELP_CMD_SAY);
|
||||
notice_lang(Config.s_BotServ, u, BOT_HELP_CMD_SAY);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
+65
-63
@@ -1,6 +1,6 @@
|
||||
/* BotServ core functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2010 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -23,7 +23,7 @@ class CommandBSSet : public Command
|
||||
this->SetFlag(CFLAG_STRIP_CHANNEL);
|
||||
}
|
||||
|
||||
CommandReturn Execute(User *u, std::vector<ci::string> ¶ms)
|
||||
CommandReturn Execute(User *u, const std::vector<ci::string> ¶ms)
|
||||
{
|
||||
const char *chan = params[0].c_str();
|
||||
ci::string option = params[1];
|
||||
@@ -32,114 +32,114 @@ class CommandBSSet : public Command
|
||||
|
||||
if (readonly)
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_SET_DISABLED);
|
||||
notice_lang(Config.s_BotServ, u, BOT_SET_DISABLED);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
if (u->nc->HasCommand("botserv/set/private") && option == "PRIVATE")
|
||||
if (u->Account()->HasCommand("botserv/set/private") && option == "PRIVATE")
|
||||
{
|
||||
BotInfo *bi;
|
||||
|
||||
if (!(bi = findbot(chan)))
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_DOES_NOT_EXIST, chan);
|
||||
notice_lang(Config.s_BotServ, u, BOT_DOES_NOT_EXIST, chan);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
if (value == "ON")
|
||||
{
|
||||
bi->flags |= BI_PRIVATE;
|
||||
notice_lang(s_BotServ, u, BOT_SET_PRIVATE_ON, bi->nick);
|
||||
bi->SetFlag(BI_PRIVATE);
|
||||
notice_lang(Config.s_BotServ, u, BOT_SET_PRIVATE_ON, bi->nick.c_str());
|
||||
}
|
||||
else if (value == "OFF")
|
||||
{
|
||||
bi->flags &= ~BI_PRIVATE;
|
||||
notice_lang(s_BotServ, u, BOT_SET_PRIVATE_OFF, bi->nick);
|
||||
bi->UnsetFlag(BI_PRIVATE);
|
||||
notice_lang(Config.s_BotServ, u, BOT_SET_PRIVATE_OFF, bi->nick.c_str());
|
||||
}
|
||||
else
|
||||
{
|
||||
syntax_error(s_BotServ, u, "SET PRIVATE", BOT_SET_PRIVATE_SYNTAX);
|
||||
syntax_error(Config.s_BotServ, u, "SET PRIVATE", BOT_SET_PRIVATE_SYNTAX);
|
||||
}
|
||||
return MOD_CONT;
|
||||
} else if (!(ci = cs_findchan(chan)))
|
||||
notice_lang(s_BotServ, u, CHAN_X_NOT_REGISTERED, chan);
|
||||
else if (!u->nc->HasPriv("botserv/administration") && !check_access(u, ci, CA_SET))
|
||||
notice_lang(s_BotServ, u, ACCESS_DENIED);
|
||||
notice_lang(Config.s_BotServ, u, CHAN_X_NOT_REGISTERED, chan);
|
||||
else if (!u->Account()->HasPriv("botserv/administration") && !check_access(u, ci, CA_SET))
|
||||
notice_lang(Config.s_BotServ, u, ACCESS_DENIED);
|
||||
else {
|
||||
if (option == "DONTKICKOPS") {
|
||||
if (value == "ON") {
|
||||
ci->botflags |= BS_DONTKICKOPS;
|
||||
notice_lang(s_BotServ, u, BOT_SET_DONTKICKOPS_ON,
|
||||
ci->name);
|
||||
ci->botflags.SetFlag(BS_DONTKICKOPS);
|
||||
notice_lang(Config.s_BotServ, u, BOT_SET_DONTKICKOPS_ON,
|
||||
ci->name.c_str());
|
||||
} else if (value == "OFF") {
|
||||
ci->botflags &= ~BS_DONTKICKOPS;
|
||||
notice_lang(s_BotServ, u, BOT_SET_DONTKICKOPS_OFF,
|
||||
ci->name);
|
||||
ci->botflags.UnsetFlag(BS_DONTKICKOPS);
|
||||
notice_lang(Config.s_BotServ, u, BOT_SET_DONTKICKOPS_OFF,
|
||||
ci->name.c_str());
|
||||
} else {
|
||||
syntax_error(s_BotServ, u, "SET DONTKICKOPS",
|
||||
syntax_error(Config.s_BotServ, u, "SET DONTKICKOPS",
|
||||
BOT_SET_DONTKICKOPS_SYNTAX);
|
||||
}
|
||||
} else if (option == "DONTKICKVOICES") {
|
||||
if (value == "ON") {
|
||||
ci->botflags |= BS_DONTKICKVOICES;
|
||||
notice_lang(s_BotServ, u, BOT_SET_DONTKICKVOICES_ON,
|
||||
ci->name);
|
||||
ci->botflags.SetFlag(BS_DONTKICKVOICES);
|
||||
notice_lang(Config.s_BotServ, u, BOT_SET_DONTKICKVOICES_ON,
|
||||
ci->name.c_str());
|
||||
} else if (value == "OFF") {
|
||||
ci->botflags &= ~BS_DONTKICKVOICES;
|
||||
notice_lang(s_BotServ, u, BOT_SET_DONTKICKVOICES_OFF,
|
||||
ci->name);
|
||||
ci->botflags.UnsetFlag(BS_DONTKICKVOICES);
|
||||
notice_lang(Config.s_BotServ, u, BOT_SET_DONTKICKVOICES_OFF,
|
||||
ci->name.c_str());
|
||||
} else {
|
||||
syntax_error(s_BotServ, u, "SET DONTKICKVOICES",
|
||||
syntax_error(Config.s_BotServ, u, "SET DONTKICKVOICES",
|
||||
BOT_SET_DONTKICKVOICES_SYNTAX);
|
||||
}
|
||||
} else if (option == "FANTASY") {
|
||||
if (value == "ON") {
|
||||
ci->botflags |= BS_FANTASY;
|
||||
notice_lang(s_BotServ, u, BOT_SET_FANTASY_ON, ci->name);
|
||||
ci->botflags.SetFlag(BS_FANTASY);
|
||||
notice_lang(Config.s_BotServ, u, BOT_SET_FANTASY_ON, ci->name.c_str());
|
||||
} else if (value == "OFF") {
|
||||
ci->botflags &= ~BS_FANTASY;
|
||||
notice_lang(s_BotServ, u, BOT_SET_FANTASY_OFF, ci->name);
|
||||
ci->botflags.UnsetFlag(BS_FANTASY);
|
||||
notice_lang(Config.s_BotServ, u, BOT_SET_FANTASY_OFF, ci->name.c_str());
|
||||
} else {
|
||||
syntax_error(s_BotServ, u, "SET FANTASY",
|
||||
syntax_error(Config.s_BotServ, u, "SET FANTASY",
|
||||
BOT_SET_FANTASY_SYNTAX);
|
||||
}
|
||||
} else if (option == "GREET") {
|
||||
if (value == "ON") {
|
||||
ci->botflags |= BS_GREET;
|
||||
notice_lang(s_BotServ, u, BOT_SET_GREET_ON, ci->name);
|
||||
ci->botflags.SetFlag(BS_GREET);
|
||||
notice_lang(Config.s_BotServ, u, BOT_SET_GREET_ON, ci->name.c_str());
|
||||
} else if (value == "OFF") {
|
||||
ci->botflags &= ~BS_GREET;
|
||||
notice_lang(s_BotServ, u, BOT_SET_GREET_OFF, ci->name);
|
||||
ci->botflags.UnsetFlag(BS_GREET);
|
||||
notice_lang(Config.s_BotServ, u, BOT_SET_GREET_OFF, ci->name.c_str());
|
||||
} else {
|
||||
syntax_error(s_BotServ, u, "SET GREET",
|
||||
syntax_error(Config.s_BotServ, u, "SET GREET",
|
||||
BOT_SET_GREET_SYNTAX);
|
||||
}
|
||||
} else if (u->nc->HasCommand("botserv/set/nobot") && option == "NOBOT") {
|
||||
} else if (u->Account()->HasCommand("botserv/set/nobot") && option == "NOBOT") {
|
||||
if (value == "ON") {
|
||||
ci->botflags |= BS_NOBOT;
|
||||
ci->botflags.SetFlag(BS_NOBOT);
|
||||
if (ci->bi)
|
||||
ci->bi->UnAssign(u, ci);
|
||||
notice_lang(s_BotServ, u, BOT_SET_NOBOT_ON, ci->name);
|
||||
notice_lang(Config.s_BotServ, u, BOT_SET_NOBOT_ON, ci->name.c_str());
|
||||
} else if (value == "OFF") {
|
||||
ci->botflags &= ~BS_NOBOT;
|
||||
notice_lang(s_BotServ, u, BOT_SET_NOBOT_OFF, ci->name);
|
||||
ci->botflags.UnsetFlag(BS_NOBOT);
|
||||
notice_lang(Config.s_BotServ, u, BOT_SET_NOBOT_OFF, ci->name.c_str());
|
||||
} else {
|
||||
syntax_error(s_BotServ, u, "SET NOBOT",
|
||||
syntax_error(Config.s_BotServ, u, "SET NOBOT",
|
||||
BOT_SET_NOBOT_SYNTAX);
|
||||
}
|
||||
} else if (option == "SYMBIOSIS") {
|
||||
if (value == "ON") {
|
||||
ci->botflags |= BS_SYMBIOSIS;
|
||||
notice_lang(s_BotServ, u, BOT_SET_SYMBIOSIS_ON, ci->name);
|
||||
ci->botflags.SetFlag(BS_SYMBIOSIS);
|
||||
notice_lang(Config.s_BotServ, u, BOT_SET_SYMBIOSIS_ON, ci->name.c_str());
|
||||
} else if (value == "OFF") {
|
||||
ci->botflags &= ~BS_SYMBIOSIS;
|
||||
notice_lang(s_BotServ, u, BOT_SET_SYMBIOSIS_OFF, ci->name);
|
||||
ci->botflags.UnsetFlag(BS_SYMBIOSIS);
|
||||
notice_lang(Config.s_BotServ, u, BOT_SET_SYMBIOSIS_OFF, ci->name.c_str());
|
||||
} else {
|
||||
syntax_error(s_BotServ, u, "SET SYMBIOSIS",
|
||||
syntax_error(Config.s_BotServ, u, "SET SYMBIOSIS",
|
||||
BOT_SET_SYMBIOSIS_SYNTAX);
|
||||
}
|
||||
} else {
|
||||
notice_help(s_BotServ, u, BOT_SET_UNKNOWN, option.c_str());
|
||||
notice_help(Config.s_BotServ, u, BOT_SET_UNKNOWN, option.c_str());
|
||||
}
|
||||
}
|
||||
return MOD_CONT;
|
||||
@@ -149,33 +149,33 @@ class CommandBSSet : public Command
|
||||
{
|
||||
if (subcommand.empty())
|
||||
{
|
||||
notice_help(s_BotServ, u, BOT_HELP_SET);
|
||||
if (u->nc && u->nc->IsServicesOper())
|
||||
notice_help(s_BotServ, u, BOT_SERVADMIN_HELP_SET);
|
||||
notice_help(Config.s_BotServ, u, BOT_HELP_SET);
|
||||
if (u->Account() && u->Account()->IsServicesOper())
|
||||
notice_help(Config.s_BotServ, u, BOT_SERVADMIN_HELP_SET);
|
||||
}
|
||||
else if (subcommand == "DONTKICKOPS")
|
||||
notice_help(s_BotServ, u, BOT_HELP_SET_DONTKICKOPS);
|
||||
notice_help(Config.s_BotServ, u, BOT_HELP_SET_DONTKICKOPS);
|
||||
else if (subcommand == "DONTKICKVOICES")
|
||||
notice_help(s_BotServ, u, BOT_HELP_SET_DONTKICKVOICES);
|
||||
notice_help(Config.s_BotServ, u, BOT_HELP_SET_DONTKICKVOICES);
|
||||
else if (subcommand == "FANTASY")
|
||||
notice_help(s_BotServ, u, BOT_HELP_SET_FANTASY);
|
||||
notice_help(Config.s_BotServ, u, BOT_HELP_SET_FANTASY);
|
||||
else if (subcommand == "GREET")
|
||||
notice_help(s_BotServ, u, BOT_HELP_SET_GREET);
|
||||
notice_help(Config.s_BotServ, u, BOT_HELP_SET_GREET);
|
||||
else if (subcommand == "SYMBIOSIS")
|
||||
notice_lang(s_BotServ, u, BOT_HELP_SET_SYMBIOSIS, s_ChanServ);
|
||||
notice_lang(Config.s_BotServ, u, BOT_HELP_SET_SYMBIOSIS, Config.s_ChanServ);
|
||||
else if (subcommand == "NOBOT")
|
||||
notice_lang(s_BotServ, u, BOT_SERVADMIN_HELP_SET_NOBOT);
|
||||
notice_lang(Config.s_BotServ, u, BOT_SERVADMIN_HELP_SET_NOBOT);
|
||||
else if (subcommand == "PRIVATE")
|
||||
notice_lang(s_BotServ, u, BOT_SERVADMIN_HELP_SET_PRIVATE);
|
||||
notice_lang(Config.s_BotServ, u, BOT_SERVADMIN_HELP_SET_PRIVATE);
|
||||
else
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void OnSyntaxError(User *u)
|
||||
void OnSyntaxError(User *u, const ci::string &subcommand)
|
||||
{
|
||||
syntax_error(s_BotServ, u, "SET", BOT_SET_SYNTAX);
|
||||
syntax_error(Config.s_BotServ, u, "SET", BOT_SET_SYNTAX);
|
||||
}
|
||||
};
|
||||
class BSSet : public Module
|
||||
@@ -187,10 +187,12 @@ class BSSet : public Module
|
||||
this->SetVersion("$Id$");
|
||||
this->SetType(CORE);
|
||||
this->AddCommand(BOTSERV, new CommandBSSet());
|
||||
|
||||
ModuleManager::Attach(I_OnBotServHelp, this);
|
||||
}
|
||||
void BotServHelp(User *u)
|
||||
void OnBotServHelp(User *u)
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_HELP_CMD_SET);
|
||||
notice_lang(Config.s_BotServ, u, BOT_HELP_CMD_SET);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
+19
-15
@@ -1,6 +1,6 @@
|
||||
/* BotServ core functions
|
||||
*
|
||||
* (C) 2003-2009 Anope Team
|
||||
* (C) 2003-2010 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
@@ -15,8 +15,6 @@
|
||||
|
||||
#include "module.h"
|
||||
|
||||
int do_unassign(User * u);
|
||||
|
||||
class CommandBSUnassign : public Command
|
||||
{
|
||||
public:
|
||||
@@ -24,33 +22,37 @@ class CommandBSUnassign : public Command
|
||||
{
|
||||
}
|
||||
|
||||
CommandReturn Execute(User *u, std::vector<ci::string> ¶ms)
|
||||
CommandReturn Execute(User *u, const std::vector<ci::string> ¶ms)
|
||||
{
|
||||
const char *chan = params[0].c_str();
|
||||
ChannelInfo *ci = cs_findchan(chan);
|
||||
ChannelMode *cm = ModeManager::FindChannelModeByName(CMODE_PERM);
|
||||
|
||||
if (readonly)
|
||||
notice_lang(s_BotServ, u, BOT_ASSIGN_READONLY);
|
||||
else if (!u->nc->HasPriv("botserv/administration") && !check_access(u, ci, CA_ASSIGN))
|
||||
notice_lang(s_BotServ, u, ACCESS_DENIED);
|
||||
notice_lang(Config.s_BotServ, u, BOT_ASSIGN_READONLY);
|
||||
else if (!u->Account()->HasPriv("botserv/administration") && !check_access(u, ci, CA_ASSIGN))
|
||||
notice_lang(Config.s_BotServ, u, ACCESS_DENIED);
|
||||
else if (!ci->bi)
|
||||
notice_help(s_BotServ, u, BOT_NOT_ASSIGNED);
|
||||
else {
|
||||
notice_help(Config.s_BotServ, u, BOT_NOT_ASSIGNED);
|
||||
else if (ci->HasFlag(CI_PERSIST) && !cm)
|
||||
notice_help(Config.s_BotServ, u, BOT_UNASSIGN_PERSISTANT_CHAN);
|
||||
else
|
||||
{
|
||||
ci->bi->UnAssign(u, ci);
|
||||
notice_lang(s_BotServ, u, BOT_UNASSIGN_UNASSIGNED, ci->name);
|
||||
notice_lang(Config.s_BotServ, u, BOT_UNASSIGN_UNASSIGNED, ci->name.c_str());
|
||||
}
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
bool OnHelp(User *u, const ci::string &subcommand)
|
||||
{
|
||||
notice_help(s_BotServ, u, BOT_HELP_UNASSIGN);
|
||||
notice_help(Config.s_BotServ, u, BOT_HELP_UNASSIGN);
|
||||
return true;
|
||||
}
|
||||
|
||||
void OnSyntaxError(User *u)
|
||||
void OnSyntaxError(User *u, const ci::string &subcommand)
|
||||
{
|
||||
syntax_error(s_BotServ, u, "UNASSIGN", BOT_UNASSIGN_SYNTAX);
|
||||
syntax_error(Config.s_BotServ, u, "UNASSIGN", BOT_UNASSIGN_SYNTAX);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -63,10 +65,12 @@ class BSUnassign : public Module
|
||||
this->SetVersion("$Id$");
|
||||
this->SetType(CORE);
|
||||
this->AddCommand(BOTSERV, new CommandBSUnassign);
|
||||
|
||||
ModuleManager::Attach(I_OnBotServHelp, this);
|
||||
}
|
||||
void BotServHelp(User *u)
|
||||
void OnBotServHelp(User *u)
|
||||
{
|
||||
notice_lang(s_BotServ, u, BOT_HELP_CMD_UNASSIGN);
|
||||
notice_lang(Config.s_BotServ, u, BOT_HELP_CMD_UNASSIGN);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user