1
|
|
|
import click |
2
|
|
|
from circuits import Manager, Debugger |
3
|
|
|
|
4
|
|
|
from isomer.client import IsomerClient |
5
|
|
|
from isomer.logger import isolog, set_color |
6
|
|
|
from isomer.tool import ask_password |
7
|
|
|
|
8
|
|
|
|
9
|
|
|
def log(*args, **kwargs): |
10
|
|
|
"""Log as emitter 'ISOCLIENT'""" |
11
|
|
|
isolog(*args, **kwargs, emitter="ISOCLIENT") |
12
|
|
|
|
13
|
|
|
|
14
|
|
|
@click.command() |
15
|
|
|
@click.option("--protocol", help="Define protocol for server (ws/wss)", |
16
|
|
|
type=str, default='wss') |
17
|
|
|
@click.option("--port", "-p", help="Define port for server", type=int, |
18
|
|
|
default=443) |
19
|
|
|
@click.option("--host", "-h", help="Define hostname for server", type=str, |
20
|
|
|
default='0.0.0.0') |
21
|
|
|
@click.option("-u", "--username", help="Specify username", type=str, |
22
|
|
|
default='anonymous') |
23
|
|
|
@click.option("-p", "--password", help="Specify password", type=str, |
24
|
|
|
default='') |
25
|
|
|
@click.option("--url", help="Specify alternate url", default="websocket", type=str) |
26
|
|
|
@click.option("--debug", help="Start debugger", is_flag=True, |
27
|
|
|
default=False) |
28
|
|
|
def main(**kwargs): |
29
|
|
|
"""Client CLI utility""" |
30
|
|
|
|
31
|
|
|
set_color() |
32
|
|
|
|
33
|
|
|
user = kwargs.get('username') |
34
|
|
|
if user != 'anonymous' and kwargs.get('password') == '': |
35
|
|
|
kwargs['password'] = ask_password() |
36
|
|
|
|
37
|
|
|
log(kwargs, pretty=True) |
38
|
|
|
|
39
|
|
|
manager = Manager() |
40
|
|
|
if kwargs.get('debug'): |
41
|
|
|
debugger = Debugger().register(manager) |
42
|
|
|
client = IsomerClient(**kwargs).register(manager) |
43
|
|
|
|
44
|
|
|
manager.run() |
45
|
|
|
|
46
|
|
|
|
47
|
|
|
if __name__ == '__main__': |
48
|
|
|
main() |
49
|
|
|
|