def add_user(uuid, email, security_type=SECURITY_TYPE_LEGACY, level=0, alter_id=32): channel = grpc.insecure_channel('%s:%s' % (SERVER_ADDRESS, SERVER_PORT)) stub = command_pb2_grpc.HandlerServiceStub(channel) resp = stub.AlterInbound( command_pb2.AlterInboundRequest( tag=INBOUND_TAG, operation=typed_message_pb2.TypedMessage( type=command_pb2._ADDUSEROPERATION.full_name, value=command_pb2.AddUserOperation(user=user_pb2.User( level=level, email=email, account=typed_message_pb2.TypedMessage( type=account_pb2._ACCOUNT.full_name, value=account_pb2.Account( id=uuid, alter_id=alter_id, security_settings=headers_pb2.SecurityConfig( type=security_type)).SerializeToString())) ).SerializeToString()))) print(resp)
def add_user(self, inbound_tag, user_id, email, level=0, alter_id=16): """ 在一个传入连接中添加一个用户(仅支持 VMess) 若email已存在,抛出EmailExistsError异常 若inbound_tag不存在,抛出InboundNotFoundError异常 """ stub = command_pb2_grpc.HandlerServiceStub(self._channel) try: stub.AlterInbound( command_pb2.AlterInboundRequest( tag=inbound_tag, operation=to_typed_message( command_pb2.AddUserOperation(user=user_pb2.User( email=email, level=level, account=to_typed_message( account_pb2.Account(id=user_id, alter_id=alter_id))))))) return user_id except _Rendezvous as e: details = e.details() if details.endswith(f"User {email} already exists."): raise EmailExistsError(details, email) elif details.endswith(f"handler not found: {inbound_tag}"): raise InboundNotFoundError(details, inbound_tag) else: raise V2RayError(details)
def __init__(self, users: list): """ :param users: 包含'email','level','user_id','alter_id'字段的字典 """ super(VMessInbound, self).__init__() self.message = to_typed_message( vmess_inbound_config_pb2.Config(user=[ user_pb2.User(email=u['email'], level=u['level'], account=to_typed_message( account_pb2.Account(id=u['user_id'], alter_id=u['alter_id']))) for u in users ]))