pidgin/pidgin

Implement SNI support for the gnutls SSL plugin.
release-2.x.y
2019-12-16, Mihai Moldovan
6dba8046e1b1
Implement SNI support for the gnutls SSL plugin.

Note that gnutls is picky in regard to what it accepts as the server name - it
MUST be a domain name. IP addresses are not supported according to the
documentation.

Hence, filter out IP addresses and hope that whatever is not recognized as
such an address is actually a domain name. This will probably fail for more
exotic addresses (especially in IPv6 realm), but wiring up a full-blown parser
is too much effort and SSL plugins are not part of purple-3 anyway.

Fixes #17300
#
# Makefile.mingw
#
# Description: Makefile for xmppdisco plugin.
#
PIDGIN_TREE_TOP := ../../..
include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
TARGET = xmppdisco
##
## INCLUDE PATHS
##
INCLUDE_PATHS += -I. \
-I$(GTK_TOP)/include \
-I$(GTK_TOP)/include/gtk-2.0 \
-I$(GTK_TOP)/include/glib-2.0 \
-I$(GTK_TOP)/include/pango-1.0 \
-I$(GTK_TOP)/include/atk-1.0 \
-I$(GTK_TOP)/include/cairo \
-I$(GTK_TOP)/lib/glib-2.0/include \
-I$(GTK_TOP)/lib/gtk-2.0/include \
-I$(PURPLE_TOP) \
-I$(PURPLE_TOP)/win32 \
-I$(PIDGIN_TOP) \
-I$(PIDGIN_TOP)/win32 \
-I$(PIDGIN_TREE_TOP)
LIB_PATHS += -L$(GTK_TOP)/lib \
-L$(PURPLE_TOP) \
-L$(PIDGIN_TOP)
##
## SOURCES, OBJECTS
##
C_SRC = xmppdisco.c \
gtkdisco.c
OBJECTS = $(C_SRC:%.c=%.o)
##
## LIBRARIES
##
LIBS = -lgtk-win32-2.0 \
-lglib-2.0 \
-lgdk-win32-2.0 \
-lgobject-2.0 \
-lpango-1.0 \
-lgdk_pixbuf-2.0 \
-lintl \
-lpurple \
-lpidgin
include $(PIDGIN_COMMON_RULES)
##
## TARGET DEFINITIONS
##
.PHONY: all install clean
all: $(TARGET).dll
install: $(PIDGIN_INSTALL_PLUGINS_DIR) all
cp $(TARGET).dll $(PIDGIN_INSTALL_PLUGINS_DIR)
$(OBJECTS): $(PIDGIN_CONFIG_H)
$(TARGET).dll: $(PURPLE_DLL).a $(PIDGIN_DLL).a $(OBJECTS)
$(CC) -shared $(OBJECTS) $(LIB_PATHS) $(LIBS) $(DLL_LD_FLAGS) -o $(TARGET).dll
##
## CLEAN RULES
##
clean:
rm -rf $(OBJECTS)
rm -rf $(TARGET).dll
include $(PIDGIN_COMMON_TARGETS)