Commit Graph
46 Commits
Author SHA1 Message Date
Eric Rasche ffd3b10d5e Added CORS required parameter to conf 2014-10-18 18:38:04 -04:00
Eric Rasche 64bff1a7f5 Fixes #15 2014-10-18 18:38:04 -04:00
Eric Rasche c72cc47fdb Finished work on spinning
- Removed a statically set port during testing
 - Made variables local so we can be sure they aren't being mis-used
 - Removed sleep
 - New parameters needed in notebook load call
 - Added main div to use for images/etc. Probably not necessary.
2014-10-18 18:38:04 -04:00
Eric Rasche fb9cf86ceb JS refactor 2014-10-18 18:38:04 -04:00
Eric Rasche 43304a2325 Modified error message to be more human-friendly
Many people will be intially overwhelmed by the stack trace they see within galaxy in
the even of a missing API key. Hopefully, hopefully, they'll be able to read the bold
portion at the bottom with instructions on generating one. It's mostly a measure to
decrease support tickets/requests
2014-10-18 18:38:04 -04:00
Eric Rasche d32e61eca0 Moved docker delay to conf variable
Users may want to modify this variable, so I've moved it to the conf file.
2014-10-18 18:38:04 -04:00
John Chilton 048834a4a2 Use get_api_key() to fetch Galaxy API key...
This is a more appropriate abstraction layer to work at and provides the added benefit of auto-generating the key if it doesn't exist.
2014-10-18 18:38:04 -04:00
John Chilton 2cd37cc658 Use plugin_path to improve path logic...
Added in Galaxy commit https://bitbucket.org/galaxy/galaxy-central/commits/ddc9a669d53aa259d38efc882c890503444daaf5. Added it to Galaxy cleanup the code and this is the result - oh well :) - it is at least more techically correct.
2014-10-18 18:38:04 -04:00
Eric Rasche b4d641b013 Added documentation for each error message, fixed typo
Wiki pages were added for each of the error messages with a Cause and Solution.
This should be helpful to end users deploying our software
2014-10-18 18:38:04 -04:00
John Chilton ea6bc7be5d Bugfix: Do not hard code 'main' as Galaxy server name.
Determine correct server name corresponding to at least a web request at runtime.
2014-10-18 18:38:04 -04:00
Eric Rasche f8ad738b90 Fixes #7 2014-10-18 18:38:04 -04:00
Eric Rasche 88ce41f0de Fixes #6 2014-10-18 18:38:04 -04:00
Eric Rasche de2c843c06 Bumped timeout
I've found in opera that copy+paste doesn't work, so I have to drag and drop. Additionally, we need
the user to have time to read and comprehend what we're telling them before this notification
disappears forever.

Despite the fact that this is technically a configuration bug on the sys admin's part, for a future
release, we should switch to a different type of notification, probably like a banner with an X that
they can close once they're done reading it. That way we know it'll be there as long as they need it
to be.
2014-10-18 18:38:04 -04:00
Bjoern Gruening 58061f6504 replace toastr.css with the Galaxy one 2014-10-18 18:38:04 -04:00
Bjoern Gruening 75441ad142 Release sugar! Hope you like it @erasche. 2014-10-18 18:38:04 -04:00
Bjoern Gruening 4eaba38f2e =?UTF-8?q?In=20FF=20the=20<object>=20attriute=20needs=20to=20be?= =?UTF-8?q?=20from=20type=20'data'=20and=20not=20'src'.=0AChrome=20seems?= =?UTF-8?q?=20to=20be=20happy=20with=20'src'.=20This=20commit=20changes=20?= =?UTF-8?q?it=20back=20to=20'data'.?= 2014-10-18 18:38:04 -04:00
Eric Rasche 0e8289d47f Better failover in all situations
Previously in a specific situation (apache_urls = False and password_auth = True), we saw that users
would see a blank screen rather than an informative error message. This should not happen under any
circumstances.

This has been replaced with logic to handle the failure modes in as sane of a way as possible. If
the above situation is true, we provide the users with their random password and a login box. If any
other bad situation occurs, we pass the error message along to them.

Additionally a new variable "password_auth" has been introduced, describing whether or not passwords
should be used to authenticate users (mostly auto-magically) against their notebooks.

Because we have control over this docker image, it is possible we can handle that specific case
above by convincing ipython to set a content-origin header allowing the galaxy host to make the JS
login request.
2014-10-18 18:38:04 -04:00
Eric Rasche ef1c20f8d0 Replaced iframe with embed for aesthetics
Now whenever a notebook is loaded we first do a POST to the notebook login URL with the correct
authentication details. This logs us in and stores a cookie for us. Once this is done, (and we know
we were successful) we add the embed/object elements to the body of the page, which the browser then
loads.
2014-10-18 18:38:04 -04:00
Eric Rasche 3a212cd6c2 Completely working login system 2014-10-18 18:38:04 -04:00
Eric Rasche 760bf70359 Added password protection of the notebook 2014-10-18 18:38:04 -04:00
Bjoern Gruening 0ec0413b3b Adopting the help text in the inital welcome Notebook. 2014-10-18 18:38:04 -04:00
Eric Rasche 4f3052fd2b Extracted template into a template file
It was really awful to have that file maintained with the rest of the source code, now it is
separate.
2014-10-18 18:38:03 -04:00
Eric Rasche 27bbce5610 Extracted configuration file
Currently only a few variables, more can be placed here later.
2014-10-18 18:38:03 -04:00
Eric Rasche c68b15aa04 Todo item completed 2014-10-18 18:38:03 -04:00
Eric Rasche 233db5340f Updated text on on template to refer to button colour 2014-10-18 18:38:03 -04:00
Bjoern Gruening 34f7b7d226 remove trailing slash, better save than sorry 2014-10-18 18:38:03 -04:00
Bjoern Gruening bca45b582e change the port detection to parse the universe_wsgi.ini file 2014-10-18 18:38:03 -04:00
Eric Rasche 9b36dfa3bf Passed port and set URL path for ipython
To allow for server administrators to easily secure IPyNBs, we have to stop serving over ports, and
start serving under a sub-path. This change will require the introduction of apache configuration as
a hard requirement for rewriting URLs properly to the backend.

For a given Port $P, IPyNBs are started, listening on 127.0.0.1:$P/ipython/$P/. These are accessed
through that url within galaxy. For the apache style configuration, we remove the first $P and
simply access notebooks at "127.0.0.1/ipython/$P/" which allows the administrator to apply SSL to
the /ipython/ path, thereby securing the notebooks.
2014-10-18 18:38:03 -04:00
Eric Rasche eeffd1bfe4 Attempted better description 2014-10-18 18:38:03 -04:00
Eric Rasche 9f5809dcf1 =?UTF-8?q?Removed=20save=20function=20and=20added=20docs=20since?= =?UTF-8?q?=20Bj=C3=B6rn=20implemented=20save=20button?= 2014-10-18 18:38:03 -04:00
Eric Rasche a24cfdefca Switch over to requiring IPyNB datatype 2014-10-18 18:38:03 -04:00
Eric Rasche 442f501696 lsof translates port names by default
This commit ensures we always receive numerical ports from lsof, rather than service names as
translated by /etc/services
2014-10-18 18:38:03 -04:00
Bjoern Gruening 217fd81c3c more pythonification 2014-10-18 18:38:03 -04:00
Bjoern Gruening 3a4260a0d5 Try again to fix the netstat filtering and cellect all used ports. 2014-10-18 18:38:03 -04:00
Eric Rasche a2330fa7ce Template updates
A couple things of interest are done with the template:

- HTML header
- Markdown cell with instructions as to read/write data from galaxy
- A HIDDEN javascript function to save to galaxy
- Empty cell for next user command.

The hidden javascript function is done by writing the function as part of the notebook and removing
the input text. This is probably very, very fragile and will not survive a closing+reopening but
it's very pleasant looking to just have a button that saves the notebook to galaxy. It's very
visually unobtrusive and that may be more important for new users than having the full code there.

To be able to interact with that button it is required that ipython trust the notebook. This is done
in an update to the docker startup script.
2014-10-18 18:38:03 -04:00
Eric Rasche bab456fd01 Redirect lsof's stderr to ignored device 2014-10-18 18:38:03 -04:00
Eric Rasche d9a29812cc Found port properly 2014-10-18 18:38:03 -04:00
Eric Rasche 01c0633fd8 Added code to obtain port information from galaxy 2014-10-18 18:38:03 -04:00
Eric Rasche e8c619d01b Changed flow style for easier grepping
See the [PyYAML](http://pyyaml.org/wiki/PyYAMLDocumentation) docs for more information as to flow
style. Essentially it should make sure the `conf.yaml` file is greppable, which may be necessary for
IP address whitelisting.
2014-10-18 18:38:03 -04:00
Eric Rasche 4b64a70906 Added remote_host variable to docker conf
In order to whitelist IPs allowed to connect to notebooks, we need to know who the remote target
connecting is. We can blacklist on IP address only, as we have no way of authenticating them. While
we do have access to other information like cookies, we have no SSL nor way to know what
authentication method the galaxy server will be using.
2014-10-18 18:38:03 -04:00
Eric Rasche 7ae8deb202 Rewrote netstat commands as Popen piped commands
The original version actually failed for me. I am led to believe that all the pipes were being
passed to netstat as it said "I don't understand the option ':'" which came from the cut command.
At the cost of simplicity, this should do what we want properly. Alternatively we could move the
awk/cut/sort into python.
2014-10-18 18:38:03 -04:00
Eric Rasche 93ed4fe859 Working load from existing notebooks in history 2014-10-18 18:38:03 -04:00
Bjoern Gruening 7c02e8ce53 Style fixes 2014-10-18 18:38:03 -04:00
Bjoern Gruening 7ebbb74fc7 Remove copying of datatsets from Galaxy to docker. From now on, docker can fetch data from galaxy on demand. 2014-10-18 18:38:03 -04:00
Bjoern Gruening adfee3ba65 add random port assignment for different docker containers, for multiple users 2014-10-18 18:38:03 -04:00
Bjoern Gruening 7048f38915 restructure repository layout 2014-10-18 18:38:02 -04:00