+}
+
+void cfw2conf(void)
+{
+ struct cfvar *var;
+
+ for(var = config; var->name != NULL; var++) {
+ if(var->cfww != NULL) {
+ free(var->val);
+ var->val = sstrdup(gtk_entry_get_text(GTK_ENTRY(*(var->cfww))));
+ }
+ }
+ if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(cfw_mode_act))) {
+ setcfvar("net.mode", "0");
+ if(!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(cfw_orport))) {
+ setcfvar("dc.tcpport", "0");
+ setcfvar("dc.udpport", "0");
+ }
+ if(!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(cfw_oraddr))) {
+ setcfvar("net.visibleipv4", "0.0.0.0");
+ }
+ } else {
+ setcfvar("net.mode", "1");
+ }
+ if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(cfw_uinet))) {
+ setcfvar("ui.port", "1500");
+ if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(cfw_authless)))
+ setcfvar("auth.authless", "1");
+ else
+ setcfvar("auth.authless", "0");
+ } else {
+ setcfvar("ui.port", "-1");
+ setcfvar("auth.authless", "0");
+ }
+}
+
+void astcancel(GtkWidget *widget, gpointer uudata)
+{
+ if(ignoreclose)
+ return;
+ gtk_main_quit();
+ state = -1;
+}
+
+#define bufcats(buf, str) bufcat(buf, str, strlen(str))
+
+void astupdate(GtkWidget *widget, GtkWidget *page, gpointer uudata)
+{
+ char *s, *buf;
+ size_t sdata, ssize;
+ struct cfvar *var;
+ GtkTreeIter iter;
+
+ ast2conf();