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 win32 (mingw) version of libpurple Plugins
#
PIDGIN_TREE_TOP := ../..
include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
PERL_PLUGIN := ./perl
SSL_PLUGIN := ./ssl
.SUFFIXES:
.SUFFIXES: .c .dll
##
## INCLUDE PATHS
##
INCLUDE_PATHS += \
-I$(GTK_TOP)/include \
-I$(GTK_TOP)/include/glib-2.0 \
-I$(GTK_TOP)/lib/glib-2.0/include \
-I$(PIDGIN_TREE_TOP) \
-I$(PURPLE_TOP) \
-I$(PURPLE_TOP)/win32
LIB_PATHS += -L$(GTK_TOP)/lib \
-L$(PURPLE_TOP)
##
## LIBRARIES
##
LIBS = \
-lglib-2.0 \
-lgobject-2.0 \
-lgmodule-2.0 \
-lintl \
-lws2_32 \
-lpurple
##
## TARGET DEFINITIONS
##
.PHONY: all clean plugins install
all: $(PURPLE_DLL).a plugins
$(MAKE) -C $(PERL_PLUGIN) -f $(MINGW_MAKEFILE)
$(MAKE) -C $(SSL_PLUGIN) -f $(MINGW_MAKEFILE)
install: all $(PURPLE_INSTALL_PLUGINS_DIR)
$(MAKE) -C $(PERL_PLUGIN) -f $(MINGW_MAKEFILE) install
$(MAKE) -C $(SSL_PLUGIN) -f $(MINGW_MAKEFILE) install
cp *.dll $(PURPLE_INSTALL_PLUGINS_DIR)
%.dll: %.c $(PURPLE_CONFIG_H) $(PURPLE_VERSION_H)
$(CC) $(CFLAGS) $(DEFINES) $(INCLUDE_PATHS) -o $@.o -c $<
$(CC) -shared $@.o $(LIB_PATHS) $(LIBS) $(DLL_LD_FLAGS) -o $@
plugins: \
autoaccept.dll \
buddynote.dll \
idle.dll \
joinpart.dll \
log_reader.dll \
newline.dll \
offlinemsg.dll \
psychic.dll \
statenotify.dll
##
## CLEAN RULES
##
clean:
rm -f *.o *.dll
$(MAKE) -C $(PERL_PLUGIN) -f $(MINGW_MAKEFILE) clean
$(MAKE) -C $(SSL_PLUGIN) -f $(MINGW_MAKEFILE) clean
include $(PIDGIN_COMMON_TARGETS)