#!/usr/bin/python # -*- coding: utf-8 -*- import httplib, urllib class config: ovh_host = "ws.ovh.com" def get_webdav_info(login, password): ws_info={} null = None # Log into CloudNAS with nasLogin and retrieve a session ID print 'Logging into CloudNAS to retrieve a session ID...' params = 'session=¶ms={"email":"%s","password":"%s"}' % (urllib.quote(login), urllib.quote(password)) headers = {"Content-type": 'application/x-www-form-urlencoded', "User-Agent": 'hubiC/0.4.8 beta (Windows NT 6.1; fr_FR)'} conn = httplib.HTTPSConnection(config.ovh_host) conn.request("POST", "/cloudnas/r3/ws.dispatcher/nasLogin", params, headers) resp = conn.getresponse() s = resp.status r = resp.reason data = resp.read() try: d = eval(data) sid = d['answer']['id'] except KeyError: return ws_info finally: conn.close() print '# SID:', sid # POST on getNas using session ID to get URL print 'Retrieving user-specific URL for WebDAV...' params = 'session=%s' % sid conn = httplib.HTTPSConnection(config.ovh_host) conn.request("POST", "/cloudnas/r3/ws.dispatcher/getNas", params, headers) resp = conn.getresponse() s = resp.status r = resp.reason data = resp.read() try: d = eval(data) ws_info['url'] = d['answer'][0]['url'] except KeyError : return ws_info finally: conn.close() print '# URL:', ws_info['url'] # POST on getCredentials using session ID to get credentials print 'Retrieving user-specific credentials for WebDAV...' params = 'session=%s' % sid conn = httplib.HTTPSConnection(config.ovh_host) conn.request("POST", "/cloudnas/r3/ws.dispatcher/getCredentials", params, headers) resp = conn.getresponse() s = resp.status r = resp.reason data = resp.read() try: d = eval(data) ws_info['login'] = d['answer']['username'] ws_info['passwd'] = d['answer']['secret'] except KeyError: return ws_info finally: conn.close() print '# Ok' return ws_info if __name__ == '__main__': import sys import getpass import os.path login = raw_input("Login: ") password = getpass.getpass() ws_info = get_webdav_info(login, password) print ''' URL: %(url)s login: %(login)s password: %(passwd)s ''' % ws_info