Challenge Overview

Note - The challenge will be reviewed jointly by the client and copilot

 

Welcome to the CAIL6530 iPad App - SSH Implementation + Bug Fixes challenge.

The client wants to develop an iPad app that emulates a text based terminal called "Tandem 6530" on iOS tablets. The App will allow users to access legacy, text based applications running on HP NonStop (formerly Tandem) mainframe systems. The app will be used by financial and manufacturing companies to connect to these mainframe systems.

 

The client has already built an Android app (source code for the same is provided in forums). We also have a Objective-C proof of concept which isn’t stable and not the highest code quality but can be used as a reference to see how it works.

There’s also the T-Term Pro app on the App Store which closely describes what we’re trying to build.

So far, we’ve run these challenges for this app to implement conversation mode and block mode

CAIL6530 iPad App - Conversational Mode POC Implementation

CAIL6530 iPad App - Block Mode Implementation + Bug Fixes

CAIL6530 iPad App - Block Mode Refinement + Bug Fixes

CAIL6530 iPad App - Bug Fixes + Application Front End

CAIL6530 iPad App - Bug Fixes

 

Challenge Requirements

 

A) Bug Fixes

 

As part of this challenge, we need to fix the following issues from the last challenge

1) Still get partial lines at top and bottom sometimes, and not when I change orientation. This happens with Test003, subtest 3 as per:

25 lines are displayed instead of 24 – last line is reverse.

Please make changes to always show only 24 lines in the main display, plus the status line. This applies to both Conversational and Block modes.

2) Setup – Font Selection - changing the font causes the screen to shrink to 6 ½ lines displayed, but only in landscape mode. Rotating does not fix.

This appears to be related to line 22 of “TerminalViewController.swift”. If I set “OPTION_SHOW_ONLY_VISIBLE_SCREEN_AREA” to “false” the problem goes away. Maybe we could make this a user setting, or if we detect (if we can detect) whether there is an external keyboard being used, set it to false, if on-screen keyboard, set it to true. However, if this is to be supported, when set to true it must work correctly, and it doesn’t now. The line with the cursor on it must be visible - not happening now. Displaying of characters also stops in tedit - can see them for a second when I bring up the toolbar with a long press, then they disappear.

Further bugs will have to wait for customer testing to complete.

B) SSH Implementation

The app currently implements a Telnet connection to the server. We want to enhance it with SSH support. The reference Android app already has SSH implemented and we would like to implement the same functionality for the iPad app.

 

There will be some changes compared to the Android app UI:

  1. Remove “GSSAPI”. Only Password and Keyboard-Interactive authentication should be supported

  2. Add a new section after “User Info:” named “Strict Host Checking:” with the following choices:
    Yes:
    No:
    Ask User:
    Only one choice allowed.
     

For “Strict Host Checking” you must create a file somewhere on the iOS device (normally named “known_hosts”). This will hold a line for each host added, like this:

blitz.atc-hp.com,22 3d:90:ac:ad:1f:40:ea:aa:09:80:bd:e3:60:dd:ab:cc

The format is “hostname_or_ip address,port hash”

If set to “No” the host key is ignored and nothing is written to the “known_hosts” file, and the connection is always allowed.

If set to “Yes” you must check the sent hash against the “known_hosts” file, and if you don’t find it, or it doesn’t match, drop the session. If you do find it in the “known_hosts” file, allow the connection to complete.

If set to “Ask User”, and the hash for that host isn’t already in the the “known_hosts” file, ask the user if they want to trust that host. This is what we show in Windows:

If the user selects “Yes” add a new line to the “known_hosts” file. If they select “No” allow the connection to complete, but don’t add a new line to the “known_hosts” file. If they select “Cancel” close the connection and don’t write anything to the “known_hosts” file.

If set to “Ask User”, and the hash for that host is already in the the “known_hosts” file, but it doesn’t match the sent hash, warn the user but allow them to choose as per  the Windows version:

If set to “Ask User”, and the hash for that host is already in the the “known_hosts” file and it matches the sent hash, allow the connection without prompting the user.

If anything is unclear please ask questions in the forums.

You can use a 3rd party open source library for SSH implementation if required (Ask in forums if you have doubts about licensing).

 

Evaluation/ Review Criteria

- The application must connection to the sample 6530 server (details provided in forum) and be able to run the sample programs and provided tests must pass (details in forum).

- No regression issues

- Listed bugs must be fixed

- SSH implementation must work as described

Reviewers will be expected to ensure that the app is able to connect the server using the submission and run the sample programs provided in forums.

 

Challenge Assets

 
  • Existing app source code

  • Android App source code

  • Connection information to sample HP server including VPN connectivity

  • 6530 Manual

 

General Notes

 

NOTES

  • Only iPad device is in scope.

  • All source code changes must be well commented and MUST follow existing coding conventions

  • If you face any API issues or have doubts related to request response for any API, please raise it in the forums so it can be clarified by client.

  • The app works in both portrait and landscape modes

  • App must support 2x and 3x assets and retina devices

  • App must support iOS 10.x

  • All code must be written in the latest version Swift and the project must use latest XCode version. Do not use Objective-C or Bridging approach

  • Please ask in the forums if you wish to use any open-source third-party libs to ensure there are no license violations



Final Submission Guidelines

Submission Guidelines

 

- Updated XCode Project with all source code that addresses the requirements

- Deployment guide with configuration & verification steps. Describe all config params and include steps to run

- Demo video (Mandatory and will be scored down if not provided)

ELIGIBLE EVENTS:

2018 Topcoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30060891