Last active
June 15, 2016 04:12
-
-
Save sboily/fdcd1f1922a62b443677fb2cb097f200 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/python | |
from xivo_auth_client import Client as Auth | |
from xivo_confd_client import Client as Confd | |
import sys | |
# Please add a web service user with acl confd.# | |
# To use ./add-user Sylvain Boily 8010 | |
username = "change_it" # Fill with your username | |
password = "change_it" # Fill with your password | |
################ Do no modify ############## | |
firstname = sys.argv[1] | |
lastname = sys.argv[2] | |
extension = sys.argv[3] | |
data = {} | |
error = None | |
def get_token(username, password): | |
token_data = auth.token.new('xivo_service', expiration=60) | |
return token_data['token'] | |
def create_user(user): | |
try: | |
u = confd.users.create(user) | |
return u['uuid'] | |
except Exception as e: | |
print 'There is an error to create user :', e | |
delete_on_error(data) | |
def create_extension(extension): | |
try: | |
e = confd.extensions.create(extension) | |
return e['id'] | |
except Exception as e: | |
print 'There is an error to create extension :', e | |
delete_on_error(data) | |
def create_line(line): | |
try: | |
l = confd.lines.create(extension) | |
return l['id'] | |
except Exception as e: | |
print 'There is an error to create extension :', e | |
delete_on_error(data) | |
def create_endpoint_sip(endpoint): | |
try: | |
sip = confd.endpoints_sip.create(endpoint) | |
return sip['id'] | |
except Exception as e: | |
print 'There is an error to create endpoint SIP :', e | |
delete_on_error(data) | |
def associate_user(data): | |
confd.endpoints_sip.relations(data['id_endpoint_sip']).associate_line(data['id_line']) | |
confd.users.relations(data['uuid']).add_line(data['id_line']) | |
confd.extensions.relations(data['id_exten']).add_line(data['id_line']) | |
def delete_on_error(data): | |
global error | |
error = 1 | |
try: | |
confd.users.delete(data['uuid']) | |
confd.extensions.delete(data['id_exten']) | |
confd.line.delete(data['id_line']) | |
confd.endpoints_sip.delete(data['id_endpoint_sip']) | |
except: | |
pass | |
auth = Auth('127.0.0.1', username=username, password=password, verify_certificate=False) | |
token = get_token(username, password) | |
confd = Confd('localhost', verify_certificate=False, token=token) | |
user = { | |
'firstname': firstname, | |
'lastname': lastname | |
} | |
data['uuid'] = create_user(user) | |
extension = { | |
'context': 'default', | |
'exten' : extension | |
} | |
data['id_exten'] = create_extension(extension) | |
line = { | |
'context': 'default' | |
} | |
data['id_line'] = create_line(line) | |
endpoint = { | |
'type': 'friend', | |
'host': 'dynamic' | |
} | |
data['id_endpoint_sip'] = create_endpoint_sip(endpoint) | |
if data and error != 1: | |
associate_user(data) | |
print data | |
auth.token.revoke(token) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment