$ git clone https://tcclient.ion.nu/tc_client.git
commit ed80d57a8e849595ab95668e483492901e2954e9
Author: Alicia <...>
Date: Wed May 4 14:02:09 2016 +0200
tc_client-gtk: added an option to use the --cookies parameter of the core to keep/reuse HTTP cookies.
diff --git a/ChangeLog b/ChangeLog
index 8d833eb..2a27ad4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -7,6 +7,7 @@ tc_client-gtk: added horizontal and vertical flip as postprocessing options.
tc_client-gtk: reallocate frame when camera input size changes.
tc_client-gtk: if we failed to open the camera, just give a grey screen.
tc_client-gtk: made the settings accessible from the start window (previously only accessible from the main window, after already joining a channel)
+tc_client-gtk: added an option to use the --cookies parameter of the core to keep/reuse HTTP cookies.
tc_client-gtk and camviewer: fixed compatibility with newer libavutil.
tc_client-gtk and camviewer: added compatibility fallbacks for av_image_get_buffer_size() and av_packet_unref()
libcamera(v4l2): if we failed to read the frame, give grey instead.
diff --git a/gtkgui.glade b/gtkgui.glade
index 5b4131a..83ae919 100644
--- a/gtkgui.glade
+++ b/gtkgui.glade
@@ -10,8 +10,8 @@
<object class="GtkWindow" id="settings">
<property name="can_focus">False</property>
<property name="title" translatable="yes">tc_client settings</property>
- <property name="default_width">350</property>
- <property name="default_height">200</property>
+ <property name="default_width">400</property>
+ <property name="default_height">280</property>
<signal name="delete-event" handler="gtk_widget_hide_on_delete" swapped="no"/>
<child>
<object class="GtkBox" id="box1">
@@ -466,6 +466,50 @@
<property name="tab_fill">False</property>
</packing>
</child>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow6">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <object class="GtkViewport" id="viewport7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkCheckButton" id="storecookiecheckbox">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="xalign">0</property>
+ <property name="draw_indicator">True</property>
+ <child>
+ <object class="GtkLabel" id="label26">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Store HTTP cookies (prevents having to solve the captchas as often)</property>
+ <property name="wrap">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label25">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Misc</property>
+ </object>
+ <packing>
+ <property name="position">5</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
</object>
<packing>
<property name="expand">True</property>
diff --git a/utilities/gtk/camviewer.c b/utilities/gtk/camviewer.c
index 51323fe..95cadc3 100644
--- a/utilities/gtk/camviewer.c
+++ b/utilities/gtk/camviewer.c
@@ -843,8 +843,12 @@ void startsession(GtkButton* button, void* x)
const char* acc_user=gtk_entry_get_text(GTK_ENTRY(gtk_builder_get_object(gui, "acc_username")));
const char* acc_pass=gtk_entry_get_text(GTK_ENTRY(gtk_builder_get_object(gui, "acc_password")));
#ifdef _WIN32
- char cmd[strlen("./tc_client --hexcolors -u 0")+strlen(acc_user)+strlen(channel)+strlen(nick)+strlen(chanpass)];
+ char cmd[strlen("./tc_client --hexcolors --cookies tinychat.cookie -u 0")+strlen(acc_user)+strlen(channel)+strlen(nick)+strlen(chanpass)];
strcpy(cmd, "./tc_client --hexcolors ");
+ if(config_get_bool("storecookies"))
+ {
+ strcat(cmd, "--cookies tinychat.cookie ");
+ }
if(acc_user[0])
{
strcat(cmd, "-u ");
@@ -868,11 +872,24 @@ void startsession(GtkButton* button, void* x)
close(tc_client_in[1]);
dup2(tc_client[1], 1);
dup2(tc_client_in[0], 0);
- if(acc_user[0])
+ if(config_get_bool("storecookies"))
{
- execlp(TC_CLIENT, TC_CLIENT, "--hexcolors", "-u", acc_user, channel, nick, chanpass, (char*)0);
+ const char* home=getenv("HOME");
+ char filename[strlen(home)+strlen("/.tinychat.cookie0")];
+ sprintf(filename, "%s/.tinychat.cookie", home);
+ if(acc_user[0])
+ {
+ execlp(TC_CLIENT, TC_CLIENT, "--hexcolors", "-u", acc_user, "--cookies", filename, channel, nick, chanpass, (char*)0);
+ }else{
+ execlp(TC_CLIENT, TC_CLIENT, "--hexcolors", "--cookies", filename, channel, nick, chanpass, (char*)0);
+ }
}else{
- execlp(TC_CLIENT, TC_CLIENT, "--hexcolors", channel, nick, chanpass, (char*)0);
+ if(acc_user[0])
+ {
+ execlp(TC_CLIENT, TC_CLIENT, "--hexcolors", "-u", acc_user, channel, nick, chanpass, (char*)0);
+ }else{
+ execlp(TC_CLIENT, TC_CLIENT, "--hexcolors", channel, nick, chanpass, (char*)0);
+ }
}
}
#endif
diff --git a/utilities/gtk/gui.c b/utilities/gtk/gui.c
index ee59d7f..debf7ce 100644
--- a/utilities/gtk/gui.c
+++ b/utilities/gtk/gui.c
@@ -72,6 +72,9 @@ void settings_reset(GtkBuilder* gui)
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(option), config_get_bool("camdownonjoin"));
option=GTK_WIDGET(gtk_builder_get_object(gui, "autoopencams"));
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(option), config_get_set("autoopencams")?config_get_bool("autoopencams"):1);
+ // Misc/cookies
+ option=GTK_WIDGET(gtk_builder_get_object(gui, "storecookiecheckbox"));
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(option), config_get_bool("storecookies"));
}
void showsettings(GtkMenuItem* item, GtkBuilder* gui)
@@ -110,6 +113,9 @@ void savesettings(GtkButton* button, GtkBuilder* gui)
config_set("camdownonjoin", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(option))?"True":"False");
option=GTK_WIDGET(gtk_builder_get_object(gui, "autoopencams"));
config_set("autoopencams", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(option))?"True":"False");
+ // Misc/cookies
+ option=GTK_WIDGET(gtk_builder_get_object(gui, "storecookiecheckbox"));
+ config_set("storecookies", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(option))?"True":"False");
config_save();
GtkWidget* settings=GTK_WIDGET(gtk_builder_get_object(gui, "settings"));