import android.annotation.TargetApi;
+import android.app.ActionBar;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiEnterpriseConfig;
import android.net.wifi.WifiManager;
import android.os.Build;
import android.os.Bundle;
+import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.util.Base64;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
+import android.widget.TextView;
import java.io.ByteArrayInputStream;
import java.io.IOException;
int phase2Method;
String caCertStr;
+ String caName;
+ String usernameSuffix;
String username;
String password;
+ TabLayout.Tab tab;
+
public WifiNetworkSettingsSet(String name, String ssid, WifiNetworkAuthenticationTypes authType) {
this.name = name;
this.ssid = ssid;
return this;
}
- public WifiNetworkSettingsSet setCACertificate(String certificate) {
+ public WifiNetworkSettingsSet setCACertificate(String caname, String certificate) {
+ this.caName = caname;
this.caCertStr = certificate;
return this;
}
+ public WifiNetworkSettingsSet setUserSuffix(String suffix) {
+ this.usernameSuffix = suffix;
+ return this;
+ }
+
public void setAuthData(String username, String password) {
this.username = username;
this.password = password;
}
private View view;
+ private TabLayout tablayout;
private WifiNetworkSettingsSet[] wifiPresets;
private WifiManager wifimanager;
+ private int selectedNetworkIndex = 0;
private void loadDhbwWifiDefinitions() {
- int numOfNetworks = 2;
+ int numOfNetworks = 3;
int i = 0;
wifiPresets = new WifiNetworkSettingsSet[numOfNetworks];
WifiEnterpriseConfig.Eap.PEAP,
WifiEnterpriseConfig.Phase2.MSCHAPV2,
null
- ).setCACertificate("-----BEGIN CERTIFICATE-----\n" +
+ ).setCACertificate("Deutsche Telekom Root CA 2", "-----BEGIN CERTIFICATE-----\n" +
"MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEc\n" +
"MBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2Vj\n" +
"IFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENB\n" +
"-----END CERTIFICATE-----");
wifiPresets[i++] = (new WifiNetworkSettingsSet("dhbw-wlan", "dhbw-wlan", WifiNetworkAuthenticationTypes.WIFI_AUTHTYPE_NONE));
+
+ wifiPresets[i++] = (new WifiNetworkSettingsSet("eduroam", "eduroam", WifiNetworkAuthenticationTypes.WIFI_AUTHTYPE_WPA_ENTERPRISE)).
+ setWpaEnterprise(
+ new int[] {WifiConfiguration.KeyMgmt.WPA_EAP, WifiConfiguration.KeyMgmt.IEEE8021X},
+ WifiEnterpriseConfig.Eap.PEAP,
+ WifiEnterpriseConfig.Phase2.MSCHAPV2,
+ null
+ ).setCACertificate("Deutsche Telekom Root CA 2", "-----BEGIN CERTIFICATE-----\n" +
+ "MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEc\n" +
+ "MBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2Vj\n" +
+ "IFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENB\n" +
+ "IDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5MjM1OTAwWjBxMQswCQYDVQQGEwJE\n" +
+ "RTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxl\n" +
+ "U2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290\n" +
+ "IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEU\n" +
+ "ha88EOQ5bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhC\n" +
+ "QN/Po7qCWWqSG6wcmtoIKyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1Mjwr\n" +
+ "rFDa1sPeg5TKqAyZMg4ISFZbavva4VhYAUlfckE8FQYBjl2tqriTtM2e66foai1S\n" +
+ "NNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aKSe5TBY8ZTNXeWHmb0moc\n" +
+ "QqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTVjlsB9WoH\n" +
+ "txa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAP\n" +
+ "BgNVHRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOC\n" +
+ "AQEAlGRZrTlk5ynrE/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756Abrsp\n" +
+ "tJh6sTtU6zkXR34ajgv8HzFZMQSyzhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpa\n" +
+ "IzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8rZ7/gFnkm0W09juwzTkZmDLl\n" +
+ "6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4Gdyd1Lx+4ivn+\n" +
+ "xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU\n" +
+ "Cm26OWMohpLzGITY+9HPBVZkVw==\n" +
+ "-----END CERTIFICATE-----").
+ setUserSuffix("@dhbw-loerrach.de");
}
break;
case WIFI_AUTHTYPE_WPA_ENTERPRISE:
WifiEnterpriseConfig enterpriseConfig = new WifiEnterpriseConfig();
- enterpriseConfig.setIdentity(settings.username);
+ String username = settings.username;
+ if(settings.usernameSuffix != null)
+ username += settings.usernameSuffix;
+ enterpriseConfig.setIdentity(username);
enterpriseConfig.setPassword(settings.password);
enterpriseConfig.setEapMethod(settings.eapMethod);
enterpriseConfig.setPhase2Method(settings.phase2Method);
wifimanager = (WifiManager)AppContext.getMainActivity().getSystemService(AppContext.getMainActivity().WIFI_SERVICE);
}
+ private void updateSelectedNetworkInformation() {
+ if(view == null)
+ return;
+ if(selectedNetworkIndex >= wifiPresets.length)
+ return;
+
+ WifiNetworkSettingsSet settings = wifiPresets[selectedNetworkIndex];
+ TextView ssidInfoView = (TextView) view.findViewById(R.id.ssidInfo);
+ TextView securityInfoView = (TextView) view.findViewById(R.id.securityInfo);
+ TextView eapInfoView = (TextView) view.findViewById(R.id.eapInfo);
+ TextView phase2InfoView = (TextView) view.findViewById(R.id.phase2Info);
+ TextView cacertInfoView = (TextView) view.findViewById(R.id.cacertInfo);
+
+ ssidInfoView.setText(settings.ssid);
+ switch(settings.authType) {
+ case WIFI_AUTHTYPE_NONE:
+ securityInfoView.setText(R.string.wifiopts_security_open);
+ break;
+ case WIFI_AUTHTYPE_WEP:
+ securityInfoView.setText(R.string.wifiopts_security_wep);
+ // unsupported!
+ break;
+ case WIFI_AUTHTYPE_WPA:
+ securityInfoView.setText(R.string.wifiopts_security_wpa);
+ break;
+ case WIFI_AUTHTYPE_WPA_ENTERPRISE:
+ securityInfoView.setText(R.string.wifiopts_security_wpa_enterprise);
+ break;
+ }
+
+ if(settings.authType == WifiNetworkAuthenticationTypes.WIFI_AUTHTYPE_WPA_ENTERPRISE) {
+ int eapStringId = 0;
+ switch(settings.eapMethod) {
+ case WifiEnterpriseConfig.Eap.PEAP:
+ eapStringId = R.string.wifiopts_eap_peap;
+ break;
+ case WifiEnterpriseConfig.Eap.TLS:
+ eapStringId = R.string.wifiopts_eap_tls;
+ break;
+ case WifiEnterpriseConfig.Eap.TTLS:
+ eapStringId = R.string.wifiopts_eap_ttls;
+ break;
+ case WifiEnterpriseConfig.Eap.PWD:
+ eapStringId = R.string.wifiopts_eap_pwd;
+ break;
+ }
+ if(eapStringId > 0)
+ eapInfoView.setText(eapStringId);
+ else
+ eapInfoView.setText("");
+
+ int phase2StringId = 0;
+ switch(settings.phase2Method) {
+ case WifiEnterpriseConfig.Phase2.MSCHAPV2:
+ phase2StringId = R.string.wifiopts_phase2_mschapv2;
+ break;
+ case WifiEnterpriseConfig.Phase2.GTC:
+ phase2StringId = R.string.wifiopts_phase2_gtc;
+ break;
+ }
+ if(phase2StringId > 0)
+ phase2InfoView.setText(phase2StringId);
+ else
+ phase2InfoView.setText("");
+
+ cacertInfoView.setText(settings.caName);
+ } else {
+ eapInfoView.setText("-");
+ phase2InfoView.setText("-");
+ cacertInfoView.setText("-");
+ }
+
+ }
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
view = inflater.inflate(R.layout.fragment_wifi_settings, container, false);
AppContext.setTitle("DHBW WLAN Settings");
+ updateSelectedNetworkInformation();
+
+ tablayout = (TabLayout) view.findViewById(R.id.tabs);
+ tablayout.removeAllTabs();
+ for(int i = 0; i < wifiPresets.length; i++) {
+ TabLayout.Tab tab = tablayout.newTab();
+ tab.setText(wifiPresets[i].name);
+ tablayout.addTab(tab);
+ }
+ tablayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
+ @Override
+ public void onTabSelected(TabLayout.Tab tab) {
+ selectedNetworkIndex = tab.getPosition();
+ updateSelectedNetworkInformation();
+ }
+
+ @Override
+ public void onTabUnselected(TabLayout.Tab tab) {
+ }
+
+ @Override
+ public void onTabReselected(TabLayout.Tab tab) {
+ }
+ });
+
Button connectBtn = (Button) view.findViewById(R.id.wifiConnectBtn);
connectBtn.setOnClickListener(new View.OnClickListener() {
@Override
// connectToDHWiFi not supported!
// do something else?
} else if (username.length() > 0 && password.length() > 0) {
- WifiNetworkSettingsSet settings = wifiPresets[0];
- settings.setAuthData(username, password);
- connectToWiFi(settings);
+ WifiNetworkSettingsSet settings = wifiPresets[selectedNetworkIndex];
+ if(settings != null) {
+ settings.setAuthData(username, password);
+ connectToWiFi(settings);
+ }
}
connectBtn.setEnabled(true);