Branch 'dev/accountwizard_edit' - resources/kolab

Sandro Knauß knauss at kolabsys.com
Tue Oct 28 10:26:09 CET 2014


 resources/kolab/wizard/kolabwizard.es  |  175 +++++++++++++++++++++++----------
 resources/kolab/wizard/kolabwizard2.ui |   72 ++++++-------
 2 files changed, 159 insertions(+), 88 deletions(-)

New commits:
commit e632b9a0150a927dd08c66b7f3b1430949217763
Author: Sandro Knauß <mail at sandroknauss.de>
Date:   Tue Oct 28 10:25:53 2014 +0100

    kolabwizard: Added probing of server settings

diff --git a/resources/kolab/wizard/kolabwizard.es b/resources/kolab/wizard/kolabwizard.es
index d764a6c..feb15d2 100644
--- a/resources/kolab/wizard/kolabwizard.es
+++ b/resources/kolab/wizard/kolabwizard.es
@@ -30,9 +30,6 @@ page.widget().passwordEdit.text = SetupManager.password()
 
 function guessServerName()
 {
-    if (userChangedServerAddress == true) {
-        return;
-    }
     var email = page.widget().emailEdit.text;
     var pos = email.indexOf("@");
     if (pos >= 0 && (pos + 1) < email.length) {
@@ -41,20 +38,78 @@ function guessServerName()
     }
 }
 
-function emailChanged(arg)
-{
-  validateInput();
-}
-
 function validateInput()
 {
-  if (page.widget().emailEdit.text.trim() == "") {
+  if (page.widget().emailEdit.text.trim() == "" || page.widget().passwordEdit.text.trim() == "") {
     page.setValid(false);
   } else {
     page.setValid(true);
   }
 }
 
+//Server test
+servertest_running = false;
+//0 = not running, 1 = smtp, 2 = imap
+servertest_mode = 0;
+
+function testResultFail()
+{
+  testOk( -1 );
+}
+
+var imapRes;
+function testOk( arg )
+{
+    print("testOk arg =", arg);
+    if (servertest_mode == 1) {   //smtp
+        if ( arg == "ssl" ) {
+          // The ENUM used for authentication (in the imap resource only)
+          smtp.setPort(465);
+          smtp.setEncryption("SSL");
+        } else if ( arg == "tls" ) { // tls is really STARTTLS
+          smtp.setPort(25);
+          smtp.setEncryption("TLS");
+        } else if ( arg == "none" ) {
+          smtp.setPort(25);
+          smtp.setEncryption("NONE");
+          smtp.setEditMode(true);
+        } else {
+          // safe default fallback in case server test failed
+          smtp.setPort(25);
+          smtp.setEncryption("TLS");
+          smtp.setEditMode(true);
+        }
+        servertest_mode = 2;
+        if (page2.widget().lineEditImap.text) {
+            SetupManager.setupInfo(qsTr("Probing Imap server..."));
+            ServerTest.test(page2.widget().lineEditImap.text, "imap");
+        } else {
+            SetupManager.execute();
+        }
+    } else if (servertest_mode == 2) {   //imap
+        if ( arg == "ssl" ) {
+          // The ENUM used for authentication (in the kolab resource only)
+          kolabRes.setOption( "Safety", "SSL" ); // SSL/TLS
+          kolabRes.setOption( "ImapPort", 993 );
+        } else if ( arg == "tls" ) { // tls is really STARTTLS
+          kolabRes.setOption( "Safety", "STARTTLS" );  // STARTTLS
+          kolabRes.setOption( "ImapPort", 143 );
+        } else if ( arg == "none" ) {
+          kolabRes.setOption( "Safety", "NONE" );  // No encryption
+          kolabRes.setOption( "ImapPort", 143 );
+          kolabRes.setEditMode(true);
+        } else {
+          // safe default fallback in case server test failed
+          kolabRes.setOption( "Safety", "STARTTLS" );
+          kolabRes.setOption( "ImapPort", 143 );
+          kolabRes.setEditMode(true);
+        }
+        SetupManager.execute();
+    } else {
+        print ("Unknown servertest_mode = ", servertest_mode);
+    }
+}
+
 var identity; // global so it can be accesed in setup and testOk
 
 var kolabRes;
@@ -65,8 +120,26 @@ var ac_mail;
 var ac_freebusy;
 var ac_ldap;
 
+var ac_mail_stat;
+var ac_freebusy_stat;
+var ac_ldap_stat;
+
 function checkAutoconfig()
 {
+    ac_mail_stat = false;
+    ac_freebusy_stat = false;
+    ac_ldap_stat = false;
+
+    page2.widget().lineEditImap.text = guessServerName();
+    page2.widget().lineEditSmtp.text = guessServerName();
+    page2.widget().lineEditImap.visible = false;
+    page2.widget().lineEditSmtp.visible = false;
+    page2.widget().lineEditImapLabel.visible = false;
+    page2.widget().lineEditSmtpLabel.visible = false;
+
+    page2.widget().checkBoxFreebusyEdit.text = qsTr("Create");
+    page2.widget().checkBoxLdapEdit.text = qsTr("Create");
+
     ac_mail = SetupManager.ispDB('autoconfigkolabmail');
     ac_mail.ispdbFinished.connect(mail_finished);
     ac_mail.info.connect(mail_text);
@@ -89,19 +162,18 @@ function checkAutoconfig()
     ac_ldap.start();
 }
 
-guessServerName();
-
 function mail_finished(stat) {
+    ac_mail_stat = stat;
     if (stat) {
-        page2.widget().checkBoxImap.checked = true;
-        page2.widget().checkBoxImap.enabled = true;
-        page2.widget().checkBoxSmtp.checked = true;
-        page2.widget().checkBoxSmtp.enabled = true;
+        page2.widget().lineEditImap.visible = false;
+        page2.widget().lineEditSmtp.visible = false;
+        page2.widget().lineEditImapLabel.visible = false;
+        page2.widget().lineEditSmtpLabel.visible = false;
     } else {
-        page2.widget().checkBoxImap.checked = false;
-        page2.widget().checkBoxImap.enabled = false;
-        page2.widget().checkBoxSmtp.checked = false;
-        page2.widget().checkBoxSmtp.enabled = false;
+        page2.widget().lineEditImap.visible = true;
+        page2.widget().lineEditSmtp.visible = true;
+        page2.widget().lineEditImapLabel.visible = true;
+        page2.widget().lineEditSmtpLabel.visible = true;
     }
 }
 
@@ -111,12 +183,9 @@ function mail_text(text) {
 }
 
 function freebusy_finished(stat) {
+    ac_freebusy_stat = stat;
     if (stat) {
-        page2.widget().checkBoxFreebusy.checked = true;
-        page2.widget().checkBoxFreebusy.enabled = true;
-    } else {
-        page2.widget().checkBoxFreebusy.checked = false;
-        page2.widget().checkBoxFreebusy.enabled = false;
+        page2.widget().checkBoxFreebusyEdit.text = qsTr("Manuell Edit");
     }
 }
 
@@ -124,14 +193,10 @@ function freebusy_text(text) {
     page2.widget().labelFreebusySearch.text = text;
 }
 
-
 function ldap_finished(stat) {
+    ac_ldap_stat = stat;
     if (stat) {
-        page2.widget().checkBoxLdap.checked = true;
-        page2.widget().checkBoxLdap.enabled = true;
-    } else {
-        page2.widget().checkBoxLdap.checked = false;
-        page2.widget().checkBoxLdap.enabled = false;
+        page2.widget().checkBoxLdapEdit.text = qsTr("Manuell Edit");
     }
 }
 
@@ -146,16 +211,19 @@ function setup()
     smtp.setEditMode(page2.widget().checkBoxSmtpEdit.checked);
     smtp.setPassword(page.widget().passwordEdit.text);
 
-    if (page2.widget().checkBoxSmtp.checked) {
+    if (ac_mail_stat) {
         ac_mail.fillSmtpServer(0, smtp);
-    } else if (guessServerName()) {
-        var serverAddress = guessServerName();
+    } else if (page2.widget().lineEditSmtp.text) {
+        var serverAddress = page2.widget().lineEditSmtp.text;
+        servertest_running = true;
+        servertest_mode = 1;
         smtp.setName(serverAddress);
         smtp.setHost(serverAddress);
-        smtp.setPort(465);
-        smtp.setEncryption("SSL");
-        smtp.setAuthenticationType("plain"); // using plain is ok, because we are using SSL.
         smtp.setUsername(page.widget().emailEdit.text);
+        smtp.setAuthenticationType("plain");
+
+        SetupManager.setupInfo(qsTr("Probing Smtp server..."));
+        ServerTest.test( serverAddress, "smtp" );   //probe port and encryption
     }
 
     for (i = 0; i < ac_mail.countIdentities(); i++) {
@@ -187,18 +255,22 @@ function setup()
     kolabRes.setOption("SubscriptionEnabled", true);
     kolabRes.setOption("SieveSupport", true);
 
-    if (page2.widget().checkBoxImap.checked) {
+    if (ac_mail_stat) {
         ac_mail.fillImapServer(0, kolabRes);
-    } else if (guessServerName()) {
-        var serverAddress = guessServerName();
+    } else if (page2.widget().lineEditImap.text) {
+        var serverAddress = page2.widget().lineEditImap.text;
         kolabRes.setOption("ImapServer", serverAddress);
         kolabRes.setOption("UserName", page.widget().emailEdit.text.trim());
-        kolabRes.setOption("Authentication", 7);
-        kolabRes.setOption("Safety", "STARTTLS");
-        kolabRes.setOption("ImapPort", 143);
+
+        if (!servertest_running) {
+            servertest_mode = 2;
+            servertest_running = true;
+            SetupManager.setupInfo(qsTr("Probing Imap server..."));
+            ServerTest.test(serverAddress, "imap");
+        }       kolabRes.setOption("Authentication", 7);
     }
 
-    if (page2.widget().checkBoxLdap.checked) {
+    if (ac_ldap_stat) {
         for (i = 0; i < ac_ldap.countLdapServers(); i++) {
             var ldap = SetupManager.createLdap();
             ldap.setEditMode(page2.widget().checkBoxLdapEdit.checked);
@@ -208,16 +280,16 @@ function setup()
         var ldap = SetupManager.createLdap();
         ldap.setEditMode(page2.widget().checkBoxLdapEdit.checked);
         ldap.setPassword(page.widget().passwordEdit.text);
-        ldap.setUser(page.widget().nameEdit.text);
+        ldap.setUser(page.widget().emailEdit.text);
         ldap.setServer(guessServerName());
     }
 
-    if (page2.widget().checkBoxFreebusy.checked) {
+    if (ac_freebusy_stat) {
         var korganizer = SetupManager.createConfigFile("akonadi-calendarrc");
         korganizer.setEditMode(page2.widget().checkBoxFreebusyEdit.checked);
         korganizer.setEditName("freebusy");
         korganizer.setName("korganizer");
-        ispdb.fillFreebusyServer(0,korganizer);
+        ac_freebusy.fillFreebusyServer(0,korganizer);
     } else if (page2.widget().checkBoxFreebusyEdit.checked) {
         var korganizer = SetupManager.createConfigFile("akonadi-calendarrc");
         korganizer.setEditMode(page2.widget().checkBoxFreebusyEdit.checked);
@@ -228,11 +300,18 @@ function setup()
         korganizer.setConfig( "FreeBusy Retrieve", "FreeBusyRetrieveUrl", "https://" + guessServerName()  + "/freebusy/" );
     }
 
-    SetupManager.execute();
+    if (!servertest_running) {
+        SetupManager.execute();
+    }
 }
 
 try {
-  page.widget().emailEdit.textChanged.connect(emailChanged);
+  ServerTest.testFail.connect(testResultFail);
+  ServerTest.testResult.connect(testOk);
+
+  page.widget().emailEdit.textChanged.connect(validateInput);
+  page.widget().passwordEdit.textChanged.connect(validateInput);
+
   page.pageLeftNext.connect(checkAutoconfig);
   page2.pageLeftNext.connect(setup);
 } catch (e) {
diff --git a/resources/kolab/wizard/kolabwizard2.ui b/resources/kolab/wizard/kolabwizard2.ui
index aa664a0..cad3dc6 100644
--- a/resources/kolab/wizard/kolabwizard2.ui
+++ b/resources/kolab/wizard/kolabwizard2.ui
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>368</width>
-    <height>116</height>
+    <width>625</width>
+    <height>134</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -37,25 +37,31 @@
       </widget>
      </item>
      <item>
-      <widget class="QCheckBox" name="checkBoxImap">
-       <property name="enabled">
-        <bool>false</bool>
-       </property>
+      <widget class="QLabel" name="lineEditImapLabel">
        <property name="text">
-        <string>Use Autoconfig</string>
+        <string>Imap Servername:</string>
        </property>
       </widget>
      </item>
      <item>
+      <widget class="QLineEdit" name="lineEditImap"/>
+     </item>
+     <item>
       <widget class="QCheckBox" name="checkBoxImapEdit">
+       <property name="enabled">
+        <bool>true</bool>
+       </property>
        <property name="text">
-        <string>Edit</string>
+        <string>Manuell Edit</string>
+       </property>
+       <property name="checked">
+        <bool>false</bool>
        </property>
       </widget>
      </item>
     </layout>
    </item>
-   <item row="4" column="1">
+   <item row="5" column="1">
     <layout class="QHBoxLayout" name="horizontalLayout_4">
      <item>
       <widget class="QLabel" name="labelFreebusySearch">
@@ -71,28 +77,18 @@
       </widget>
      </item>
      <item>
-      <widget class="QCheckBox" name="checkBoxFreebusy">
-       <property name="enabled">
-        <bool>false</bool>
-       </property>
-       <property name="text">
-        <string>Use Autoconfig</string>
-       </property>
-      </widget>
-     </item>
-     <item>
       <widget class="QCheckBox" name="checkBoxFreebusyEdit">
        <property name="enabled">
         <bool>true</bool>
        </property>
        <property name="text">
-        <string>Edit</string>
+        <string>Create</string>
        </property>
       </widget>
      </item>
     </layout>
    </item>
-   <item row="4" column="0">
+   <item row="5" column="0">
     <widget class="QLabel" name="labelFreebusy">
      <property name="text">
       <string>Freebusy:</string>
@@ -122,25 +118,31 @@
       </widget>
      </item>
      <item>
-      <widget class="QCheckBox" name="checkBoxSmtp">
-       <property name="enabled">
-        <bool>false</bool>
-       </property>
+      <widget class="QLabel" name="lineEditSmtpLabel">
        <property name="text">
-        <string>Use Autoconfig</string>
+        <string>Smtp Servername:</string>
        </property>
       </widget>
      </item>
      <item>
+      <widget class="QLineEdit" name="lineEditSmtp"/>
+     </item>
+     <item>
       <widget class="QCheckBox" name="checkBoxSmtpEdit">
+       <property name="enabled">
+        <bool>true</bool>
+       </property>
        <property name="text">
-        <string>Edit</string>
+        <string>Manuell Edit</string>
+       </property>
+       <property name="checked">
+        <bool>false</bool>
        </property>
       </widget>
      </item>
     </layout>
    </item>
-   <item row="2" column="1">
+   <item row="3" column="1">
     <layout class="QHBoxLayout" name="horizontalLayout_2">
      <item>
       <widget class="QLabel" name="labelLdapSearch">
@@ -156,25 +158,15 @@
       </widget>
      </item>
      <item>
-      <widget class="QCheckBox" name="checkBoxLdap">
-       <property name="enabled">
-        <bool>false</bool>
-       </property>
-       <property name="text">
-        <string>Use Autoconfig</string>
-       </property>
-      </widget>
-     </item>
-     <item>
       <widget class="QCheckBox" name="checkBoxLdapEdit">
        <property name="text">
-        <string>Edit</string>
+        <string>Create</string>
        </property>
       </widget>
      </item>
     </layout>
    </item>
-   <item row="2" column="0">
+   <item row="3" column="0">
     <widget class="QLabel" name="labelLdap">
      <property name="text">
       <string>Ldap:</string>




More information about the commits mailing list