Merge branch 'master' of github.com:janvidar/uhub
This commit is contained in:
commit
46906a9a9c
|
@ -21,5 +21,3 @@ debian/uhub.postrm.debhelper
|
||||||
debian/uhub.prerm.debhelper
|
debian/uhub.prerm.debhelper
|
||||||
debian/uhub.substvars
|
debian/uhub.substvars
|
||||||
uhub-passwd
|
uhub-passwd
|
||||||
src/version.h
|
|
||||||
src/system.h
|
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
[submodule "thirdparty/sqlite"]
|
[submodule "thirdparty/sqlite"]
|
||||||
path = thirdparty/sqlite
|
path = thirdparty/sqlite
|
||||||
url = git://github.com/janvidar/sqlite.git
|
url = https://github.com/janvidar/sqlite.git
|
||||||
|
|
|
@ -77,6 +77,7 @@ check_symbol_exists(memmem string.h HAVE_MEMMEM)
|
||||||
check_symbol_exists(strndup string.h HAVE_STRNDUP)
|
check_symbol_exists(strndup string.h HAVE_STRNDUP)
|
||||||
|
|
||||||
include_directories("${PROJECT_SOURCE_DIR}")
|
include_directories("${PROJECT_SOURCE_DIR}")
|
||||||
|
include_directories("${PROJECT_BINARY_DIR}")
|
||||||
include_directories(${SQLITE3_INCLUDE_DIRS})
|
include_directories(${SQLITE3_INCLUDE_DIRS})
|
||||||
link_directories(${SQLITE3_LIBRARY_DIRS})
|
link_directories(${SQLITE3_LIBRARY_DIRS})
|
||||||
|
|
||||||
|
@ -121,13 +122,6 @@ add_library(mod_topic MODULE ${PROJECT_SOURCE_DIR}/plugins/mod_topic.c)
|
||||||
add_library(mod_no_guest_downloads MODULE ${PROJECT_SOURCE_DIR}/plugins/mod_no_guest_downloads.c)
|
add_library(mod_no_guest_downloads MODULE ${PROJECT_SOURCE_DIR}/plugins/mod_no_guest_downloads.c)
|
||||||
add_library(mod_auth_sqlite MODULE ${PROJECT_SOURCE_DIR}/plugins/mod_auth_sqlite.c)
|
add_library(mod_auth_sqlite MODULE ${PROJECT_SOURCE_DIR}/plugins/mod_auth_sqlite.c)
|
||||||
|
|
||||||
if(WIN32)
|
|
||||||
target_link_libraries(uhub ws2_32)
|
|
||||||
target_link_libraries(autotest-bin ws2_32)
|
|
||||||
target_link_libraries(mod_logging ws2_32)
|
|
||||||
target_link_libraries(mod_welcome ws2_32)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set_target_properties(
|
set_target_properties(
|
||||||
mod_example
|
mod_example
|
||||||
mod_welcome
|
mod_welcome
|
||||||
|
@ -145,19 +139,23 @@ target_link_libraries(uhub ${CMAKE_DL_LIBS} adc network utils)
|
||||||
target_link_libraries(uhub-passwd ${SQLITE3_LIBRARIES} utils)
|
target_link_libraries(uhub-passwd ${SQLITE3_LIBRARIES} utils)
|
||||||
target_link_libraries(autotest-bin ${CMAKE_DL_LIBS} adc network utils)
|
target_link_libraries(autotest-bin ${CMAKE_DL_LIBS} adc network utils)
|
||||||
target_link_libraries(mod_example utils)
|
target_link_libraries(mod_example utils)
|
||||||
target_link_libraries(mod_welcome utils)
|
target_link_libraries(mod_welcome network utils)
|
||||||
target_link_libraries(mod_auth_simple utils)
|
target_link_libraries(mod_auth_simple utils)
|
||||||
target_link_libraries(mod_auth_sqlite ${SQLITE3_LIBRARIES} utils)
|
target_link_libraries(mod_auth_sqlite ${SQLITE3_LIBRARIES} utils)
|
||||||
target_link_libraries(mod_chat_history utils)
|
target_link_libraries(mod_chat_history utils)
|
||||||
target_link_libraries(mod_chat_history_sqlite ${SQLITE3_LIBRARIES} utils)
|
target_link_libraries(mod_chat_history_sqlite ${SQLITE3_LIBRARIES} utils)
|
||||||
target_link_libraries(mod_no_guest_downloads utils)
|
target_link_libraries(mod_no_guest_downloads utils)
|
||||||
target_link_libraries(mod_chat_only utils)
|
target_link_libraries(mod_chat_only utils)
|
||||||
target_link_libraries(mod_logging utils)
|
target_link_libraries(mod_logging network utils)
|
||||||
target_link_libraries(mod_topic utils)
|
target_link_libraries(mod_topic utils)
|
||||||
target_link_libraries(utils network)
|
target_link_libraries(utils network)
|
||||||
target_link_libraries(mod_welcome network)
|
|
||||||
target_link_libraries(mod_logging network)
|
|
||||||
|
|
||||||
|
if(WIN32)
|
||||||
|
target_link_libraries(uhub ws2_32)
|
||||||
|
target_link_libraries(autotest-bin ws2_32)
|
||||||
|
target_link_libraries(mod_logging ws2_32)
|
||||||
|
target_link_libraries(mod_welcome ws2_32)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(UNIX)
|
if(UNIX)
|
||||||
add_library(adcclient STATIC ${adcclient_SOURCES})
|
add_library(adcclient STATIC ${adcclient_SOURCES})
|
||||||
|
@ -223,8 +221,8 @@ if (SYSTEMD_SUPPORT)
|
||||||
add_definitions(-DSYSTEMD)
|
add_definitions(-DSYSTEMD)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
configure_file ("${PROJECT_SOURCE_DIR}/version.h.in" "${PROJECT_SOURCE_DIR}/version.h")
|
configure_file ("${PROJECT_SOURCE_DIR}/version.h.in" "${PROJECT_BINARY_DIR}/version.h")
|
||||||
configure_file ("${PROJECT_SOURCE_DIR}/system.h.in" "${PROJECT_SOURCE_DIR}/system.h")
|
configure_file ("${PROJECT_SOURCE_DIR}/system.h.in" "${PROJECT_BINARY_DIR}/system.h")
|
||||||
|
|
||||||
# mark_as_advanced(FORCE CMAKE_BUILD_TYPE)
|
# mark_as_advanced(FORCE CMAKE_BUILD_TYPE)
|
||||||
# if (RELEASE)
|
# if (RELEASE)
|
||||||
|
|
|
@ -47,8 +47,8 @@
|
||||||
- marked plugin callbacks that are not called yet
|
- marked plugin callbacks that are not called yet
|
||||||
- add on_change_nick() to struct plugin_funcs
|
- add on_change_nick() to struct plugin_funcs
|
||||||
- minimal changes
|
- minimal changes
|
||||||
- Updated init script in debian package.
|
- Updated init script in Debian package.
|
||||||
- Updated list of man pages in debian package.
|
- Updated list of man pages in Debian package.
|
||||||
- Added man page for uhub-passwd.
|
- Added man page for uhub-passwd.
|
||||||
- Merge branch 'master' of https://github.com/Tilka/uhub
|
- Merge branch 'master' of https://github.com/Tilka/uhub
|
||||||
- Fix issue with QUI messages being allowed through the hub
|
- Fix issue with QUI messages being allowed through the hub
|
||||||
|
@ -78,7 +78,7 @@
|
||||||
- minimal documentation fixes
|
- minimal documentation fixes
|
||||||
- update client software link
|
- update client software link
|
||||||
- update compile howto link
|
- update compile howto link
|
||||||
- fix debian changelog
|
- fix Debian changelog
|
||||||
- Fix bug #158 - Added plugin for setting topic (hub description).
|
- Fix bug #158 - Added plugin for setting topic (hub description).
|
||||||
- Command arguments handling + cleanups
|
- Command arguments handling + cleanups
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
FROM alpine:latest as builder
|
||||||
|
RUN apk update && apk upgrade && apk add --no-cache bash util-linux cmake make gcc git sqlite-dev openssl-dev git build-base
|
||||||
|
WORKDIR /app
|
||||||
|
COPY . .
|
||||||
|
RUN cmake . && make
|
||||||
|
RUN sed -i 's/\/usr\/lib\/uhub\//\/libs\//g' ./doc/*.conf && \
|
||||||
|
sed -i 's/\/usr\/lib\/uhub\//\/libs\//g' ./doc/rules.txt && \
|
||||||
|
sed -i 's/\/etc\/uhub\//\/conf\//g' ./doc/*.conf && \
|
||||||
|
sed -i 's/\/etc\/uhub\//\/conf\//g' ./doc/rules.txt && \
|
||||||
|
echo 'Welcome to uHub' > ./doc/motd.txt
|
||||||
|
|
||||||
|
FROM alpine:latest
|
||||||
|
RUN apk update && apk upgrade && apk add --no-cache bash util-linux openssl-dev sqlite-dev
|
||||||
|
WORKDIR /app
|
||||||
|
COPY --from=builder /app/uhub .
|
||||||
|
COPY --from=builder /app/doc/plugins.conf /app/doc/uhub.conf /app/doc/users.conf /app/doc/rules.txt /app/doc/motd.txt /conf/
|
||||||
|
COPY --from=builder /app/*.so /libs/
|
||||||
|
ENTRYPOINT ["./uhub"]
|
||||||
|
CMD ["-c","/conf/uhub.conf"]
|
|
@ -3,7 +3,7 @@
|
||||||
#
|
#
|
||||||
# SQLITE3_FOUND True if sqlite3 got found
|
# SQLITE3_FOUND True if sqlite3 got found
|
||||||
# SQLITE3_INCLUDEDIR Location of sqlite3 headers
|
# SQLITE3_INCLUDEDIR Location of sqlite3 headers
|
||||||
# SQLITE3_LIBRARIES List of libaries to use sqlite3
|
# SQLITE3_LIBRARIES List of libraries to use sqlite3
|
||||||
# SQLITE3_DEFINITIONS Definitions to compile sqlite3
|
# SQLITE3_DEFINITIONS Definitions to compile sqlite3
|
||||||
#
|
#
|
||||||
# Copyright (c) 2007 Juha Tuomala <tuju@iki.fi>
|
# Copyright (c) 2007 Juha Tuomala <tuju@iki.fi>
|
||||||
|
|
|
@ -67,7 +67,7 @@ Accepting new users
|
||||||
| | |
|
| | |
|
||||||
| V |
|
| V |
|
||||||
| --------------------- ---------------------
|
| --------------------- ---------------------
|
||||||
| | Send password | ------> | Reveive and check |
|
| | Send password | ------> | Receive and check |
|
||||||
| | request, if needed| | password. |
|
| | request, if needed| | password. |
|
||||||
| --------------------- ---------------------
|
| --------------------- ---------------------
|
||||||
| |
|
| |
|
||||||
|
|
|
@ -31,7 +31,7 @@ The hub should send a packet containing the token back:
|
||||||
'IECH {token} {host:port}', as well as the same message via TCP.
|
'IECH {token} {host:port}', as well as the same message via TCP.
|
||||||
|
|
||||||
If the client receives the message via UDP, it should now be able to determine the type of NAT.
|
If the client receives the message via UDP, it should now be able to determine the type of NAT.
|
||||||
If the client receives the message via TCP only it knows it has a firewall blocking incomming communication.
|
If the client receives the message via TCP only it knows it has a firewall blocking incoming communication.
|
||||||
If the client does not receive the message, it should assume a firewall is blocking all UDP communication,
|
If the client does not receive the message, it should assume a firewall is blocking all UDP communication,
|
||||||
and resume in passive mode.
|
and resume in passive mode.
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,7 @@ Example:
|
||||||
If you are planning to more than 1024 users on hub, you must increase the max number of file descriptors allowed.
|
If you are planning to more than 1024 users on hub, you must increase the max number of file descriptors allowed.
|
||||||
This limit needs to be higher than the configured max_users in uhub.conf.
|
This limit needs to be higher than the configured max_users in uhub.conf.
|
||||||
|
|
||||||
In linux can add the following lines to /etc/security/limits.conf (allows for ~4000 users)
|
In Linux can add the following lines to /etc/security/limits.conf (allows for ~4000 users)
|
||||||
* soft nofile 4096
|
* soft nofile 4096
|
||||||
* hard nofile 4096
|
* hard nofile 4096
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# You should normally place this file in /etc/uhub/uhub.conf
|
# You should normally place this file in /etc/uhub/uhub.conf
|
||||||
# and customize some of the settings below.
|
# and customize some of the settings below.
|
||||||
#
|
#
|
||||||
# This file is read only to the uhub deamon, and if you
|
# This file is read only to the uhub daemon, and if you
|
||||||
# make changes to it while uhub is running you can send a
|
# make changes to it while uhub is running you can send a
|
||||||
# HUP signal to it ( $ killall -HUP uhub ), to reparse configuration (only on UNIX).
|
# HUP signal to it ( $ killall -HUP uhub ), to reparse configuration (only on UNIX).
|
||||||
# All configuration directives: http://www.uhub.org/config.php
|
# All configuration directives: http://www.uhub.org/config.php
|
||||||
|
|
|
@ -80,7 +80,7 @@ rm -rf $RPM_BUILD_ROOT
|
||||||
if [ $1 -gt 1 ] ; then
|
if [ $1 -gt 1 ] ; then
|
||||||
/etc/rc.d/init.d/uhub restart >/dev/null || :
|
/etc/rc.d/init.d/uhub restart >/dev/null || :
|
||||||
fi
|
fi
|
||||||
# need more informations about add services and users in system
|
# need more information about add services and users in system
|
||||||
/usr/sbin/adduser -M -d /tmp -G nobody -s /sbin/nologin -c 'The Uhub ADC p2p hub Daemon' uhub >/dev/null 2>&1 ||:
|
/usr/sbin/adduser -M -d /tmp -G nobody -s /sbin/nologin -c 'The Uhub ADC p2p hub Daemon' uhub >/dev/null 2>&1 ||:
|
||||||
# write SSL create
|
# write SSL create
|
||||||
echo "PLS see /usr/share/doc/uhub/"
|
echo "PLS see /usr/share/doc/uhub/"
|
||||||
|
|
|
@ -8,7 +8,7 @@ start on filesystem or runlevel [2345]
|
||||||
stop on runlevel [!2345]
|
stop on runlevel [!2345]
|
||||||
|
|
||||||
# Allow the service to respawn, but if its happening too often
|
# Allow the service to respawn, but if its happening too often
|
||||||
# (10 times in 5 seconds) theres a problem and we should stop trying.
|
# (10 times in 5 seconds) there's a problem and we should stop trying.
|
||||||
respawn
|
respawn
|
||||||
respawn limit 10 5
|
respawn limit 10 5
|
||||||
|
|
||||||
|
|
|
@ -118,8 +118,8 @@ typedef uint32_t fourcc_t;
|
||||||
#define ADC_INF_FLAG_SUPPORT "SU" /* support (extensions, feature cast) */
|
#define ADC_INF_FLAG_SUPPORT "SU" /* support (extensions, feature cast) */
|
||||||
#define ADC_INF_FLAG_SHARED_SIZE "SS" /* size of total files shared in bytes */
|
#define ADC_INF_FLAG_SHARED_SIZE "SS" /* size of total files shared in bytes */
|
||||||
#define ADC_INF_FLAG_SHARED_FILES "SF" /* number of files shared */
|
#define ADC_INF_FLAG_SHARED_FILES "SF" /* number of files shared */
|
||||||
#define ADC_INF_FLAG_UPLOAD_SPEED "US" /* maximum upload speed acheived in bytes/sec */
|
#define ADC_INF_FLAG_UPLOAD_SPEED "US" /* maximum upload speed achieved in bytes/sec */
|
||||||
#define ADC_INF_FLAG_DOWNLOAD_SPEED "DS" /* maximum download speed acheived in bytes/sec */
|
#define ADC_INF_FLAG_DOWNLOAD_SPEED "DS" /* maximum download speed achieved in bytes/sec */
|
||||||
#define ADC_INF_FLAG_UPLOAD_SLOTS "SL" /* maximum upload slots (concurrent uploads) */
|
#define ADC_INF_FLAG_UPLOAD_SLOTS "SL" /* maximum upload slots (concurrent uploads) */
|
||||||
#define ADC_INF_FLAG_AUTO_SLOTS "AS" /* automatic slot if upload speed is less than this in bytes/sec */
|
#define ADC_INF_FLAG_AUTO_SLOTS "AS" /* automatic slot if upload speed is less than this in bytes/sec */
|
||||||
#define ADC_INF_FLAG_AUTO_SLOTS_MAX "AM" /* maximum number of automatic slots */
|
#define ADC_INF_FLAG_AUTO_SLOTS_MAX "AM" /* maximum number of automatic slots */
|
||||||
|
@ -134,7 +134,7 @@ typedef uint32_t fourcc_t;
|
||||||
#define ADC_MSG_FLAG_PRIVATE "PM" /* message is a private message */
|
#define ADC_MSG_FLAG_PRIVATE "PM" /* message is a private message */
|
||||||
|
|
||||||
#define ADC_SCH_FLAG_INCLUDE "AN" /* include given search term */
|
#define ADC_SCH_FLAG_INCLUDE "AN" /* include given search term */
|
||||||
#define ADC_SCH_FLAG_EXCLUDE "NO" /* exclude given serach term */
|
#define ADC_SCH_FLAG_EXCLUDE "NO" /* exclude given search term */
|
||||||
#define ADC_SCH_FLAG_FILE_EXTENSION "EX" /* search only for files with the given file extension */
|
#define ADC_SCH_FLAG_FILE_EXTENSION "EX" /* search only for files with the given file extension */
|
||||||
#define ADC_SCH_FLAG_FILE_TYPE "TY" /* search only for files with this file type (separate type) */
|
#define ADC_SCH_FLAG_FILE_TYPE "TY" /* search only for files with this file type (separate type) */
|
||||||
#define ADC_SCH_FLAG_LESS_THAN "LE" /* search for files with this size or less */
|
#define ADC_SCH_FLAG_LESS_THAN "LE" /* search for files with this size or less */
|
||||||
|
|
|
@ -51,7 +51,7 @@ enum msg_status_level
|
||||||
extern struct adc_message* adc_msg_incref(struct adc_message* msg);
|
extern struct adc_message* adc_msg_incref(struct adc_message* msg);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Decrease the reference counter, and free the memory when apropriate.
|
* Decrease the reference counter, and free the memory when appropriate.
|
||||||
*/
|
*/
|
||||||
extern void adc_msg_free(struct adc_message* msg);
|
extern void adc_msg_free(struct adc_message* msg);
|
||||||
|
|
||||||
|
@ -159,7 +159,7 @@ extern char* adc_msg_get_argument(struct adc_message* cmd, int offset);
|
||||||
*
|
*
|
||||||
* @arg prefix a 2 character argument prefix
|
* @arg prefix a 2 character argument prefix
|
||||||
* @arg string must be escaped (see adc_msg_escape).
|
* @arg string must be escaped (see adc_msg_escape).
|
||||||
* @return 0 if successful, or -1 if an error occured.
|
* @return 0 if successful, or -1 if an error occurred.
|
||||||
*/
|
*/
|
||||||
extern int adc_msg_replace_named_argument(struct adc_message* cmd, const char prefix[2], const char* string);
|
extern int adc_msg_replace_named_argument(struct adc_message* cmd, const char prefix[2], const char* string);
|
||||||
|
|
||||||
|
@ -167,7 +167,7 @@ extern int adc_msg_replace_named_argument(struct adc_message* cmd, const char pr
|
||||||
* Append an argument
|
* Append an argument
|
||||||
*
|
*
|
||||||
* @arg string must be escaped (see adc_msg_escape).
|
* @arg string must be escaped (see adc_msg_escape).
|
||||||
* @return 0 if successful, or -1 if an error occured (out of memory).
|
* @return 0 if successful, or -1 if an error occurred (out of memory).
|
||||||
*/
|
*/
|
||||||
extern int adc_msg_add_argument(struct adc_message* cmd, const char* string);
|
extern int adc_msg_add_argument(struct adc_message* cmd, const char* string);
|
||||||
|
|
||||||
|
@ -176,7 +176,7 @@ extern int adc_msg_add_argument(struct adc_message* cmd, const char* string);
|
||||||
*
|
*
|
||||||
* @arg prefix a 2 character argument prefix
|
* @arg prefix a 2 character argument prefix
|
||||||
* @arg string must be escaped (see adc_msg_escape).
|
* @arg string must be escaped (see adc_msg_escape).
|
||||||
* @return 0 if successful, or -1 if an error occured (out of memory).
|
* @return 0 if successful, or -1 if an error occurred (out of memory).
|
||||||
*/
|
*/
|
||||||
extern int adc_msg_add_named_argument(struct adc_message* cmd, const char prefix[2], const char* string);
|
extern int adc_msg_add_named_argument(struct adc_message* cmd, const char prefix[2], const char* string);
|
||||||
|
|
||||||
|
@ -186,7 +186,7 @@ extern int adc_msg_add_named_argument(struct adc_message* cmd, const char prefix
|
||||||
*
|
*
|
||||||
* @arg prefix a 2 character argument prefix
|
* @arg prefix a 2 character argument prefix
|
||||||
* @arg string must NOT be escaped
|
* @arg string must NOT be escaped
|
||||||
* @return 0 if successful, or -1 if an error occured (out of memory).
|
* @return 0 if successful, or -1 if an error occurred (out of memory).
|
||||||
*/
|
*/
|
||||||
extern int adc_msg_add_named_argument_string(struct adc_message* cmd, const char prefix[2], const char* string);
|
extern int adc_msg_add_named_argument_string(struct adc_message* cmd, const char prefix[2], const char* string);
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ struct command_base;
|
||||||
*
|
*
|
||||||
* @param cbase Command base pointer.
|
* @param cbase Command base pointer.
|
||||||
* @param user User who invoked the command.
|
* @param user User who invoked the command.
|
||||||
* @param message The message that is to be interpreted as a command (including the invokation prefix '!' or '+')
|
* @param message The message that is to be interpreted as a command (including the invocation prefix '!' or '+')
|
||||||
*
|
*
|
||||||
* @return a hub_command that must be freed with command_free(). @See struct hub_command.
|
* @return a hub_command that must be freed with command_free(). @See struct hub_command.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -170,7 +170,7 @@
|
||||||
<check min="1024" max="1048576" />
|
<check min="1024" max="1048576" />
|
||||||
<short>Max read buffer before parse, per user</short>
|
<short>Max read buffer before parse, per user</short>
|
||||||
<description><![CDATA[
|
<description><![CDATA[
|
||||||
Maximum receive buffer allowed before commands are procesed. If a single ADC message exceeds this limit, it will be discarded by the hub. Use with caution.
|
Maximum receive buffer allowed before commands are processed. If a single ADC message exceeds this limit, it will be discarded by the hub. Use with caution.
|
||||||
]]></description>
|
]]></description>
|
||||||
<since>0.1.3</since>
|
<since>0.1.3</since>
|
||||||
</option>
|
</option>
|
||||||
|
@ -567,7 +567,7 @@
|
||||||
</option>
|
</option>
|
||||||
|
|
||||||
<option name="msg_inf_error_nick_taken" type="message" default="Nickname is already in use">
|
<option name="msg_inf_error_nick_taken" type="message" default="Nickname is already in use">
|
||||||
<description><![CDATA[This message will be sent to clients if their provided nickname is alredy in use on the hub.]]></description>
|
<description><![CDATA[This message will be sent to clients if their provided nickname is already in use on the hub.]]></description>
|
||||||
<since>0.2.0</since>
|
<since>0.2.0</since>
|
||||||
</option>
|
</option>
|
||||||
|
|
||||||
|
|
|
@ -88,7 +88,7 @@ static int check_hash_tiger(const char* cid, const char* pid)
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FIXME: Only works for tiger hash. If a client doesnt support tiger we cannot let it in!
|
* FIXME: Only works for tiger hash. If a client doesn't support tiger we cannot let it in!
|
||||||
*/
|
*/
|
||||||
static int check_cid(struct hub_info* hub, struct hub_user* user, struct adc_message* cmd)
|
static int check_cid(struct hub_info* hub, struct hub_user* user, struct adc_message* cmd)
|
||||||
{
|
{
|
||||||
|
|
|
@ -151,7 +151,7 @@ int main_loop()
|
||||||
setup_signal_handlers(hub);
|
setup_signal_handlers(hub);
|
||||||
#ifdef SYSTEMD
|
#ifdef SYSTEMD
|
||||||
/* Notify the service manager that this daemon has
|
/* Notify the service manager that this daemon has
|
||||||
* been successfully initalized and shall enter the
|
* been successfully initialized and shall enter the
|
||||||
* main loop.
|
* main loop.
|
||||||
*/
|
*/
|
||||||
sd_notifyf(0, "READY=1\n"
|
sd_notifyf(0, "READY=1\n"
|
||||||
|
@ -471,7 +471,7 @@ int main(int argc, char** argv)
|
||||||
}
|
}
|
||||||
else if (ret == 0)
|
else if (ret == 0)
|
||||||
{
|
{
|
||||||
/* child process - detatch from TTY */
|
/* child process - detach from TTY */
|
||||||
fclose(stdin);
|
fclose(stdin);
|
||||||
fclose(stdout);
|
fclose(stdout);
|
||||||
fclose(stderr);
|
fclose(stderr);
|
||||||
|
|
|
@ -68,7 +68,7 @@ enum user_quit_reason
|
||||||
quit_timeout = 4, /** User timed out (no data for a while) */
|
quit_timeout = 4, /** User timed out (no data for a while) */
|
||||||
quit_send_queue = 5, /** User's send queue was overflowed */
|
quit_send_queue = 5, /** User's send queue was overflowed */
|
||||||
quit_memory_error = 6, /** Not enough memory available */
|
quit_memory_error = 6, /** Not enough memory available */
|
||||||
quit_socket_error = 7, /** A socket error occured */
|
quit_socket_error = 7, /** A socket error occurred */
|
||||||
quit_protocol_error = 8, /** Fatal protocol error */
|
quit_protocol_error = 8, /** Fatal protocol error */
|
||||||
quit_logon_error = 9, /** Unable to login (wrong password, CID/PID, etc) */
|
quit_logon_error = 9, /** Unable to login (wrong password, CID/PID, etc) */
|
||||||
quit_update_error = 10, /** Update error. INF update changed share/slot info and no longer satisfies the hub limits. */
|
quit_update_error = 10, /** Update error. INF update changed share/slot info and no longer satisfies the hub limits. */
|
||||||
|
@ -76,7 +76,7 @@ enum user_quit_reason
|
||||||
quit_ghost_timeout = 12, /** The user is a ghost, and trying to login from another connection */
|
quit_ghost_timeout = 12, /** The user is a ghost, and trying to login from another connection */
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Returns an apropriate string for the given quit reason */
|
/** Returns an appropriate string for the given quit reason */
|
||||||
extern const char* user_get_quit_reason_string(enum user_quit_reason);
|
extern const char* user_get_quit_reason_string(enum user_quit_reason);
|
||||||
|
|
||||||
struct hub_user_info
|
struct hub_user_info
|
||||||
|
|
|
@ -42,7 +42,7 @@ extern struct hub_user_manager* uman_init();
|
||||||
* Shuts down the user manager.
|
* Shuts down the user manager.
|
||||||
* All users will be disconnected and deleted as part of this.
|
* All users will be disconnected and deleted as part of this.
|
||||||
*
|
*
|
||||||
* @return 0 on success, or -1 in an error occured (invalid pointer).
|
* @return 0 on success, or -1 in an error occurred (invalid pointer).
|
||||||
*/
|
*/
|
||||||
extern int uman_shutdown(struct hub_user_manager* users);
|
extern int uman_shutdown(struct hub_user_manager* users);
|
||||||
|
|
||||||
|
@ -106,7 +106,7 @@ extern struct hub_user* uman_get_user_by_nick(struct hub_user_manager* users, co
|
||||||
*
|
*
|
||||||
* @param[out] target the list of users matching the address
|
* @param[out] target the list of users matching the address
|
||||||
* @param range the IP range of users to match
|
* @param range the IP range of users to match
|
||||||
* @return The number of users matching the addressess, or -1 on error (mask is wrong).
|
* @return The number of users matching the addresses, or -1 on error (mask is wrong).
|
||||||
*/
|
*/
|
||||||
extern size_t uman_get_user_by_addr(struct hub_user_manager* users, struct linked_list* target, struct ip_range* range);
|
extern size_t uman_get_user_by_addr(struct hub_user_manager* users, struct linked_list* target, struct ip_range* range);
|
||||||
|
|
||||||
|
|
|
@ -88,7 +88,7 @@ extern void net_con_close(struct net_connection* con);
|
||||||
*
|
*
|
||||||
* @return returns the number of bytes sent.
|
* @return returns the number of bytes sent.
|
||||||
* 0 if no data is sent, and this function should be called again (EWOULDBLOCK/EINTR)
|
* 0 if no data is sent, and this function should be called again (EWOULDBLOCK/EINTR)
|
||||||
* <0 if an error occured, the negative number contains the error code.
|
* <0 if an error occurred, the negative number contains the error code.
|
||||||
*/
|
*/
|
||||||
extern ssize_t net_con_send(struct net_connection* con, const void* buf, size_t len);
|
extern ssize_t net_con_send(struct net_connection* con, const void* buf, size_t len);
|
||||||
|
|
||||||
|
@ -97,7 +97,7 @@ extern ssize_t net_con_send(struct net_connection* con, const void* buf, size_t
|
||||||
*
|
*
|
||||||
* @return returns the number of bytes sent.
|
* @return returns the number of bytes sent.
|
||||||
* 0 if no data is sent, and this function should be called again (EWOULDBLOCK/EINTR)
|
* 0 if no data is sent, and this function should be called again (EWOULDBLOCK/EINTR)
|
||||||
* <0 if an error occured, the negative number contains the error code.
|
* <0 if an error occurred, the negative number contains the error code.
|
||||||
*/
|
*/
|
||||||
extern ssize_t net_con_recv(struct net_connection* con, void* buf, size_t len);
|
extern ssize_t net_con_recv(struct net_connection* con, void* buf, size_t len);
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ extern ssize_t net_con_recv(struct net_connection* con, void* buf, size_t len);
|
||||||
extern ssize_t net_con_peek(struct net_connection* con, void* buf, size_t len);
|
extern ssize_t net_con_peek(struct net_connection* con, void* buf, size_t len);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set timeout for connetion.
|
* Set timeout for connection.
|
||||||
*
|
*
|
||||||
* @param seconds the number of seconds into the future.
|
* @param seconds the number of seconds into the future.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -92,7 +92,7 @@ extern int ip_is_valid_ipv6(const char* address);
|
||||||
*
|
*
|
||||||
* @param text_addr is an ipaddress either ipv6 or ipv4.
|
* @param text_addr is an ipaddress either ipv6 or ipv4.
|
||||||
* Special magic addresses called "any" and "loopback" exist,
|
* Special magic addresses called "any" and "loopback" exist,
|
||||||
* and will work accross IPv6/IPv4.
|
* and will work across IPv6/IPv4.
|
||||||
* @param port Fill the struct sockaddr* with the given port, can safely be ignored.
|
* @param port Fill the struct sockaddr* with the given port, can safely be ignored.
|
||||||
*/
|
*/
|
||||||
extern int ip_convert_address(const char* text_address, int port, struct sockaddr* addr, socklen_t* addr_len);
|
extern int ip_convert_address(const char* text_address, int port, struct sockaddr* addr, socklen_t* addr_len);
|
||||||
|
|
|
@ -53,7 +53,7 @@ extern int net_initialize();
|
||||||
extern int net_destroy();
|
extern int net_destroy();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the number of sockets currrently being monitored.
|
* @return the number of sockets currently being monitored.
|
||||||
*/
|
*/
|
||||||
extern int net_monitor_count();
|
extern int net_monitor_count();
|
||||||
|
|
||||||
|
@ -63,7 +63,7 @@ extern int net_monitor_count();
|
||||||
extern int net_monitor_capacity();
|
extern int net_monitor_capacity();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the last error code occured.
|
* @return the last error code occurred.
|
||||||
*
|
*
|
||||||
* NOTE: On Windows this is the last error code from the socket library, but
|
* NOTE: On Windows this is the last error code from the socket library, but
|
||||||
* on UNIX this is the errno variable that can be overwritten by any
|
* on UNIX this is the errno variable that can be overwritten by any
|
||||||
|
|
|
@ -30,7 +30,7 @@ enum Warnings
|
||||||
struct user_info
|
struct user_info
|
||||||
{
|
{
|
||||||
sid_t sid; // The SID of the user
|
sid_t sid; // The SID of the user
|
||||||
int warnings; // The number of denies (used to track wether or not a warning should be sent). @see enum Warnings.
|
int warnings; // The number of denies (used to track whether or not a warning should be sent). @see enum Warnings.
|
||||||
};
|
};
|
||||||
|
|
||||||
struct chat_only_data
|
struct chat_only_data
|
||||||
|
|
|
@ -86,7 +86,7 @@ void* memmem(const void *haystack, size_t haystacklen, const void *needle, size_
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Split the string based on split, and place the different parts into list.
|
* Split the string based on split, and place the different parts into list.
|
||||||
* @return the number of items in the list after split, or -1 if an error occured.
|
* @return the number of items in the list after split, or -1 if an error occurred.
|
||||||
*/
|
*/
|
||||||
struct linked_list;
|
struct linked_list;
|
||||||
extern int split_string(const char* string, const char* split, struct linked_list* list, int allow_empty);
|
extern int split_string(const char* string, const char* split, struct linked_list* list, int allow_empty);
|
||||||
|
|
|
@ -356,7 +356,7 @@ static struct rb_node* rb_tree_traverse(struct rb_tree* tree, int dir)
|
||||||
if (p->link[!dir] == n)
|
if (p->link[!dir] == n)
|
||||||
return rb_it_set(tree, p);
|
return rb_it_set(tree, p);
|
||||||
|
|
||||||
// walk up in hte current direction
|
// walk up in the current direction
|
||||||
while (p->link[dir] == n)
|
while (p->link[dir] == n)
|
||||||
{
|
{
|
||||||
n = p;
|
n = p;
|
||||||
|
|
Loading…
Reference in New Issue