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 Pidgin Plugins
#
PIDGIN_TREE_TOP := ../..
include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
DISCO_PLUGIN := ./disco
GTKPERL_PLUGIN := ./perl
TICKER_PLUGIN := ./ticker
WINPREFS_PLUGIN := ./win32/winprefs
.SUFFIXES:
.SUFFIXES: .c .dll
##
## INCLUDE PATHS
##
INCLUDE_PATHS += \
-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$(PIDGIN_TREE_TOP) \
-I$(PURPLE_TOP) \
-I$(PURPLE_TOP)/win32 \
-I$(PIDGIN_TOP) \
-I$(PIDGIN_TOP)/win32
LIB_PATHS += -L$(GTK_TOP)/lib \
-L$(PURPLE_TOP) \
-L$(PIDGIN_TOP)
##
## LIBRARIES
##
LIBS = -lgtk-win32-2.0 \
-lglib-2.0 \
-lgdk-win32-2.0 \
-lgobject-2.0 \
-lgmodule-2.0 \
-lgdk_pixbuf-2.0 \
-lpango-1.0 \
-lcairo \
-lintl \
-lws2_32 \
-lpurple \
-lpidgin
##
## TARGET DEFINITIONS
##
.PHONY: all clean plugins install
all: plugins
$(MAKE) -C $(DISCO_PLUGIN) -f $(MINGW_MAKEFILE)
$(MAKE) -C $(GTKPERL_PLUGIN) -f $(MINGW_MAKEFILE)
$(MAKE) -C $(TICKER_PLUGIN) -f $(MINGW_MAKEFILE)
$(MAKE) -C $(WINPREFS_PLUGIN) -f $(MINGW_MAKEFILE)
install: all $(PIDGIN_INSTALL_PLUGINS_DIR)
$(MAKE) -C $(DISCO_PLUGIN) -f $(MINGW_MAKEFILE) install
$(MAKE) -C $(GTKPERL_PLUGIN) -f $(MINGW_MAKEFILE) install
$(MAKE) -C $(TICKER_PLUGIN) -f $(MINGW_MAKEFILE) install
$(MAKE) -C $(WINPREFS_PLUGIN) -f $(MINGW_MAKEFILE) install
cp *.dll $(PIDGIN_INSTALL_PLUGINS_DIR)
THEMEEDIT_SRC = themeedit.c themeedit-icon.c
THEMEEDIT_OBJECTS = $(THEMEEDIT_SRC:%.c=%.o)
themeedit.dll: $(THEMEEDIT_OBJECTS)
$(CC) -shared $(THEMEEDIT_OBJECTS) $(LIB_PATHS) $(LIBS) $(DLL_LD_FLAGS) -o $@
%.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 $@
include $(PIDGIN_COMMON_RULES)
plugins: \
convcolors.dll \
extplacement.dll \
gtkbuddynote.dll \
history.dll \
iconaway.dll \
markerline.dll \
notify.dll \
pidginrc.dll \
relnot.dll \
sendbutton.dll \
spellchk.dll \
themeedit.dll \
timestamp_format.dll \
timestamp.dll \
transparency.dll \
xmppconsole.dll
##
## CLEAN RULES
##
clean:
rm -f *.o *.dll
$(MAKE) -C $(DISCO_PLUGIN) -f $(MINGW_MAKEFILE) clean
$(MAKE) -C $(GTKPERL_PLUGIN) -f $(MINGW_MAKEFILE) clean
$(MAKE) -C $(TICKER_PLUGIN) -f $(MINGW_MAKEFILE) clean
$(MAKE) -C $(WINPREFS_PLUGIN) -f $(MINGW_MAKEFILE) clean
include $(PIDGIN_COMMON_TARGETS)