CINXE.COM
eduroam Configuration Assistant Tool
<!DOCTYPE html> <html xmlns='http://www.w3.org/1999/xhtml' lang='en' > <head lang='en'> <meta http-equiv='Content-Type' content='text/html; charset=UTF-8'> <title>eduroam Configuration Assistant Tool</title> <script type="text/javascript">ie_version = 0;</script> <!--[if IE]> <script type="text/javascript">ie_version=1;</script> <![endif]--> <!--[if IE 7]> <script type="text/javascript">ie_version=7;</script> <![endif]--> <!--[if IE 8]> <script type="text/javascript">ie_version=8;</script> <![endif]--> <!--[if IE 9]> <script type="text/javascript">ie_version=9;</script> <![endif]--> <!--[if IE 10]> <script type="text/javascript">ie_version=10;</script> <![endif]--> <!-- JQuery --> <script type="text/javascript" src="/external/jquery/jquery.js"></script> <script type="text/javascript" src="/external/jquery/jquery-migrate.js"></script> <script type="text/javascript" src="/external/jquery/jquery-ui.js"></script> <!-- JQuery --> <script type="text/javascript"> var recognisedOS = ''; var recognisedOShs20 = 0; var downloadMessage; vendorlogo = '/resources/images/vendorlogo/'; downloadMessage = "Download your eduroam庐 installer"; var img_vis = 0; var roller = 1; var that; /* ProgramFlow object defines structures required to put asynchronous elements into a synchroneus program flow. Add method adds an object to the flow. Each object added to the flow must define an Execute method, and that method must call the ProgramFlow nextStep method to activate the following step of the program. nextStep executes the next step of the flow Sleep pauses the flow for a given number of milliseconds */ function ProgramFlow() { this.programArray = new Array(); this.program_pointer = -1; this.progLen = 0; this.tm = 0; this.stop_program = 0; that = this; this.Add = function(object,init_delay) { o = new Object(); o.object = object; o.delay = init_delay; this.programArray.push(o); } this.nextStep = function() { if (that.stop_program) return; that.program_pointer++; if(that.program_pointer == that.programArray.length) that.program_pointer = 0; NS = that.programArray[that.program_pointer]; that.tm = window.setTimeout(function() {NS.object.Execute();},NS.delay); } this.Sleep = function(delay) { o = new Object(); o1 = new Object(); o1.Execute = this.nextStep; o.object = o1; o.delay = delay; this.programArray.push(o); } } function OS(name, subtitle, path, signed) { this.name = name; this.subtitle = subtitle; this.image_path = path; this.signed = signed; } /* The Picture object prepares an image to be displayed */ function Picture(os,fadeTime) { this.os = os; this.fadeTime = fadeTime; this.image = new Image(); this.image.src = os.image_path; this.Execute = function() { old_vis = img_vis; img_vis = img_vis == 0 ? 1 : 0; $("#img_roll_"+old_vis).attr("src",this.os.image_path); $("#img_roll_"+img_vis).fadeOut(this.fadeTime).delay(this.fadeTime); $("#line2").text(this.os.name); $("#line3").text(this.os.subtitle); if (this.os.signed) $("#line5").show(); else $("#line5").hide(); $("#img_roll_"+old_vis).fadeIn(this.fadeTime,Program.nextStep); // $("#img_roll_"+old_vis).fadeIn(500,Program.nextStep); } } var fTM = 1500; var win8 = new OS('MS Windows', '10, 8, 7, Vista', "/resources/images/screenshots/sampleinstaller-win8-english-h234.png",true); var mac = new OS('Apple OS X','10.7+', "/resources/images/screenshots/sampleinstaller-mac-english-h234.png",true); var android = new OS('Android','4.3+', "/resources/images/screenshots/sampleinstaller-android-english-h234.png",false); var iphone = new OS('Apple iOS devices','iPhone, iPad, iPod touch', "/resources/images/screenshots/sampleinstaller-iphone-english-h234.png",true); var linux = new OS('Linux','all major distributions', "/resources/images/screenshots/sampleinstaller-linux-english-h234.png",false); var chromeos = new OS('Chrome OS','', "/resources/images/screenshots/sampleinstaller-chromeos-english-h234.png",false); var Program = new ProgramFlow(); function prepareAnimation() { Program.Add(new Picture(mac,fTM),0); Program.Add(new Picture(win8,fTM),2000); Program.Add(new Picture(iphone,fTM),2000); Program.Add(new Picture(linux,fTM),2000); Program.Add(new Picture(android,fTM),2000); Program.Add(new Picture(chromeos,fTM),2000); Program.nextStep(); Program.Sleep(2000); } const preloadIdPs = true; const apiURL = "/user/API.php"; const catInfo = "/skins/modern/user/cat_info.php"; const overviewUser = "/admin/overview_user.php"; const remindIdP = "/user/remindIdP.php"; const profile_list_size = 4; const generation_error = "This is embarrassing. Generation of your installer failed. System admins have been notified. We will try to take care of the problem as soon as possible."; var n; var profile; // var device_button_bg ="#0a698e"; var generateTimer; var pageWidth = 0; var device_button_fg; var catWelcome; var hide_images = 0; var front_page = 1; var download_link; var openroaming = 'none'; var preagreed = false; var pressedButton; var profileDevices; var recognisedOS; var currentDevice; const discoCountries = { 'AL': "Albania",'AR': "Argentina",'AM': "Armenia",'AU': "Australia",'AT': "Austria",'AZ': "Azerbaijan",'BD': "Bangladesh",'BE': "Belgium",'BR': "Brazil",'BG': "Bulgaria",'CA': "Canada",'CL': "Chile",'CO': "Colombia",'CR': "Costa Rica",'HR': "Croatia",'CZ': "Czechia",'DK': "Denmark",'EC': "Ecuador",'EE': "Estonia",'ET': "Ethiopia",'FI': "Finland",'FR': "France",'GE': "Georgia",'DE': "Germany",'GH': "Ghana",'GR': "Greece",'HU': "Hungary",'IS': "Iceland",'IE': "Ireland",'IL': "Israel",'IT': "Italy",'JP': "Japan",'KE': "Kenya",'KR': "Korea",'KS': "Kosovo",'LA': "Laos",'LV': "Latvia",'LI': "Liechtenstein",'LT': "Lithuania",'LU': "Luxembourg",'MK': "Macedonia",'MW': "Malawi",'MY': "Malaysia",'MT': "Malta",'MX': "Mexico",'MD': "Moldova",'ME': "Montenegro",'MA': "Morocco",'NL': "Netherlands",'NZ': "New Zealand",'NG': "Nigeria",'NO': "Norway",'OM': "Oman",'PK': "Pakistan",'PE': "Peru",'PH': "Philippines",'PL': "Poland",'PT': "Portugal",'RO': "Romania",'RS': "Serbia",'SG': "Singapore",'SK': "Slovakia",'SI': "Slovenia",'ZA': "South Africa",'ES': "Spain",'LK': "Sri Lanka",'SE': "Sweden",'CH': "Switzerland",'TZ': "Tanzania",'GEANT': "The GEANT country",'TR': "Turkey",'UG': "Uganda",'UA': "Ukraine",'AE': "United Arab Emirates",'UK': "United Kingdom",'UY': "Uruguay",'US': "U.S.A.",'ZM': "Zambia" }; var idpsLoaded = false; const guiTexts = { "noMatchingData": "no matching data found", "select": "select", "www": "WWW:", "email": "email:", "tel": "tel:", "problems": "If you encounter problems, then you can obtain direct assistance from your organisation at:", "problemsGeneric": "If you encounter problems you should ask those who gave you your account for help.", "unconfigurable": "This device cannot be configured with the settings used in your organisation.", "redirect": "Your site administrator has specified that this device should be configured with resources located on a local page. When you click <b>Continue</b> this page will be opened in a new window/tab.", "profile_redirect": "Your local administrator has specified a redirect to a local support page.<br>When you click <b>Continue</b> this support page will be opened in a new window/tab.", "continue": "Continue", "close": "Close", "noProviders": "No providers found for this email", "yourIdP": "Your IdP is:", "yourIdPs": "Your IdP could be one of:", "missingEmail": "Missing email address", "entryUpdate": "This entry was last updated at:", "openRoamingTouWarning": "If you intend to download an installer which also enables OpenRoaming then you must accept OpenRoaming Terms and Conditions.", "openRoamingText1": "If you select installers with OpenRoaming support, remember to indicate your consent.", "openRoamingText2": "The installer has built-in OpenRoaming support.", "openRoamingText3": "I want to use OpenRoaming and have read and accept <a href='https://wballiance.com/openroaming/toc-2020/' target='_blank'>OpenRoaming Terms and Conditions</a>", "openRoamingText4": "I have read and accept <a href='https://wballiance.com/openroaming/toc-2020/' target='_blank'>OpenRoaming Terms and Conditions</a>", "openRoamingDisabled": "OpenRoaming is not supported on this device", "downloadAnother": "Choose another installer to download", "downloadFor": "Download your installer for", "consortium": "eduroam庐", "consortiumOnly": "eduroam庐 only", "consortiumAndOR": "eduroam庐 and OpenRoaming", }; var discoTextStrings = { "title":"Organisation", "subtitle":"Select your organisation", "textHelp": "Help, my organisation is not on the list", "textHelpMore": "This system relies on information supplied by local eduroam庐 administrators. If your organisation is not on the list, then nag them to add information to the eduroam CAT database.", "textLocateMe": "Locate me more accurately using HTML5 Geo-Location", "textShowProviders": "Show organisations in", "textAllCountries": "all countries", "textSearch" : "or search for an organisation, for example University of Oslo", "textShowAllCountries": "show all countries", "textLimited1" : "Results limited to", "textLimited2" : "entries - show more", "textNearby" : "Nearby", "geoLoc_timeout" : "Location timeout", "geoLoc_posUnavailable" : "Could not get your position", "geoLoc_permDenied" : "Your browser has denied access to your location", "geoLoc_unknownError" : "Unknown location error", "geoLoc_here" : "You are here:", "geoLoc_getting" : "Getting your location...", "geoLoc_nearby" : "Nearby providers shown on top.", }; var roller; // controls if the system sliedes apper on the page if (roller === undefined) roller = 0; var noDisco; if (noDisco === undefined) noDisco = 0; var sbPage; if (sbPage === undefined) sbPage = 0; // used to keep the footer at the bottom while the window is resized $.fn.redraw = function() { $(this).each(function() { var redraw = this.offsetHeight; }); }; function otherInstallers() { clearUIsettings(); $(".guess_os").hide(); $("#message_only").hide(); $("#other_installers").show(); $("#devices").show(); $("#devices").redraw(); reset_footer(); } // Print the list of profiles for the given IdP (identified as inst_id) function listProfiles(inst_id,selected_profile) { var j; var otherdata; $('#welcome').hide(); $("#silverbullet").hide(); $('#user_welcome').hide(); $("#idp_logo").hide(); $("#fed_logo").hide(); $("#inst_id").val(inst_id); $("#profile_id").val(''); $(".signin_large").hide(); if (roller) Program.stop_program = 1; $("#profiles").hide(); $("#user_info").hide(); $("#devices").hide(); $("#profile_redirect").hide(); $.post(apiURL, {action: 'listProfiles', api_version: 2, lang: lang, idp: inst_id}, function(j) { result = j.status; if (j.otherdata !== undefined) otherdata = j.otherdata; if (! result) { alert(guiTexts.noMatchingData); document.location.href='/'; } j = j.data; n = j.length; $("#profile_list").html(''); inst_name = j[0].idp_name; logo = j[0].logo; // the #inst_name is the hiddien form field used to carry the info $("#inst_name").val(inst_name); $("#inst_name_span").html(inst_name); $(".inst_name").text(inst_name); $("#user_page").show(); $("#institution_name").show(); if (n > profile_list_size) $("#profile_list").append('<option value="0" selected style="color:red"> --' + guiTexts.select + ' --</option>'); $.each(j,printP); if (n <= profile_list_size) $("#profile_list").append('<option value="0" selected style="display:none"> </option>'); if (logo == 1) { $("#idp_logo").attr("src",apiURL + "?action=sendLogo&api_version=2&idp="+inst_id); $("#idp_logo").show(); } $("#fed_logo").attr("src",apiURL +"?action=sendFedLogo&api_version=2&idp="+inst_id); if (otherdata !== undefined && otherdata['fedname'] !== undefined) { $("#fed_logo").attr("title",otherdata['fedname']); $("#fed_logo").attr("alt",otherdata['fedname']); } if (otherdata !== undefined && otherdata['fedurl'] !== undefined) { $("#fed_logo").css('cursor','pointer'); $("#fed_logo").click(function(event) { window.open(otherdata['fedurl'], '_blank'); }); } $("#fed_logo").show(); if (n > 1) { if (n <= profile_list_size) { $("#profile_list").attr('size',n+1); } else { $("#profile_list").attr('size',1); } $("#profiles").show(); } // depending on the case if we have one or multiple profiles we either // show the select or skip the selection and show the profile if (n > 1 && selected_profile) { var theProfile = $('#profile_list option[value='+selected_profile+']'); if ( theProfile.length == 1) { theProfile.attr("selected",true); showProfile(selected_profile); } } reset_footer(); }); } // the printP function prints an individual profile entry in the select function printP(i,v) { if (n == 1 ) { $("#profiles").hide(); $("#profile_list").append('<option value="'+v.profile+'" selected>'+v.display+'</option>'); showProfile(v.profile); } else { $("#profile_list").append('<option value="'+v.profile+'">'+v.display+'</option>'); } } // showProfile displays a single profile and the corresponding download buttons // the argument is the numeric profile identifier // Other than hiding unncecessay elements the function is essentially an AJAX // handler for profileAttributes call function showProfile(prof) { $("#profile_redirect").hide(); $("#silverbullet").hide(); $("#other_installers").hide(); $("#user_welcome").hide(); $("#devices").hide(); // no matching profile hide stuff and return if (prof == 0) { $("#user_info").hide(); // $("#devices").hide(); return; } var j, txt ; // set the global profile variable profile = prof; $("#profile_id").val(profile); txt = ''; $.post(apiURL, {action: 'profileAttributes', api_version: 2, lang: lang, profile: profile}, function(j1) { // j1 = JSON.parse(data); result = j1.status; if (! result) { alert(guiTexts.noMatchingData); document.location.href='/'; } j = j1.data; if (j.description !== undefined && j.description) { $("#profile_desc").text(j.description); $("#profile_desc").css("display","inline-block"); // $("#profile_desc").show(); } else { $("#profile_desc").hide(); $("#profile_desc").text(''); } updateTxt = '<span class="user_info">'+guiTexts.entryUpdate+' '+j.last_changed+'</span><br/>'; openroamming = 'none'; preagreed = false; if (j.openroaming !== undefined) { var p = j.openroaming.match(/.*(?=-preagreed)/); if (p != null) { preagreed = true; openroaming = p[0]; } else { openroaming = j.openroaming; } } if (j.local_url !== undefined && j.local_url) txt = txt+'<span class="user_info">' + guiTexts.www + ' <a href="'+j.local_url+'" target="_blank">'+j.local_url+'</a></span><br/>'; if (j.local_email !== undefined && j.local_email) txt = txt+'<span class="user_info">' + guiTexts.email + ' <a href="mailto:'+j.local_email+'">'+j.local_email+'</a></span><br/>'; if (j.local_phone !== undefined && j.local_phone) txt = txt+'<span class="user_info">' + guiTexts.tel + ' ' +j.local_phone+'</span><br/>'; if (txt) txt = "<span class='user_info_header'>" + guiTexts.problems + "</span><br/>"+txt+updateTxt; else txt = "<span class='user_info_header'>" + guiTexts.problemsGeneric + '</span><br/>'+updateTxt; $("#user_info").html(txt); $("#user_info").show(); if (j.silverbullet) { $("#devices").hide(); $("#silverbullet").show(); return; } profileDevices = j.devices; currentDevice=findDevice(recognisedOS); // create the main download page section // test if we have a global profile redirect in this case the array // will only have a single element and it will have id 0 // such device id may not appear in any other situation if (profileDevices.length == 1 && profileDevices[0].id == '0') { $("#devices").hide(); $("#user_info").hide(); $("#profile_redirect_bt").attr('href',profileDevices[0].redirect); $("#profile_redirect").show(); reset_footer(); return; } updateGuessOsDiv(currentDevice); resetDevices(false); // first handle the guess_os part if (handleGuessOs(currentDevice) == 0) return; // now the full devices list $.each(j.devices,function(i,v) { // Now consider devices that cannot be configured due to unsupported // EAP methods. This can be recognised by the device status set to 1 // however we also need to make sure that the redirect has not been // set for this device. if (v.status > 0) { if( v.redirect == '0') { $("#"+v.id).addClass('disabledDevice'); $("#info_b_"+v.id).addClass('disabledDevice'); } } }); $("#devices").show(); reset_footer(); }) } function resetDevices(initial) { if (recognisedOS !== '' ) { mainOS(initial); } else { otherInstallers(); } $("#devices button").removeClass('alertButton'); $("#devices button").removeClass('disabledDevice'); $("#devices button").removeClass('hasAdditonalInfo'); $('#devices button').unbind('click'); $('#devices tr').show(); $('.device_info').html(''); $('.device_info').hide(); $("#user_welcome").hide(); $("#devices").unbind(); $("#devices").on('click', 'button', function(event) { event.preventDefault(); deviceButtonClick($(this)); }); } function clearUIsettings() { $("#other_installers").hide(); // $("#openroaming_check").prop("checked", false); $("#g_or_"+recognisedOS).css("background-color", "#bbb"); $("#g_or_"+recognisedOS).removeClass('enabled'); $("#openroaming_tou").hide(); $("#g_or_"+recognisedOS).hide(); $("button.dev_or").removeClass('enabled'); $("button.dev_or").css("background-color", "#bbb"); } function handlePreagreed() { if (!preagreed) { if (openroaming == 'ask') { $("#or_text_1").show(); } if (currentDevice.options.message_only != 1 && currentDevice.geteduroam != 1) { $("#openroaming_tou").show(); } } else { $("#openroaming_check").prop("checked", true); $("#openroaming_check").trigger("change"); } } function resetOpenRoaming(mainOs, hs20) { if (mainOs === '' ) { return; } $("#g_or_"+mainOs).css("background-color", "#bbb"); $("#g_or_"+mainOs).removeClass('enabled'); $("#g_or_"+mainOs).hide(); switch (openroaming) { case 'none': $("#download_button_header_"+mainOs).html(guiTexts.consortium); $("#g_"+mainOs).show(); $("#g_or_"+mainOs).hide(); break; case 'ask': if (hs20 == "1") { $("#or_text_1").html(guiTexts.openRoamingText1); $("#or_text_2").html(guiTexts.openRoamingText3); $("#g_"+mainOs).show(); handlePreagreed(); $("#download_button_header_"+mainOs).html(guiTexts.consortiumOnly); $("#g_"+mainOs).show(); $("#g_or_"+mainOs).show(); } else { $("#download_button_header_"+mainOs).html(guiTexts.consortium); } $("#g_"+mainOs).show(); break; case 'always': if (hs20 == "1") { $("#download_button_header_"+mainOs).html(guiTexts.consortiumAndOR); $("#or_text_1").html(guiTexts.openRoamingText2); $("#or_text_2").html(guiTexts.openRoamingText4); handlePreagreed(); $("#g_"+mainOs).hide(); $("#download_button_header_"+mainOs).html(guiTexts.consortiumAndOR); $("#g_or_"+mainOs).show(); } else { $("#openroaming_tou").hide(); $("#download_button_header_"+mainOs).html(guiTexts.consortium); $("#g_"+mainOs).show(); } break; } } function mainOS(initial) { clearUIsettings(); resetOpenRoaming(recognisedOS, recognisedOShs20); if (!initial) { $("div.guess_os").show(); } } /* now comes the definition of button click there are several types of button possible the main download button (.guess_os) my either generate immediate download action or can open up the extra info window; the device listing buttons (.other_os) just cause the device selection and call the main download screen; the info button (.more_info_b) just pop up the device info window */ function deviceButtonClick(button) { var device_id = button.attr("name"); var setOpenRoaming = 0; var info_id = 'info_'+device_id; if (button.hasClass("guess_os")) { // main download buttons first info_id = 'info_g_'+device_id; $('.device_info').hide(); if (button.hasClass("dev_or") && $("#openroaming_check").prop("checked") == false) { alert(guiTexts.openRoamingTouWarning); return; } pressedButton = button; if (button.hasClass('hasAdditonalInfo')) { $('#'+info_id).show(100); } else { if (button.hasClass("dev_or") && $("#openroaming_check").prop("checked") == true) { setOpenRoaming = 1; } doDownload(device_id,setOpenRoaming); } } else if (button.hasClass("other_os")) { // now the full list download buttons changeDevice(device_id); } else if (button.hasClass("more_info_b")) { if (button.hasClass("disabledDevice")) { alert(guiTexts.unconfigurable) } else { showMoreDeviceInfo(device_id); } } } function showMoreDeviceInfo(devId) { $("#info_window").html("<h2>"+$('#'+devId).text()+"</h2>"); $.post(apiURL, {action: 'deviceInfo', api_version: 2, lang: lang, device: devId, profile: profile, openroaming: openroaming}, deviceInfo); } function doDownload(devId, setOpenRoaming) { $('#download_info').hide(); generateTimer = $.now(); $("#devices").hide(); $("#user_welcome").show(); $.post(apiURL, {action: 'generateInstaller', api_version: 2, lang: lang, device: devId, profile: profile, openroaming: setOpenRoaming}, processDownload, "html"); } function findDevice(devId) { for (var i = 0; i < profileDevices.length; i++) { v = profileDevices[i]; if (v.id == devId) { return(v); } } return(null); } function deviceInfo(data) { var h = $("#info_window").html(); $("#info_window").html(h+data); $("#main_body").fadeTo("fast", 0.2,function() { var x = getWindowHCenter() - 350; var top = $("#main_body").get(0).getBoundingClientRect().top; if (top < -150) { $("#info_overlay").css("top", -top + 50); } $("#info_overlay").show(); }); } function handleGuessOs(recognisedDevice) { if (recognisedDevice == null) return 1; if (recognisedDevice.geteduroam == 1 && recognisedDevice.options.geteduroam_text !== undefined) { recognisedDevice.options.message_only = 1; recognisedDevice.message = recognisedDevice.options.geteduroam_text; } if(recognisedDevice.options.message_only == 1) { $("#guess_os").html("<div id='message_only'>"+recognisedDevice.message+"</div>"); return 1; } if(recognisedDevice.redirect != '0') { $('.device_info').html(''); $('.more_info_b').hide(); $("#g_"+recognisedOS+",#g_or_"+recognisedOS).addClass('hasAdditonalInfo'); i_div = $("#info_g_"+recognisedOS); t = guiTexts.redirect+ "<br><span class='redirect_link'><a href='"+recognisedDevice.redirect+"' target='_blank'>"+guiTexts.continue+"</a></span>"; i_div.html(t); $(".redirect_link").click(function(event) { i_div.hide('fast'); }); return 1; } // handle devices that cannot be configured due to lack of support // for required EAP methods /* if (recognisedDevice.status > 0 && recognisedDevice.redirect == '0') { // this requires a proper handler alert(guiTexts.unconfigurable); $("#devices").hide(); $("#user_info").hide(); $("#profile_redirtect_text").html(guiTexts.unconfigurable); $("span.redirect_link").hide(); $("#profile_redirect").show(); reset_footer(); return false; } */ // handle devices which require displaying extra information when // the dowmload button is pressed $('.device_info').html(''); if (recognisedDevice.device_customtext != '0' || recognisedDevice.eap_customtext != '0' || recognisedDevice.message != '0') { $("#g_"+recognisedOS+",#g_or_"+recognisedOS).addClass('hasAdditonalInfo'); i_div = $("#info_g_"+recognisedOS); /* if ($(this).hasClass("dev_or") && $("#openroaming_check").prop("checked") == false) { i_div.hide(); alert(guiTexts.openRoamingTouWarning); return; } */ // t = i_div.html(); t = ''; if (recognisedDevice.message != '0') { if (t != '') t += '<br>'; t += recognisedDevice.message; } if (recognisedDevice.device_customtext != '0') { if (t != '') t += '<br>'; t += recognisedDevice.device_customtext; } if (recognisedDevice.eap_customtext != '0') { if (t != '') t += '<br/> <br/>'; t += recognisedDevice.eap_customtext; } t += "<br><span class='redirect_link'>"+guiTexts.continue+"</span>"; i_div.html(t); $(".redirect_link").click(function(event) { i_div.hide('fast'); var dev_id = pressedButton.attr('name'); var setOpenRoaming = 0; if (pressedButton.hasClass("dev_or") && $("#openroaming_check").prop("checked") == true) { setOpenRoaming = 1; } if (recognisedDevice.status == 0) { doDownload(dev_id, setOpenRoaming); } }); } return 1; } function changeDevice(devId) { currentDevice = findDevice(devId); if (currentDevice.options.hs20 === undefined) { recognisedOShs20 = 0; } else { recognisedOShs20 = currentDevice.options.hs20; } recognisedOS = currentDevice.id; $("#device").val(currentDevice.id); updateGuessOsDiv(currentDevice); resetOpenRoaming(recognisedOS, recognisedOShs20); guessOsRes = handleGuessOs(currentDevice); if (guessOsRes == 0) return; if (guessOsRes == 2) { $("#devices").hide(); } else { $("#devices").show(); } $("div.guess_os").show(); $("#other_installers").hide(); reset_footer(); } function changeLang(l) { $("#lang").val(l); document.cat_form.submit(); } function updateGuessOsDiv(device) { $("#device_message").hide(); $("#guess_os").empty(); $("#download_another").remove(); $("#download_text_1").empty(); if (device != null) { $("#download_text_1").append("<div>"+guiTexts.downloadFor+" "+device.display+"</div>") $("#download_text_1").css('background-image', 'url("'+vendorlogo+device.group+'.png")'); if (device.status > 0) { $("#device_message").html(guiTexts.unconfigurable); $("#device_message").show(); } else { div1 = "<div>\ <div class='button_wrapper'>\ <button name='"+device.id+"' class='guess_os' id='g_"+device.id+"'>\ <div class='download_button_text_1' id='download_button_header_"+device.id+"'>"+guiTexts.consortiumOnly+"\ /div>\ </button>\ </div>\ <div class='button_wrapper'>\ <button name='"+device.id+"' class='guess_os dev_or' id='g_or_"+device.id+"'>\ <div name='"+device.id+"' class='download_button_text_1' id='download_button_or_header_"+device.id+"'>"+guiTexts.consortiumAndOR+"\ </div>\ </button>\ </div>\ <div class='button_wrapper'>\ <button name='"+device.id+"' class='more_info_b' id='g_info_b_"+device.id+"'>i</button>\ </div>\ </div>\ <div name='"+device.id+"' class='device_info' id='info_g_"+device.id+"'>XXXXX</div>\ <div id='more_i'><a href='javascript:showMoreDeviceInfo(\""+device.id+"\")'>See more installer information</a></div>"; $("#guess_os").prepend(div1); } } div2 ="<div id='download_another' class='sub_h guess_os'>\ <a href='javascript:otherInstallers()'>"+guiTexts.downloadAnother+"</a>\ </div>"; $("#guess_os_wrapper").append(div2); } function showInfo(data, title) { if (data.substring(0,8) == 'no_title') { data = data.substring(8,data.length); } else { data = "<h1>"+title+"</h1>"+data; } if (roller) Program.stop_program = 1; $("#main_body").fadeTo("fast", 0.1); $("#main_menu_content").html(data); $("#main_menu_info").show('fast'); } function infoCAT(k,subK,title) { $.post(catInfo, {page: k, subpage: subK, lang: lang}, function(data) { showInfo(data, title) }); } function waiting(action) { if (action == 'start') { var x = getWindowHCenter() - 16; $("#loading_ico").css('left',x+'px'); $("#loading_ico").attr('src','resources/images/icons/loading9.gif'); $("#loading_ico").show(); return; } if (action == 'stop') { $("#loading_ico").hide(); return; } } function goAdmin() { waiting('start'); window.location.replace(overviewUser+"?lang="+lang); } function remindIdPF() { mail = $("#remindIdP").val(); key = $("#remindIdPs").val(); if (mail == "") { alert(guiTexts.missingEmail); return; } waiting('start'); $.get(remindIdP, {key: key, mail: mail}, function(data) { $("#remindIdPl").html(""); try { j = JSON.parse(data); } catch(err) { alert(generation_error); return(false); } if (j.status == 0) { $("#remindIdPh").html(guiTexts.noProviders); waiting('stop'); return; } if (j.data.length == 1) { $("#remindIdPh").html(guiTexts.yourIdP); } else { $("#remindIdPh").html(guiTexts.yourIdPs); } $.each(j.data, function(i, v) { $("#remindIdPl").append('<li>' + v + '</li>'); }, 'html'); waiting('stop'); }); } /* Get horizontal center of the Browser Window */ function getWindowHCenter() { var windowWidth = 0; if ( typeof( window.innerWidth ) == 'number' ) { windowWidth = window.innerWidth; } else { if ( document.documentElement && document.documentElement.clientWidth ) { windowWidth = document.documentElement.clientWidth; } else { if ( document.body && document.body.clientWidth ) { windowWidth = document.body.clientWidth; } } } return(Math.round(windowWidth/2)); } function showTOU() { $("#all_tou_link").hide(); $("#tou_2").show(); } function back_to_downloads() { $("#devices").show(); $("#user_welcome").hide(); } function reset_footer() { var wh = parseInt($(window ).height()); var mph = parseInt($("#main_page").height()) + parseInt($("#footer").css("height")); if (wh > mph) { $("#wrap").css("min-height","100%"); $("#vertical_fill").css("height",wh - mph - 16); $("#vertical_fill").show(); } else { $("#wrap").css("min-height","auto"); $("#vertical_fill").hide(); } $("#institution_name").css("min-height", $("#inst_extra_text").height()); } function processDownload(data) { generateTimer = $.now() - generateTimer; if (generateTimer < 3000) generateTimer = 3000 - generateTimer; else generateTimer = 0; var j; try { j = JSON.parse(data).data; } catch(err) { alert(generation_error); return(false); } if ( j.link == 0 ) alert(generation_error); else { download_link = j.link; $("#download_info a").attr('href',download_link); $('#download_info').show(); if ( generateTimer > 0 ) { setTimeout("document.location.href=download_link",generateTimer); } else { document.location.href=download_link; } } } function discoJuiceCallback(e) { $("#profile_desc").hide(); $("#profile_desc").text(''); $("#welcome_top1").hide(); $("#top_invite").hide(); $("#institution_name").hide(); $("#front_page").hide(); if (roller) Program.stop_program = 1; $(this).addClass('pressed'); $('#welcome').hide(); $("#inst_name_span").html(""); $("#user_info").hide(); $("#devices").hide(); $("#profile_redirect").hide(); $("#profiles").hide(); $("#institutions").hide(); listProfiles(e.idp,0); } function loadDiscoJuice() { var metadata; if (preloadIdPs) metadata = allIdPs; else metadata = apiURL+"?action=listAllIdentityProviders&api_version=2&lang="+lang; discoTextStrings.discoPath = "external/discojuice/"; discoTextStrings.iconPath = apiURL + "?action=sendLogo&api_version=2&disco=1&lang=" + lang + "&idp="; discoTextStrings.overlay = true; discoTextStrings.cookie = true; discoTextStrings.type = false; discoTextStrings.country = true; discoTextStrings.location = true; discoTextStrings.countryAPI = apiURL+"?action=locateUser&api_version=2"; discoTextStrings.metadata = metadata; discoTextStrings.metadataPreloaded = preloadIdPs; discoTextStrings.callback = discoJuiceCallback; $(".signin").DiscoJuice(discoTextStrings); DiscoJuice.Constants.Countries = discoCountries; idpsLoaded = true; } $(document).ready(function() { var j ; if (ie_version == 0 ) $('body').addClass("use_borders"); else { if (ie_version == 8) $('body').addClass("old_ie"); if (ie_version < 8) $('body').addClass("no_borders"); if (ie_version > 9) $('body').addClass("no_borders"); } $("#devices").hide(); if (sbPage == 0) { $("#user_page").hide(); $("#institution_name").hide(); $("#user_info").hide(); } else { $("#user_page").show(); $("#institution_name").show(); $("#user_info").show(); } $("#profiles").hide(); $("#devices").hide(); $("#download_info a").css('font-weight','bold'); $("#profile_list").change(function(event) { showProfile($(this).val()); }); resetDevices(true); $(".signin").click(function(event) { event.preventDefault(); if (idpsLoaded) return; waiting('start'); const tmInt = setInterval(function() { if (!idpsLoaded) return; clearInterval(tmInt); waiting('stop'); DiscoJuice.UI.show(); }, 100); }); $("#main_menu_close").click(function(event) { $("#main_menu_info").hide('fast'); $("#main_body").fadeTo("fast", 1.0); if (roller) { Program.stop_program = 0; Program.nextStep(); } return(false); }); $("#info_menu_close").click(function(event) { $("#info_overlay").hide('fast'); $("#main_body").fadeTo("fast", 1.0); }); $("#hamburger").click(function(event) { $("#menu_top > ul").toggle(); }); $("#menu_top > ul >li").click(function(event) { if ($( window ).width() < 750 ) { $("#menu_top > ul").hide(); } }); catWelcome = $("#main_menu_content").html(); if (noDisco === 0) { if (preloadIdPs) { $.get(apiURL+"?action=listAllIdentityProviders&api_version=2&lang="+lang,function(data) { allIdPs = data; loadDiscoJuice(); }, "json"); } else { loadDiscoJuice(); } } // device_button_bg = $("button:first").css('background'); device_button_fg = $("button:first").css('color'); if (front_page) if (roller) $("#img_roll_1").fadeOut(0); $("#cursor").fadeOut(0); if (front_page) { $("#front_page").show(); if (roller) prepareAnimation(); } $("#openroaming_check").change(function(event) { if ($("#openroaming_check").prop("checked") == true) { $("[id^='g_or_']").css("background-color", $("button.guess_os").css("background-color")); $("[id^='g_or_']").addClass('enabled'); $("#device_list button.dev_or.hs20").css("background-color", $("button.guess_os").css("background-color")); $("#device_list button.dev_or.hs20").addClass('enabled'); } else { $("[id^='g_or_']").css("background-color", "#bbb"); $("[id^='g_or_']").removeClass('enabled'); $("#device_list button.dev_or").css("background-color", "#bbb"); $("#device_list button.dev_or").removeClass('enabled'); } }); setTimeout(() => { reset_footer(); }, 50); // reset_footer(); $( window ).resize(function(event) { if ($( window ).width() > 750) { $("#menu_top > ul").show(); } reset_footer(); }); }); var loading_ico = new Image(); </script> <!-- DiscoJuice --> <script type="text/javascript" src="/external/discojuice/discojuice.js"></script> <script type="text/javascript"> var lang = "en"; </script> <link rel="stylesheet" type="text/css" href="/external/discojuice/css/discojuice.css" /> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no"> <link rel='stylesheet' type='text/css' href='/skins/modern/resources/css/cat-user.css.php' /> </head> <body> <div id="wrap"> <form id="cat_form" name="cat_form" method="POST" accept-charset="UTF-8" action="/"> <div id='heading'><div id='cat_logo'> <a href='https://www.eduroam.org'><img id='logo_img' src='/resources/images/consortium_logo.png' alt='Consortium Logo'/></a> <span>Configuration Assistant Tool</span> </div><div id='motd'>CAT was recently upgraded to version 2.1.3. Please report any issues to the mailing list cat-users@lists.geant.org</div><img id='hamburger' src='/skins/modern/resources/images/icons/menu.png' alt='Menu'/><div id='menu_top'> <ul> <li><a href='/'>Start page</a></li> <li><span>About</span> <ul> <li><a href='javascript:infoCAT("about", "about_cat","About eduroam CAT")'>About eduroam CAT</a></li> <li><a href='https://www.eduroam.org'>About eduroam庐</a></li> </ul></li> <li><span>Language</span> <ul> <li><a href='javascript:changeLang("ar")'>丕賱毓乇亘賷丞</a></li> <li><a href='javascript:changeLang("bg")'>袘褗谢谐邪褉褋泻懈</a></li> <li><a href='javascript:changeLang("ca")'>Catal脿</a></li> <li><a href='javascript:changeLang("cs")'>膶e拧tina</a></li> <li><a href='javascript:changeLang("de")'>Deutsch</a></li> <li><a href='javascript:changeLang("el")'>螘位位畏谓喂魏维</a></li> <li><a href='javascript:changeLang("en")' class="selected-lang">English(GB)</a></li> <li><a href='javascript:changeLang("es")'>Espa帽ol</a></li> <li><a href='javascript:changeLang("et")'>Eesti</a></li> <li><a href='javascript:changeLang("fr")'>Fran莽ais</a></li> <li><a href='javascript:changeLang("hr")'>Hrvatski</a></li> <li><a href='javascript:changeLang("it")'>Italiano</a></li> <li><a href='javascript:changeLang("hu")'>Magyar</a></li> <li><a href='javascript:changeLang("nb")'>norsk</a></li> <li><a href='javascript:changeLang("pl")'>Polski</a></li> <li><a href='javascript:changeLang("pt")'>Portugu锚s</a></li> <li><a href='javascript:changeLang("sl")'>Sloven拧膷ina</a></li> <li><a href='javascript:changeLang("fi")'>Suomi</a></li> <li><a href='javascript:changeLang("tr")'>T眉rk莽e</a></li> <li><a href='javascript:changeLang("uk")'>校泻褉邪褩薪褋褜泻邪</a></li> </ul></li> <li><span>Help</span> <ul> <li><a href='javascript:infoCAT("help", "idp_not_listed","FAQ")'>My institution is not listed</a></li> <li><a href='javascript:infoCAT("help", "device_not_listed","FAQ")'>My device is not listed</a></li> <li><a href='javascript:infoCAT("help", "what_is_eduroam","FAQ")'>What is eduroam</a></li> <li><a href='javascript:infoCAT("help", "faq","FAQ")'>FAQ</a></li> <li><a href='javascript:infoCAT("help", "contact","FAQ")'>Contact</a></li> <li><a href='/diag/diag.php'>Diagnostics</a></li> </ul></li> <li><span>Manage</span> <ul> <li><a href='javascript:infoCAT("manage", "admin","eduroam庐 admin:<br>manage your IdP")'>eduroam庐 admin access</a></li> <li><a href='javascript:infoCAT("manage", "develop","Become a CAT developer")'>Become a CAT developer</a></li> </ul></li> <li><a href='javascript:infoCAT("tou", "tou","TOU")'>Terms of use</a></li> </ul></div></div> <div id="main_page"> <div id="loading_ico"> Authenticating...<br><img src="/resources/images/icons/loading51.gif" alt="Authenticating ..."/> </div> <div id="info_overlay"> <!-- device info --> <div id="info_window"></div> <img id="info_menu_close" class="close_button" src="/resources/images/icons/button_cancel.png" ALT="Close"/> </div> <div id="main_menu_info" style="display:none"> <!-- stuff triggered form main menu --> <img id="main_menu_close" class="close_button" src="/resources/images/icons/button_cancel.png" ALT="Close"/> <div id="main_menu_content"></div> </div> <div id="main_body"> <div id="front_page"> <div id='roller'> <div id='slides'> <span id='line1'>eduroam庐 installation made easy:</span> <span id='line2'></span> <span id='line3'></span> <span id='line4'>Custom built for your organisation</span> <span id='line5'>Digitally signed by the organisation that coordinates eduroam庐: G脡ANT Association </span> </div><div id = 'img_roll'> <img id='img_roll_0' src='/resources/images/empty.png' alt='Rollover 0'/> <img id='img_roll_1' src='/resources/images/empty.png' alt='Rollover 1'/> </div></div> <div id='welcome_top1'> Welcome to eduroam CAT </div> <div id='top_invite'> Connect your device to eduroam庐<br><div id='top_invite_ad'>eduroam庐 provides access to thousands of Wi-Fi hotspots around the world, free of charge. <a href='https://www.eduroam.org'>Learn more</a></div> </div><div id='user_button_td'><span id='signin'> <button class='large_button signin signin_large' id='user_button1'> <span id='user_button'>Click here to download your eduroam庐 installer </span> </button> </span> <span style='padding-left:50px'> </span> </div> </div> <!-- id="front_page" --> <!-- the user_page div contains all information for a given IdP, i.e. the profile selection (if multiple profiles are defined) and the device selection (including the automatic OS detection ) --> <div id="user_page"> <div id='institution_name'> <span id='inst_name_span'></span> <div id='inst_extra_text'></div><!-- this will be filled with the IdP name --><a id='select_another' class='signin' href="">select another</a></div><div> <img id='idp_logo' src='/resources/images/empty.png' alt='IdP Logo'/> </div><div> <img id='fed_logo' src='/resources/images/empty.png' alt='Federation Logo'/> </div> <div id='profiles'> <!-- this is the profile selection filled during run time --> <div id='profiles_h' class='sub_h'>Select the user group </div><select id='profile_list'></select><div id='profile_desc' class='profile_desc'></div></div> <div id="user_info"></div> <!-- this will be filled with the profile contact information --> <div id='user_welcome'> <!-- this information is shown just before the download --> <strong>Welcome aboard the eduroam庐 user community!</strong> <p> <span id='download_info'> <!-- the empty href is dynamically exchanged with the actual path by jQuery at runtime --> Your download will start shortly. In case of problems with the automatic download please use this direct <a href=''>link</a>. </span> <p>Dear user from <span class='inst_name'></span>, <br/> <br/>We would like to warmly welcome you among the several million users of eduroam庐! From now on, you will be able to use internet access resources on thousands of universities, research centres and other places all over the globe. All of this completely free of charge! </p> <p>Now that you have downloaded and installed a client configurator, all you need to do is find an eduroam庐 hotspot in your vicinity and enter your user credentials (this is our fancy name for 'username and password' or 'personal certificate') - and be online! <p>Should you have any problems using this service, please always contact the helpdesk of <span class='inst_name'></span>. They will diagnose the problem and help you out. You can reach them via the means shown above. <p> </p> <p> <a href='javascript:back_to_downloads()'><strong>Back to downloads</strong></a> </p> </div> <!-- id='user_welcomer_page' --> <div id='silverbullet'>You can download your eduroam庐 installer via a personalised invitation link sent from your IT support. Please talk to the IT department to get this link.</div> <div id="profile_redirect"> <!-- this is shown when the entire profile is redirected --> Your local administrator has specified a redirect to a local support page.<br>When you click <b>Continue</b> this support page will be opened in a new window/tab. <br> <span class="redirect_link"> <a id="profile_redirect_bt" href="" target="_blank">Continue </a> </span> </div> <!-- id="profile_redirect" --> <div id="devices"> <div id='openroaming_tou' style='padding:10px'> <div id='or_text_1'></div> <input type='checkbox' id='openroaming_check' name='openroaming_check'> <span id='or_text_2'>I want to use OpenRoaming and have read and accept <a href='https://wballiance.com/openroaming/toc-2020/' target='_blank'>OpenRoaming terms and conditions</a></span> </div> <div id='guess_os_wrapper' class='sub_h guess_os' > <div id='download_text_1'></div> <div id='device_message'></div> <div id='guess_os' class='guess_os'></div> </div> <div class='sub_h'> <div id='other_installers'>Choose an installer to download <table id='device_list' style='padding:0px;'><tbody><tr><td class="vendor" rowspan="2"><img src="/resources/images/vendorlogo/microsoft.png" alt="microsoft Device" title="microsoft Device"></td><td><button name='w10' class='other_os' id='w10'>MS Windows 8 and newer</button></td><td><button name='w10' class='more_info_b' id='info_b_w10'>i</button></td></tr> <tr><td><button name='w7' class='other_os' id='w7'>MS Windows 7</button></td><td><button name='w7' class='more_info_b' id='info_b_w7'>i</button></td></tr> </tbody><tbody><tr><td class="vendor" rowspan="1"><img src="/resources/images/vendorlogo/apple.png" alt="apple Device" title="apple Device"></td><td><button name='apple_global' class='other_os' id='apple_global'>Apple device</button></td><td><button name='apple_global' class='more_info_b' id='info_b_apple_global'>i</button></td></tr> </tbody><tbody><tr><td class="vendor" rowspan="1"><img src="/resources/images/vendorlogo/linux.png" alt="linux Device" title="linux Device"></td><td><button name='linux' class='other_os' id='linux'>Linux</button></td><td><button name='linux' class='more_info_b' id='info_b_linux'>i</button></td></tr> </tbody><tbody><tr><td class="vendor" rowspan="1"><img src="/resources/images/vendorlogo/chrome.png" alt="chrome Device" title="chrome Device"></td><td><button name='chromeos' class='other_os' id='chromeos'>Chrome OS</button></td><td><button name='chromeos' class='more_info_b' id='info_b_chromeos'>i</button></td></tr> </tbody><tbody><tr><td class="vendor" rowspan="2"><img src="/resources/images/vendorlogo/android.png" alt="android Device" title="android Device"></td><td><button name='eap-generic' class='other_os' id='eap-generic'>Android 8 and higher</button></td><td><button name='eap-generic' class='more_info_b' id='info_b_eap-generic'>i</button></td></tr> <tr><td><button name='android_4_7' class='other_os' id='android_4_7'>Android 4.3 to 7</button></td><td><button name='android_4_7' class='more_info_b' id='info_b_android_4_7'>i</button></td></tr> </tbody> </table> </div> </div> </div> <!-- id="devices" --> <input type="hidden" name="profile" id="profile_id"/> <input type="hidden" name="idp" id="inst_id"/> <input type="hidden" name="inst_name" id="inst_name"/> <input type="hidden" name="lang" id="lang"/> <input type="hidden" name="device" id="device" value=""/> </div> <!-- id="user_page" --> </div> </div> </form> <div id="vertical_fill"> </div> <div class='footer' id='footer'> <table> <tr> <td>eduroam CAT<br>Release <a href='https://github.com/GEANT/CAT/tree/release_2_1/Changes.md'>CAT-2.1.3</a> </td><td>© 2011-2022 GÉANT Association<br/>on behalf of the GÉANT Projects funded by EU; and others <a href='copyright.php'>Full Copyright and Licenses</a><br><span id='privacy_notice_cons'>eduroam庐</span> <a href='https://www.eduroam.org/privacy/'> Privacy Notice</a></td><td><span id='logos'><img src='/resources/images/dante.png' alt='GEANT' style='height:23px;width:47px'/> <img src='/resources/images/eu.png' alt='EU' style='height:23px;width:27px;border-width:0px;'/></span><span id='eu_text'><a href='http://ec.europa.eu/dgs/connect/index_en.htm'>European Commission Communications Networks, Content and Technology</a></span> </td> </tr> </table> </div></div> </body> </html>