def reindex(self): """ pass usernames/store-ids given on command-line to running search process """ store_guids = [] if not (self.options.users or self.options.stores): print("no user/store specified (use -u/-S)", file=sys.stderr) sys.exit(1) for username in self.options.users: user = self.server.get_user(username) if not user: print("no such user: %s" % username, file=sys.stderr) sys.exit(1) elif user.store: store_guids.append(user.store.guid) for store_guid in self.options.stores: store = self.server.get_store(store_guid) if not store: print("no such store: %s" % store_guid, file=sys.stderr) sys.exit(1) else: store_guids.append(store.guid) for store_guid in store_guids: with closing( kopano.client_socket( self.config['server_bind_name'], ssl_cert=self.config['ssl_certificate_file'])) as s: s.sendall((u'REINDEX %s\r\n' % store_guid).encode('ascii')) s.recv(1024)
def do_cmd(self, cmd): try: with closing(kopano.client_socket(self.config['server_bind_name'], ssl_cert=self.config['ssl_certificate_file'])) as s: s.sendall(cmd.encode()) m = s.makefile() line = m.readline() if not line.startswith('OK'): print('kopano-msr returned an error. please check log.', file=sys.stderr) sys.exit(1) for line in m: print(line.rstrip()) except OSError as e: print('could not connect to msr socket (%s)' % e) sys.exit(1)
def cmd_list(self): with closing( kopano.client_socket( self.config['server_bind_name'], ssl_cert=self.config['ssl_certificate_file'])) as s: s.sendall(('LIST\r\n').encode()) m = s.makefile() data = m.readline() if not data.startswith('OK:'): print('kopano-msr returned an error. please check log.', file=sys.stderr) sys.exit(1) for word in data.split()[1:]: print(word.replace(':', ' '))
def reindex(self): """ pass usernames/store-ids given on command-line to running search process """ for key in self.options.reindex: # usernames supported for convenience/backward compatibility store = self.server.get_store(key) if not store: user = self.server.get_user(key) if user: store = user.store if store: # XXX check all keys first with closing(kopano.client_socket(self.config['server_bind_name'], ssl_cert=self.config['ssl_certificate_file'])) as s: s.sendall('REINDEX %s\r\n' % store.guid) s.recv(1024) else: print("no such user/store: %s" % key) sys.exit(1)
def cmd_remove(self, options): if len(options.users) != 1: print("please specify single user to remove", file=sys.stderr) sys.exit(1) username = options.users[0] with closing( kopano.client_socket( self.config['server_bind_name'], ssl_cert=self.config['ssl_certificate_file'])) as s: s.sendall(('REMOVE %s\r\n' % username).encode()) m = s.makefile() data = m.readline() if not data.startswith('OK'): print('kopano-msr returned an error. please check log.', file=sys.stderr) sys.exit(1)
def cmd_add(self, options): # TODO merge common if len(options.users) != 1: print("please specify single user to add", file=sys.stderr) sys.exit(1) username = options.users[0] targetname = options.target for name in (username, targetname): if not self.server.get_user(name): print("no such user: %s" % name, file=sys.stderr) sys.exit(1) with closing( kopano.client_socket( self.config['server_bind_name'], ssl_cert=self.config['ssl_certificate_file'])) as s: s.sendall(('ADD %s %s\r\n' % (username, targetname)).encode()) m = s.makefile() data = m.readline() if not data.startswith('OK'): print('kopano-msr returned an error. please check log.', file=sys.stderr) sys.exit(1)