RSS feed for blog Linkin Skype Mail Me Twitter

Stickfight

Click for Full Blog Listing

Basic Authentication logout issues

A quite interesting bit of work I am doing at the moment is building an AngularJS app running on an IBM ISeries, this has presented a whole series of odd little challenges but the one that bit us hard by corporate standards was logout and session expiring, The system and its sessions are on an Apache box sitting on an ISeries, it has turned out that not only was the Apache logout URL not present but that the Apache session expiry did not take effect1.

So what to do….

I have done a nasty little JavaScript solution but one I think fits the circumstances.

  1. As this is for an AngularJs app, no jquery or such
  2. I did not want this solution to actually be built into the angularjs app, as in a perfect world the underling issues will be fixed and I want it easily ripped out, also I don’t want the code mentioned in each controller etc etc.
  3. The server that the app is running on has no facility to handle log off and does not have session based authentication (or even a login page)

Basic authentication does not really handle log off very well. For everything but Internet explorer you basically have to perform a fake login.

function detectIE() {
    var ua = window.navigator.userAgent;
    console.log('In detectIE');

    var msie = ua.indexOf('MSIE ');
    if (msie > 0) {
        console.log('IE 10 or older');
        // IE 10 or older => return version number, but I just want true
        //return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
        return true;
    }

    var trident = ua.indexOf('Trident/');
    if (trident > 0) {
        console.log('IE 11');
        // IE 11 => return version number, but I just want true
        var rv = ua.indexOf('rv:');
        //return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);
        return true;
    }

    var edge = ua.indexOf('Edge/');
    if (edge > 0) {
        console.log('Edge (IE 12+)');
        // Edge (IE 12+) => return version number, but I just want true
        //return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);
        return true;
    }

    // other browser
    return false;
}


function ClearAuthentication(LogOffPage)
{
    if (!LogOffPage) {
        LogOffPage = location.pathname;
    }

    if (detectIE() == true)
    {
        console.log('In IE');
        // Logoff Internet Explorer
        document.execCommand("ClearAuthenticationCache");
        window.location = LogOffPage;
    }
    else
    {
        console.log('Not IE');
        var xhr = new XMLHttpRequest();
        xhr.open('GET', location.pathname);
        xhr.setRequestHeader('Authorization','Basic XXXXXXXXXXXXXXXX');
        xhr.onload = function() {
            if (xhr.status === 200) {
                console.log('did not log you off');
            }
            else {
                console.log('should be logged out')
                window.location = LogOffPage;
            }
        };
        xhr.send();

    }
}



Followed by a very iffy 30 min log off timer, that surprising works rather well

var inactivityTime = function () {
    var t;
    window.onload = resetTimer;
    // DOM Events
    document.onmousemove = resetTimer;
    document.onkeypress = resetTimer;

    function logout() {
        ClearAuthentication();
    }

    function resetTimer() {
        clearTimeout(t);
        t = setTimeout(logout, 1800000)
        // 30 min till logout
    }
};

(function() {
    inactivityTime();

})();

  1. but even if it had, it would have screwed up the Internal application that most people use to have an Iseries Session via a browser. 

Not at Engage 2017

Crying

Due to a disagreement at the passport office (they said that because my passport got wet 2 years ago1 then it was “damaged” and could not be renewed, only replaced — which is exactly the same process but takes longer)

As such I cant get to Engage this year, which frankly is a total sod as I was going as part of the LDC Via pile and I have a session on as well, not to mention it is the most AWESOME conference.

But thankfully the rest of the LDC Via mob is still going and Matt is doing my session… we had a handover meeting where I explained to him about different types of dragons and what an Ork is..

The session is

“Choose your own adventure: Update/Convert/Replace” Tuesday, May 9 13:30 - 14:30 in Room C. Gorilla 3

A world of adventure awaits you within every app’s lifetime, none greater than when the managers decide it is looking a bit long in the tooth. The realm is a tricky one, your cause may be just but how to you justify you opinion to the grand council of the Elder PMs? Hunt for the hidden forest where backing from the business is said to dwell. Visit the fantasy lands of ‘bolting on the latest tech’ Face the dark overlord of Rip and Replace Your challenges will not just be technical, but political & economic, can you defeat evil forever or will it rise stronger in 5 years time? Let us be your Gandalf, and take you on a journey where you are the hero

Please go, it’s one that entertained me to write and also go grab a drink with the rest of the evil mob Ben, Julian, Matt and see if they will give you a prize off our stand, while I sit here and sob on my keyboard.

Also sorry to Theo who has not put out a contract on my life for cancelling at such late notice.


  1. Apparently not damaged enough for the TSA or Japanese or E.U or British customs, but too badly damaged for a civil servant sitting behind a desk who likes to p**s on peoples lives…. not that I’m bitter or resentful or anything… 

New Laptop for 2017


P50-05.jpg

So it was time to get a new laptop…

My current one had given sterling service for the last two and a bit years, but there are a couple of broken bits on it, it was starting to make distressing overheating beeping noises and hard drives would often cut out, meaning I had to get a replacement before it gave out completely (and also before its warranty expired as I want it fixed to be my backup machine)

Time to start the hunt, but what are my requirements:

  • At Least 3 storage bay slots: I don’t need optical, but I do need:
    • An OS and home drive.
    • Dedicated drive for client VM’s.
    • Slow big drive for downloads and general none secure storage.
  • Loads of RAM, in this case looking at 64Gig for running multiple VM’s at the same time.
  • 15-inch screen (just the size I am used it)
  • A none cra**y power supply connector1: it needs to be simple and hardy (like a standard barrel plug) or able to cope with being yanked out (like an apple plug)
  • As plain as possible: I think that all electronics should be a plain matte black but I am aware that I’m in the minority in this

So basically a portable server, I have a separate VM for every client I work with (that includes clients of clients when I am subcontracting), I find that it just makes things cleaner, not only does it mean I can adhere to the desktop standards of each client but there is zero chance of leakage of any client details to another client and lastly, sometimes there is a long period between work for a given client and this way I can just archive a VM till its needed again.

Contenders were:

  • One of the high-end machines from https://www.pcspecialist.co.uk/ they are cheap for their specs and I have had their machines twice before, but I don’t like any of the new models and when the current one had an issue they were very unresponsive when it came to getting it fixed under warranty.
  • The latest high-end Lenovo workstation, 2 laptops ago I got a W510 and the darn thing is still going strong, sometimes I don’t get them if their current spec is not very up to date.
  • Apple Macbook there is no denying the quality of these, and they are used by people whose opinions I put a lot of faith in, but but I just can’t, they don’t run Linux very well, they are very much “we do things awesomely so you must do as we want” and they fecking solder their HDD’s in for goodness sake.
  • Razer Blade Pro a newcomer and the nicest looking machine I think I have ever seen, but just too much money for something that I won’t be using for gaming.

After asking around, the decision was obvious, the P50 series from Lenovo was the only one that matched all the requirements this time round.

I ordered the machine plus various components for it and all had arrived in roughly a week, this time I had splashed out on a docking station as I always buy 2 power supplies anyway and I had drooled over them for years.

Up and Going

I still use Mint Linux (currently version 18.1) as my host OS, and it installed straight away, all standard hardware was detected and function keys worked so that was a nice none event, boot time was 6 seconds cold to login which was a bit jaw-dropping, the docking station worked perfectly with Linux, in fact, nothing went wrong and it was all in all a 10-20 min job, a quick copy over of my existing data and I was done.

Even though the keyboard was one of the new island types, the spacing is the same as the old Thinkpads, so my fingers settled in nicely, an added benefit that I was not expecting is the size and weight reduction, the laptop its self is both lighter and smaller than my current one as is the power brick, nice!

Two changes I did have to make were in the BIOS, Vmware had a little grumble at my 64bit VMs meaning that I had to go into the BIOS and enable “Intel VT-x” as show below


P50-09.jpg


P50-08.jpg

Also when when I was testing using multiple monitors I got a load of terrible screen tearing, even after installing the Nvidia drivers, Linux is know for being a bit poop when it comes to video drivers but in the end it turned out to be the integrated Intel Video, as the dedicated video card is only a 4Gig one, I just turned it on in the BIOS and will live the with slight battery hit (however the quality is so much better that I don’t think I would go back to the Intel one anyway)


P50-07.jpg


P50-06.jpg

Storage

Storage seems to be the issue I always have to do the most faffing around with as no laptop producer seems to have the options I want in their customization

In this case my budget would strech to 2 x 1TB M.2. SSD and 1 x 2TB Sata Spindle Drive (basically M.2. replaces mSATA which replaced the old IDE connectors)

Now I did not know that M.2. is just a name for a socket, its not actually a name for the new transport mechanism, it can support mSATA and NVMe, OK, what is the difference, turns out a huge amount, there are hundred of articles and videos on the difference but basically mSATA (the mobile form of SATA) was designed for spindle disks and so is designed around their speed limitation whereas NVMe behaves far more like RAM and so can access SSD’s very very fast


P50-03.jpg

How the feck is this a TB Drive!!!!


P50-04.jpg

fully populated and running like a dream. :)

Niggles

Nothing is perfect, but in this case, I am happy to report that the minor faults I have found are nothing to do with the engineering of the Laptop and everything to do with me being a minor idiot and a little bit of disconnect on Lenovo’s side.

  • Backlit keyboard: Early morning I sit down at the laptop and squint at the keyboard, why is the keyboard not backlit?, <tut>, I have just not turned it on, <moment of squinting at the keyboard> where the feck is the backlight?, quick visit to google, then a shamed visit to the Lenovo order page, a backlit keyboard is an OPTIONAL EXTRA, and like a numpty I had only glanced at the keyboard option to make sure that it was set to the UK, I did not notice that there was a none backlight option, it can be fixed by buying a a replacement keyboard, but seems odd to have an £20 option that has been standard on high end laptops for years set to off.. oh well RTFS

  • Installing SSd’s: as mentioned above I installed my own SSD, but you can’t just install the M.2. stick of gum, you need a plastic adaptor which is not supplied either with the laptop or with the SSD, these are not hard to find and the ones for the P50 look like this


P50-01.jpg

  • Well that is NEARLY true, the adaptor above LOOKS like it is for all SSD (it even has the icons for both types) but if you are installing an NVMe, then you need one with the insulation pad at the back (see below), yes this info is in the detailed technical manual but part sellers do not make it obvious.


P50-02.jpg

Conclusion

Very very happy, I feel I have picked the right laptop for the next couple of years, it has the same tank like build that is the hallmark of Thinkpads, and with features like USB-C and NVMe I don’t think I will find it wanting during its life span, it is also claimed that it has a full day battery which is something I have not had in a laptop EVER but anything more than a couple hours will really make my year.

Now if I can just stop it getting greasy and dirty, and get some good stickers for the lid.


  1. This was the main reason that I did not get another laptop from https://www.pcspecialist.co.uk/ all their new laptops have these rubbish 4 pin power connectors which I have had problems with in the past, I phoned up and asked but the guy said that they were stuck with them for the next round of laptops. 

Click for Full Blog Listing
Latest Blogs