Skip to content

Commit 48f1c66

Browse files
authored
Merge pull request #18 from meeg-cfin/query_tunnel
add access through CFIN VPN tunnel
2 parents 85cedda + fccd87d commit 48f1c66

File tree

1 file changed

+40
-7
lines changed

1 file changed

+40
-7
lines changed

stormdb/access.py

Lines changed: 40 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
from getpass import getuser, getpass
1313
import os
1414
import requests
15+
from requests import ConnectionError
1516
import urllib
1617

1718

@@ -49,15 +50,41 @@ class Query():
4950

5051
def __init__(self, proj_code, stormdblogin='~/.stormdblogin',
5152
username=None, verbose=None):
52-
if not os.path.exists('/projects/' + proj_code):
53-
raise DBError('No such project!')
54-
5553
self.proj_code = proj_code
5654
self._username = username
5755
self._stormdblogin = stormdblogin
58-
self._server = 'http://hyades00.pet.auh.dk/modules/StormDb/extract/'
59-
# self._wget_cmd = 'wget -qO - test ' + self._server
56+
57+
default_server = 'http://hyades00.pet.auh.dk/modules/StormDb/extract/'
58+
try_alt_server = False
59+
try:
60+
get = requests.get(default_server)
61+
except ConnectionError:
62+
try_alt_server = True
63+
else:
64+
if not get.status_code == 200:
65+
try_alt_server = True
66+
else:
67+
self._server = default_server
68+
69+
raise_dberror = False
70+
if try_alt_server:
71+
alt_server = 'http://localhost:10080/modules/StormDb/extract/'
72+
try:
73+
get = requests.get(alt_server)
74+
except ConnectionError:
75+
raise_dberror = True
76+
else:
77+
if not get.status_code == 200:
78+
raise_dberror = True
79+
else:
80+
self._server = alt_server
81+
82+
if raise_dberror:
83+
raise DBError('No access to database server (tried: '
84+
'{0} and\n{1})'.format(default_server, alt_server))
85+
6086
self._get_login_code(username=username, verbose=verbose)
87+
self._check_proj_code()
6188

6289
def _get_login_code(self, username=None, verbose=False):
6390
try:
@@ -99,13 +126,19 @@ def _check_response(self, response, error_str='error'):
99126
'and re-run your query.'
100127
os.chmod(os.path.expanduser(self._stormdblogin), 0o600)
101128
os.remove(os.path.expanduser(self._stormdblogin))
102-
response = msg
103129
self._get_login_code()
130+
elif response.find('The project does not exist') != -1:
131+
msg = 'The project ID/code you used does not exist ' + \
132+
'in the database, please check.'
104133

105-
raise DBError(response)
134+
raise DBError(msg)
106135

107136
return(0)
108137

138+
def _check_proj_code(self, verbose=False):
139+
url = '?' + self._login_code + '&projectCode=' + self.proj_code
140+
_ = self._send_request(url)
141+
109142
def _send_request(self, url, verbose=False):
110143
full_url = self._server + url
111144
if verbose:

0 commit comments

Comments
 (0)