SuDoh Design

=Design Flowchart=

The proposed specification for Sudoh uses a service and an application to control the running of applications as root. The service is initially asked by the 3rd party application to run a command. The service passes the arguments as "launch parameters" to the controller application, which then prompts the user for confirmation. If there is a stored action (allow/deny), then that stored action will be used rather than showing the user a dialogue box. If there is no stored action, the 3rd party application will be added to Sudoh's application list, and the user will be prompted for action.

The Sudoh application will allow users to change stored preferences for the Sudoh service. Example: an application requests root permissions and the user clicks allow, but forgets to select "Remember this action". The user can then enter the Sudoh application and change the preference value to "Always Allow" for that specific application. Other options will be "Always Deny" and "Always Ask".

=UI Mockups= To be added tonight...

=API Features= Here are the proposed API features for the Sudoh Application

Service API
This API is to be publicly exposed, so that one can make a simple service call from any application to request root access.

Application API
This API, in the form of launch parameters, will be used internally to communicate with the c-service.

=Sudoh Management Application= This application will allow the users to:
 * View application that have requested root access
 * View more information about the last command requested by an application
 * Get details on a specific application (vendor, version, appid)
 * Allow/Deny/Reset confirmation on any application that has asked for root permissions in the past.
 * Remove an application from the list

The application will be a 'fat app', meaning it will contain both an Enyo version for webOS 3.X and a Mojo version for webOS < 3.X (Pre, Veer, Pre2)

=Conversation Logs= Sep 26 03:06:10 requesting app calls proxy app using launch params. Sep 26 03:06:22 proxy app checks database. if ok, proxy app calls service. Sep 26 03:06:26  ah Sep 26 03:06:29  that sounds easier Sep 26 03:06:32 service only accepts calls from proxy app. Sep 26 03:06:32 done. Sep 26 03:06:48  how hard would it be for an app to call ours? Sep 26 03:06:57  since right now calling a service is fairly easy Sep 26 03:07:01 it's a supported feature of webOS Sep 26 03:07:14 launch parameters

17:46 IOMonster_desk: i'm thinking we should just do a "app X is allowed root access" 17:47 IOMonster_desk: but if they click "details" it'll let them view what command wants to be run 17:47 rwhitby: IOMonster_desk: do we have "allow once" and "allow always" options? 17:47 IOMonster_desk: a neat feature to do (but possibly a security risk if passwords are sent as arguments to a root application) would be to show the last commands ran by an app 17:47 IOMonster_desk: yep! 17:47 IOMonster_desk: rwhitby: it'll have a checkbox for "Remember" 17:48 IOMonster_desk: and it'll remember your decision if you click it 17:48 IOMonster_desk: else, it'll ask you every time 17:48 Jack87: IOMonster_desk, will there be a way to take the apps out of the allow always in the future if you change your mind? 17:48 IOMonster_desk: yep 17:48 IOMonster_desk: it'll have a manager app 17:48 IOMonster_desk: so you can go in and remove or blacklist apps 17:48 rwhitby: That's the SuDoh app, if you launch it from the icon 17:48 IOMonster_desk: any app that asks for permissions will be added to the list 17:48 IOMonster_desk: whether or not you click "remember" 17:48 IOMonster_desk: that way you can do an "always deny" 17:49 IOMonster_desk: if you forgetr to click "remember" the first time 17:49 IOMonster_desk: the manager app can be anywhere from super complex to super simple 17:49 IOMonster_desk: i'm going for a semi-complex setup 17:49 IOMonster_desk: a 2 pane design 17:50 IOMonster_desk: left pane is application names 17:50 IOMonster_desk: with an icon to the left of the name 17:50 IOMonster_desk: indicating "allow/deny" status 17:50 IOMonster_desk: tap on an app, and the right pane gives you more info about the app 17:50 Jack87: IOMonster_desk, youll have to setup two GUIs in that case one for mojo as well 17:50 IOMonster_desk: and possibly a list of the last commands that app ran 17:50 IOMonster_desk: Jack87: yep 17:50 IOMonster_desk: since i dont' know mojo (yet) it'll come second 17:51 rwhitby: or in parallel by someone else 17:51 IOMonster_desk: exactly 17:51 Jack87: it shouldnt be too bad oprolly just be devided into scences rather than panels 17:51 rwhitby: IOMonster_desk: that design will translate well to a phone app 17:52 rwhitby: front scene is list of apps in a scroller, tap on an app to get the details scene 17:52 IOMonster_desk: rwhitby: yep, that was what i was thinking 17:52 IOMonster_desk: basically, every time our app is asked to grant permissions, we'll store that app's name in our database 17:53 IOMonster_desk: er, if it doesn't exist already 17:53 IOMonster_desk: flow is as follows: 1) check if app is on allow/deny list 17:53 IOMonster_desk: 2) if on allow list, allow 17:53 IOMonster_desk: 3) if on deny list deny 17:53 IOMonster_desk: 4) if neither, store app name and present user with dialogue box 17:53 Jack87: how will the apps be identified? 17:53 IOMonster_desk: i'm thinking by name 17:54 IOMonster_desk: i think that's the only way we can 17:54 Jack87: hum multiple apps can have same name at least in launcher 17:54 IOMonster_desk: really? 17:54 IOMonster_desk: that's a bummer 17:54 rwhitby: need to do name, and appid in details 17:54 Jack87: rwhitby, whtats the technical term app id?> 17:54 Jack87: yup 17:54 IOMonster_desk: ah yep thats what i meant 17:54 Jack87: ah ok cool 17:54 IOMonster_desk: i didn't mean like "IORemote", more like com.thecubed.ioremote 17:55 rwhitby: appid is the unique key for the database