mirror of
https://github.com/ZoiteChat/zoitechat.git
synced 2026-04-01 02:00:19 +00:00
Compare commits
7 Commits
78219bf9e1
...
appimage-s
| Author | SHA1 | Date | |
|---|---|---|---|
| dbb6cb4b2c | |||
| 9f2529adb6 | |||
|
|
3903d7b9e5 | ||
| ec4d698021 | |||
|
|
da06c71389 | ||
| 0f508bf438 | |||
| 97dd7c5d57 |
59
.github/workflows/appimage-build.yml
vendored
59
.github/workflows/appimage-build.yml
vendored
@@ -31,11 +31,14 @@ jobs:
|
||||
libcanberra-dev libdbus-glib-1-dev libglib2.0-dev \
|
||||
libarchive-dev \
|
||||
libgtk-3-dev \
|
||||
libenchant-2-2 enchant-2 \
|
||||
libnuspell5 \
|
||||
libwayland-client0 libwayland-cursor0 libwayland-egl1 \
|
||||
libxkbcommon0 \
|
||||
libgtk-3-bin libglib2.0-bin shared-mime-info gsettings-desktop-schemas \
|
||||
libluajit-5.1-dev libpci-dev libperl-dev libssl-dev libayatana-appindicator3-dev \
|
||||
perl python3 python3-minimal python3-dev python3-cffi mono-devel desktop-file-utils \
|
||||
hunspell hunspell-en-us hunspell-en-gb hunspell-en-ca hunspell-es hunspell-fr hunspell-de-de hunspell-it hunspell-pt-br hunspell-ru hunspell-uk hunspell-nl hunspell-pl \
|
||||
fonts-noto-color-emoji breeze-gtk-theme \
|
||||
patchelf file curl
|
||||
|
||||
@@ -125,17 +128,68 @@ jobs:
|
||||
cp -a /usr/lib/gtk-3.0/modules AppDir/usr/lib/gtk-3.0/
|
||||
fi
|
||||
|
||||
if compgen -G '/usr/lib/x86_64-linux-gnu/libenchant-2.so*' > /dev/null; then
|
||||
install -d AppDir/usr/lib/x86_64-linux-gnu
|
||||
cp -a /usr/lib/x86_64-linux-gnu/libenchant-2.so* AppDir/usr/lib/x86_64-linux-gnu/
|
||||
fi
|
||||
|
||||
if compgen -G '/usr/lib/x86_64-linux-gnu/libgmodule-2.0.so*' > /dev/null; then
|
||||
install -d AppDir/usr/lib/x86_64-linux-gnu
|
||||
cp -a /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so* AppDir/usr/lib/x86_64-linux-gnu/
|
||||
fi
|
||||
|
||||
if compgen -G '/usr/lib/x86_64-linux-gnu/libnuspell.so*' > /dev/null; then
|
||||
install -d AppDir/usr/lib/x86_64-linux-gnu
|
||||
cp -a /usr/lib/x86_64-linux-gnu/libnuspell.so* AppDir/usr/lib/x86_64-linux-gnu/
|
||||
fi
|
||||
|
||||
if compgen -G '/usr/lib/x86_64-linux-gnu/libhunspell-*.so*' > /dev/null; then
|
||||
install -d AppDir/usr/lib/x86_64-linux-gnu
|
||||
cp -a /usr/lib/x86_64-linux-gnu/libhunspell-*.so* AppDir/usr/lib/x86_64-linux-gnu/
|
||||
fi
|
||||
|
||||
if [ -d "/usr/lib/x86_64-linux-gnu/enchant-2" ]; then
|
||||
install -d AppDir/usr/lib/x86_64-linux-gnu
|
||||
cp -a /usr/lib/x86_64-linux-gnu/enchant-2 AppDir/usr/lib/x86_64-linux-gnu/
|
||||
fi
|
||||
|
||||
if [ -d "/usr/share/enchant-2" ]; then
|
||||
install -d AppDir/usr/share
|
||||
cp -a /usr/share/enchant-2 AppDir/usr/share/
|
||||
fi
|
||||
|
||||
if [ -d "/etc/enchant-2" ]; then
|
||||
install -d AppDir/etc
|
||||
cp -a /etc/enchant-2 AppDir/etc/
|
||||
fi
|
||||
|
||||
if [ -d "/usr/share/hunspell" ]; then
|
||||
install -d AppDir/usr/share
|
||||
cp -a /usr/share/hunspell AppDir/usr/share/
|
||||
fi
|
||||
|
||||
- name: Verify bundled plugins
|
||||
run: |
|
||||
set -eux
|
||||
|
||||
# Include every built-in plugin except the Windows-only update plugin.
|
||||
find AppDir/usr/lib -maxdepth 4 -type f -name '*.so' -path '*/zoitechat/plugins/*' -print | sort
|
||||
|
||||
for plugin in checksum fishlim lua perl python sysinfo; do
|
||||
find "AppDir/usr/lib" -maxdepth 4 -type f -name "${plugin}.so" -path '*/zoitechat/plugins/*' -print -quit | grep -q .
|
||||
done
|
||||
|
||||
find AppDir/usr/lib/x86_64-linux-gnu -maxdepth 1 \( -type f -o -type l \) -name 'libenchant-2.so*' -print -quit | grep -q .
|
||||
find AppDir/usr/lib/x86_64-linux-gnu -maxdepth 1 \( -type f -o -type l \) -name 'libgmodule-2.0.so*' -print -quit | grep -q .
|
||||
find AppDir/usr/lib/x86_64-linux-gnu -maxdepth 1 -type f -name 'libhunspell-*.so*' -print -quit | grep -q .
|
||||
find AppDir/usr/lib/x86_64-linux-gnu/enchant-2 -maxdepth 1 -type f -name '*hunspell*.so*' -print -quit | grep -q .
|
||||
test -f AppDir/usr/share/hunspell/en_CA.dic
|
||||
test -f AppDir/usr/share/hunspell/en_CA.aff
|
||||
test -d AppDir/usr/share/enchant-2
|
||||
ldd -r AppDir/usr/lib/x86_64-linux-gnu/libenchant-2.so.2 | tee /tmp/ldd-enchant.txt
|
||||
if grep -q 'undefined symbol' /tmp/ldd-enchant.txt; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Build AppImage
|
||||
env:
|
||||
APPIMAGE_EXTRACT_AND_RUN: 1
|
||||
@@ -167,6 +221,9 @@ jobs:
|
||||
export XDG_DATA_DIRS="$APPDIR/usr/share:${XDG_DATA_DIRS:-/usr/local/share:/usr/share}"
|
||||
export GTK_EXE_PREFIX="$APPDIR/usr"
|
||||
export GTK_DATA_PREFIX="$APPDIR/usr"
|
||||
export ENCHANT_PREFIX="$APPDIR/usr"
|
||||
export DICPATH="$APPDIR/usr/share/hunspell${DICPATH:+:$DICPATH}"
|
||||
export ENCHANT_CONFIG_DIR="$APPDIR/etc/enchant-2"
|
||||
gtk_path_entries=""
|
||||
if [ -d "$APPDIR/usr/lib/x86_64-linux-gnu/gtk-3.0" ]; then
|
||||
gtk_path_entries="$APPDIR/usr/lib/x86_64-linux-gnu/gtk-3.0"
|
||||
|
||||
@@ -1,6 +1,30 @@
|
||||
ZoiteChat ChangeLog
|
||||
=================
|
||||
|
||||
2.18.0~pre6 (2026-03-30)
|
||||
|
||||
- Applied app theme CSS to the menubar consistently across the app.
|
||||
- Restored horizontal separator lines in menus.
|
||||
- Improved Windows installer VC++ redistributable handling by failing loudly when missing and using the official Microsoft download endpoint.
|
||||
- Fixed Windows locale path resolution in both GTK and text frontends.
|
||||
- Fixed duplicate dialog buttons persisting in the UI.
|
||||
- Fixed GTK auto-replace cursor snapback.
|
||||
- Restored hiding of formatting control bytes so only formatted output is shown.
|
||||
- Added one-click client SSL certificate tools, including generation with P-256 certificates.
|
||||
- Added client SSL certificate import support in the network editor.
|
||||
- Added 99-color support.
|
||||
- Fixed xtext link hit-testing coordinates.
|
||||
- Fixed short-palette fallback clobbering tab colors.
|
||||
- Lazy-loads Preferences pages on first open for faster dialog startup.
|
||||
- Removed unused UI icons.
|
||||
- Added a None option for resetting the GTK3 theme back to system/default behavior.
|
||||
- Added channel-only mode to Ctrl+F search.
|
||||
- Disabled disk info in sysinfo.
|
||||
- Wrapped the topic bar in a scroller with bounded height.
|
||||
- Added close buttons to tabs.
|
||||
- Fixed fallback GTK menu highlight states.
|
||||
- Applied configured font preferences to the topic bar, channel tree, user list, and input box.
|
||||
|
||||
2.18.0~pre5 (2026-03-22)
|
||||
------------------------
|
||||
- Overhauled preferences/config saving: fully staged and transactional, debounced
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<extends>net.zoite.Zoitechat</extends>
|
||||
<name>@NAME@ Plugin</name>
|
||||
<summary>@SUMMARY@</summary>
|
||||
<url type="homepage">https://zoitechat.zoite.net/</url>
|
||||
<url type="homepage">https://zoitechat.org/</url>
|
||||
<project_license>@LICENSE@</project_license>
|
||||
<metadata_license>CC0-1.0</metadata_license>
|
||||
<update_contact>deepend_AT_zoite.net</update_contact>
|
||||
|
||||
@@ -16,12 +16,12 @@
|
||||
<p>ZoiteChat is an easy to use yet extensible IRC Client based on Hexchat. It allows you to securely join multiple networks and talk to users privately or in channels using a customizable interface. You can even transfer files.</p>
|
||||
<p>ZoiteChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, logging, custom themes, and Python/Perl scripts.</p>
|
||||
</description>
|
||||
<url type="homepage">https://zoitechat.zoite.net</url>
|
||||
<url type="homepage">https://zoitechat.org</url>
|
||||
<url type="bugtracker">https://github.com/zoitechat/zoitechat</url>
|
||||
<url type="help">https://docs.zoitechat.zoite.net/en/latest/</url>
|
||||
<url type="help">https://docs.zoitechat.org/en/latest/</url>
|
||||
<screenshots>
|
||||
<screenshot type="default">
|
||||
<image>https://zoitechat.zoite.net/assets/ZoiteChat.png</image>
|
||||
<image>https://zoitechat.org/assets/ZoiteChat.png</image>
|
||||
<caption>Main Chat Window</caption>
|
||||
</screenshot>
|
||||
</screenshots>
|
||||
@@ -29,6 +29,46 @@
|
||||
<id>zoitechat.desktop</id>
|
||||
</provides>
|
||||
<releases>
|
||||
<release date="2026-03-30" version="2.18.0~pre6">
|
||||
<description>
|
||||
<p>GTK theme and UI:</p>
|
||||
<ul>
|
||||
<li>Applied app theme CSS to the menubar consistently across the app.</li>
|
||||
<li>Restored horizontal separator lines in menus.</li>
|
||||
<li>Fixed duplicate dialog buttons persisting in the UI.</li>
|
||||
<li>Fixed GTK auto-replace cursor snapback.</li>
|
||||
<li>Restored hiding of formatting control bytes so only formatted output is shown.</li>
|
||||
<li>Fixed xtext link hit-testing coordinates.</li>
|
||||
<li>Fixed short-palette fallback clobbering tab colors.</li>
|
||||
<li>Added a None option for resetting the GTK3 theme back to system/default behavior.</li>
|
||||
<li>Wrapped the topic bar in a scroller with bounded height.</li>
|
||||
<li>Fixed fallback GTK menu highlight states.</li>
|
||||
<li>Applied configured font preferences to the topic bar, channel tree, user list, and input box.</li>
|
||||
<li>Removed unused UI icons.</li>
|
||||
<li>Added close buttons to tabs.</li>
|
||||
</ul>
|
||||
<p>Preferences and search:</p>
|
||||
<ul>
|
||||
<li>Lazy-loads Preferences pages on first open for faster dialog startup.</li>
|
||||
<li>Added channel-only mode to Ctrl+F search.</li>
|
||||
</ul>
|
||||
<p>Security and certificates:</p>
|
||||
<ul>
|
||||
<li>Added one-click client SSL certificate tools, including generation with P-256 certificates.</li>
|
||||
<li>Added client SSL certificate import support in the network editor.</li>
|
||||
</ul>
|
||||
<p>Windows and packaging:</p>
|
||||
<ul>
|
||||
<li>Improved Windows installer VC++ redistributable handling by failing loudly when missing and using the official Microsoft download endpoint.</li>
|
||||
<li>Fixed Windows locale path resolution in both GTK and text frontends.</li>
|
||||
</ul>
|
||||
<p>Other changes:</p>
|
||||
<ul>
|
||||
<li>Added 99-color support.</li>
|
||||
<li>Disabled disk info in sysinfo.</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release date="2026-03-22" version="2.18.0~pre5">
|
||||
<description>
|
||||
<p>Preferences and config saving:</p>
|
||||
@@ -60,14 +100,6 @@
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release date="2026-03-22" version="2.18.0~pre5">
|
||||
<description>
|
||||
<p>Version metadata update:</p>
|
||||
<ul>
|
||||
<li>Bumped release version references to <code>2.18.0~pre5</code> across build and packaging files.</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release date="2026-03-14" version="2.18.0~pre4">
|
||||
<description>
|
||||
<p>UI fixes, topic bar improvements, and selection styling updates:</p>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
project('zoitechat', 'c',
|
||||
version: '2.18.0~pre5',
|
||||
version: '2.18.0~pre6',
|
||||
meson_version: '>= 0.55.0',
|
||||
default_options: [
|
||||
'c_std=c17',
|
||||
|
||||
@@ -1457,14 +1457,14 @@ perl_load_file (char *filename)
|
||||
"You must have a Visual C++ build of Perl "
|
||||
PERL_REQUIRED_VERSION " installed in order to\n"
|
||||
"run Perl scripts. A reboot may be required.\n\n"
|
||||
"http://zoitechat.zoite.net/downloads.html\n\n"
|
||||
"http://zoitechat.org/downloads.html\n\n"
|
||||
"I have found Perl 5.6, but that is too old.");
|
||||
} else {
|
||||
thread_mbox ("Cannot open " PERL_DLL "!\n\n"
|
||||
"You must have a Visual C++ build of Perl "
|
||||
PERL_REQUIRED_VERSION " installed in order to\n"
|
||||
"run Perl scripts. A reboot may be required.\n\n"
|
||||
"http://zoitechat.zoite.net/downloads.html\n\n"
|
||||
"http://zoitechat.org/downloads.html\n\n"
|
||||
"Make sure Perl's bin directory is in your PATH.");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ else:
|
||||
if not hasattr(sys, 'argv'):
|
||||
sys.argv = ['<zoitechat>']
|
||||
|
||||
VERSION = b'2.18.0~pre5'
|
||||
VERSION = b'2.18.0~pre6'
|
||||
PLUGIN_NAME = ffi.new('char[]', b'Python')
|
||||
PLUGIN_DESC = ffi.new('char[]', b'Python %d.%d scripting interface' % (sys.version_info[0], sys.version_info[1]))
|
||||
PLUGIN_VERSION = ffi.new('char[]', VERSION)
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
#include "zoitechat-plugin.h"
|
||||
|
||||
#define APPCAST_URL "https://zoitechat.zoite.net/appcast.xml"
|
||||
#define APPCAST_URL "https://zoitechat.org/appcast.xml"
|
||||
|
||||
static zoitechat_plugin *ph;
|
||||
static char name[] = "Update Checker";
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
[![Version][github-version-img]][github-version-uri] [![Downloads][github-downloads-img]][github-downloads-uri] [![Size][github-size-img]][github-size-img] [![Last Commit][github-commit-img]][github-commit-img] [![Contributors][contribs-all-img]](#contributors-)
|
||||
|
||||
[](https://docs.zoitechat.zoite.net)
|
||||
[](https://docs.zoitechat.org)
|
||||
|
||||
</div>
|
||||
|
||||
@@ -33,8 +33,8 @@
|
||||
|
||||
ZoiteChat is an HexChat based IRC client for Windows and UNIX-like operating systems.
|
||||
See [IRCHelp.org](http://irchelp.org) for information about IRC in general.
|
||||
For more information on ZoiteChat please read our [documentation](https://docs.zoitechat.zoite.net/):
|
||||
- [Downloads](https://zoitechat.zoite.net/download)
|
||||
For more information on ZoiteChat please read our [documentation](https://docs.zoitechat.org/):
|
||||
- [Downloads](https://zoitechat.org/download)
|
||||
|
||||
- [Troubleshooting](troubleshooting.md)
|
||||
|
||||
|
||||
@@ -4070,7 +4070,7 @@ const struct commands xc_cmds[] = {
|
||||
{"ME", cmd_me, 0, 0, 1,
|
||||
N_("ME <action>, sends the action to the current channel (actions are written in the 3rd person, like /me jumps)")},
|
||||
{"MENU", cmd_menu, 0, 0, 1, "MENU [-eX] [-i<ICONFILE>] [-k<mod>,<key>] [-m] [-pX] [-r<X,group>] [-tX] {ADD|DEL} <path> [command] [unselect command]\n"
|
||||
" See https://docs.zoitechat.zoite.net/en/latest/en/latest/plugins.html#controlling-the-gui for more details."},
|
||||
" See https://docs.zoitechat.org/en/latest/en/latest/plugins.html#controlling-the-gui for more details."},
|
||||
{"MHOP", cmd_mhop, 1, 1, 1,
|
||||
N_("MHOP, Mass hop's all users in the current channel (needs chanop)")},
|
||||
{"MKICK", cmd_mkick, 1, 1, 1,
|
||||
|
||||
@@ -1717,7 +1717,7 @@ menu_ctcpguiopen (void)
|
||||
static void
|
||||
menu_docs (GtkWidget *wid, gpointer none)
|
||||
{
|
||||
fe_open_url ("https://docs.zoitechat.zoite.net/en/latest/");
|
||||
fe_open_url ("https://docs.zoitechat.org/en/latest/");
|
||||
}
|
||||
|
||||
/*static void
|
||||
@@ -1862,7 +1862,7 @@ about_dialog_response (GtkDialog *dialog, int response, gpointer data)
|
||||
{
|
||||
if (response == GTK_RESPONSE_HELP)
|
||||
{
|
||||
fe_open_url ("http://zoitechat.zoite.net");
|
||||
fe_open_url ("http://zoitechat.org");
|
||||
return;
|
||||
}
|
||||
if (response == GTK_RESPONSE_APPLY)
|
||||
|
||||
@@ -91,6 +91,7 @@ static GtkWidget *edit_label_real;
|
||||
static GtkWidget *edit_label_user;
|
||||
static GtkWidget *edit_trees[N_TREES];
|
||||
static GtkWidget *edit_button_cert_generate;
|
||||
static GtkWidget *edit_button_cert_import;
|
||||
static GtkWidget *edit_button_cert_info;
|
||||
static GtkWidget *edit_button_cert_delete;
|
||||
|
||||
@@ -135,12 +136,98 @@ servlist_update_cert_buttons (ircnet *net)
|
||||
|
||||
if (edit_button_cert_generate)
|
||||
gtk_widget_set_visible (edit_button_cert_generate, !has_cert);
|
||||
if (edit_button_cert_import)
|
||||
gtk_widget_set_visible (edit_button_cert_import, !has_cert);
|
||||
if (edit_button_cert_info)
|
||||
gtk_widget_set_visible (edit_button_cert_info, has_cert);
|
||||
if (edit_button_cert_delete)
|
||||
gtk_widget_set_visible (edit_button_cert_delete, has_cert);
|
||||
}
|
||||
|
||||
static void
|
||||
servlist_import_client_cert_cb (GtkWidget *button, gpointer userdata)
|
||||
{
|
||||
ircnet *net = (ircnet *)userdata;
|
||||
GtkWidget *dialog;
|
||||
GtkWidget *message;
|
||||
GtkFileFilter *filter;
|
||||
char *cert_dir;
|
||||
char *cert_file;
|
||||
char *source_file;
|
||||
char *contents;
|
||||
gsize length;
|
||||
|
||||
if (!net || !net->name || !net->name[0])
|
||||
return;
|
||||
|
||||
dialog = gtk_file_chooser_dialog_new (_("Import Client Certificate"),
|
||||
GTK_WINDOW (edit_win),
|
||||
GTK_FILE_CHOOSER_ACTION_OPEN,
|
||||
_("_Cancel"), GTK_RESPONSE_CANCEL,
|
||||
_("_Open"), GTK_RESPONSE_ACCEPT,
|
||||
NULL);
|
||||
filter = gtk_file_filter_new ();
|
||||
gtk_file_filter_set_name (filter, _("Certificate files"));
|
||||
gtk_file_filter_add_pattern (filter, "*.pem");
|
||||
gtk_file_filter_add_pattern (filter, "*.crt");
|
||||
gtk_file_filter_add_pattern (filter, "*.cer");
|
||||
gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);
|
||||
filter = gtk_file_filter_new ();
|
||||
gtk_file_filter_set_name (filter, _("All files"));
|
||||
gtk_file_filter_add_pattern (filter, "*");
|
||||
gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);
|
||||
theme_manager_attach_window (dialog);
|
||||
|
||||
if (gtk_dialog_run (GTK_DIALOG (dialog)) != GTK_RESPONSE_ACCEPT)
|
||||
{
|
||||
gtk_widget_destroy (dialog);
|
||||
return;
|
||||
}
|
||||
|
||||
source_file = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
|
||||
gtk_widget_destroy (dialog);
|
||||
if (!source_file)
|
||||
return;
|
||||
|
||||
cert_dir = g_build_filename (get_xdir (), "certs", NULL);
|
||||
cert_file = servlist_get_cert_file (net);
|
||||
contents = NULL;
|
||||
length = 0;
|
||||
|
||||
if (cert_file &&
|
||||
g_mkdir_with_parents (cert_dir, 0700) == 0 &&
|
||||
g_file_get_contents (source_file, &contents, &length, NULL) &&
|
||||
g_file_set_contents (cert_file, contents, length, NULL))
|
||||
{
|
||||
chmod (cert_file, 0600);
|
||||
servlist_update_cert_buttons (net);
|
||||
message = gtk_message_dialog_new (GTK_WINDOW (edit_win),
|
||||
GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL,
|
||||
GTK_MESSAGE_INFO,
|
||||
GTK_BUTTONS_CLOSE,
|
||||
_("Client certificate imported for \"%s\"."),
|
||||
net->name);
|
||||
}
|
||||
else
|
||||
{
|
||||
message = gtk_message_dialog_new (GTK_WINDOW (edit_win),
|
||||
GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL,
|
||||
GTK_MESSAGE_ERROR,
|
||||
GTK_BUTTONS_CLOSE,
|
||||
_("Failed to import client certificate for \"%s\"."),
|
||||
net->name);
|
||||
}
|
||||
|
||||
theme_manager_attach_window (message);
|
||||
g_signal_connect_swapped (message, "response", G_CALLBACK (gtk_widget_destroy), message);
|
||||
gtk_widget_show (message);
|
||||
|
||||
g_free (contents);
|
||||
g_free (cert_file);
|
||||
g_free (cert_dir);
|
||||
g_free (source_file);
|
||||
}
|
||||
|
||||
static void
|
||||
servlist_generate_client_cert_cb (GtkWidget *button, gpointer userdata)
|
||||
{
|
||||
@@ -165,6 +252,7 @@ servlist_generate_client_cert_cb (GtkWidget *button, gpointer userdata)
|
||||
gboolean success;
|
||||
gint status;
|
||||
char *argv[20];
|
||||
char **envp;
|
||||
|
||||
if (!net || !net->name || !net->name[0])
|
||||
return;
|
||||
@@ -187,6 +275,7 @@ servlist_generate_client_cert_cb (GtkWidget *button, gpointer userdata)
|
||||
crt_len = 0;
|
||||
success = FALSE;
|
||||
status = 0;
|
||||
envp = g_environ_unsetenv (g_get_environ (), "LD_LIBRARY_PATH");
|
||||
|
||||
if (g_mkdir_with_parents (cert_dir, 0700) == 0 &&
|
||||
g_file_set_contents (openssl_conf, conf_data, -1, NULL))
|
||||
@@ -212,7 +301,7 @@ servlist_generate_client_cert_cb (GtkWidget *button, gpointer userdata)
|
||||
argv[18] = subject;
|
||||
argv[19] = NULL;
|
||||
|
||||
spawned = g_spawn_sync (NULL, argv, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL,
|
||||
spawned = g_spawn_sync (NULL, argv, envp, G_SPAWN_SEARCH_PATH, NULL, NULL,
|
||||
&stdout_data, &stderr_data, &status, NULL);
|
||||
if (spawned && g_spawn_check_exit_status (status, NULL) &&
|
||||
g_file_get_contents (key_file, &key_data, &key_len, NULL) &&
|
||||
@@ -267,6 +356,7 @@ servlist_generate_client_cert_cb (GtkWidget *button, gpointer userdata)
|
||||
g_free (openssl_conf);
|
||||
g_free (cert_file);
|
||||
g_free (cert_dir);
|
||||
g_strfreev (envp);
|
||||
#else
|
||||
return;
|
||||
#endif
|
||||
@@ -284,6 +374,7 @@ servlist_cert_info_cb (GtkWidget *button, gpointer userdata)
|
||||
gboolean spawned;
|
||||
gint status;
|
||||
char *argv[12];
|
||||
char **envp;
|
||||
|
||||
cert_file = servlist_get_cert_file (net);
|
||||
if (!cert_file)
|
||||
@@ -292,6 +383,7 @@ servlist_cert_info_cb (GtkWidget *button, gpointer userdata)
|
||||
stdout_data = NULL;
|
||||
stderr_data = NULL;
|
||||
status = 0;
|
||||
envp = g_environ_unsetenv (g_get_environ (), "LD_LIBRARY_PATH");
|
||||
argv[0] = "openssl";
|
||||
argv[1] = "x509";
|
||||
argv[2] = "-in";
|
||||
@@ -305,7 +397,7 @@ servlist_cert_info_cb (GtkWidget *button, gpointer userdata)
|
||||
argv[10] = "-sha256";
|
||||
argv[11] = NULL;
|
||||
|
||||
spawned = g_spawn_sync (NULL, argv, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL,
|
||||
spawned = g_spawn_sync (NULL, argv, envp, G_SPAWN_SEARCH_PATH, NULL, NULL,
|
||||
&stdout_data, &stderr_data, &status, NULL);
|
||||
|
||||
if (spawned && g_spawn_check_exit_status (status, NULL) && stdout_data && stdout_data[0])
|
||||
@@ -336,6 +428,7 @@ servlist_cert_info_cb (GtkWidget *button, gpointer userdata)
|
||||
g_free (stdout_data);
|
||||
g_free (stderr_data);
|
||||
g_free (cert_file);
|
||||
g_strfreev (envp);
|
||||
#else
|
||||
return;
|
||||
#endif
|
||||
@@ -2285,6 +2378,11 @@ servlist_open_edit (GtkWidget *parent, ircnet *net)
|
||||
G_CALLBACK (servlist_generate_client_cert_cb), net);
|
||||
gtk_box_pack_start (GTK_BOX (hbox_cert_buttons), edit_button_cert_generate, FALSE, FALSE, 0);
|
||||
|
||||
edit_button_cert_import = gtk_button_new_with_mnemonic (_("Import client SSL cert"));
|
||||
g_signal_connect (G_OBJECT (edit_button_cert_import), "clicked",
|
||||
G_CALLBACK (servlist_import_client_cert_cb), net);
|
||||
gtk_box_pack_start (GTK_BOX (hbox_cert_buttons), edit_button_cert_import, FALSE, FALSE, 0);
|
||||
|
||||
edit_button_cert_info = gtk_button_new_with_mnemonic (_("Client SSL cert info"));
|
||||
g_signal_connect (G_OBJECT (edit_button_cert_info), "clicked",
|
||||
G_CALLBACK (servlist_cert_info_cb), net);
|
||||
|
||||
@@ -9,10 +9,10 @@ AppName=ZoiteChat
|
||||
AppVersion={#APPVER}
|
||||
AppVerName=ZoiteChat {#APPVER}
|
||||
AppPublisher=ZoiteChat
|
||||
AppPublisherURL=http://zoitechat.zoite.net
|
||||
AppPublisherURL=http://zoitechat.org
|
||||
AppCopyright=Copyright (C) 1998-2010 Peter Zelezny
|
||||
AppSupportURL=https://github.com/zoitechat/zoitechat/issues
|
||||
AppUpdatesURL=http://zoitechat.zoite.net/downloads.html
|
||||
AppUpdatesURL=http://zoitechat.org/downloads.html
|
||||
LicenseFile=share\doc\zoitechat\COPYING
|
||||
UninstallDisplayIcon={app}\zoitechat.exe
|
||||
UninstallDisplayName=ZoiteChat
|
||||
|
||||
@@ -1 +1 @@
|
||||
2.18.0~pre5
|
||||
2.18.0~pre6
|
||||
|
||||
Reference in New Issue
Block a user