def execute(self, user, password, new_email): session = Session() if user.account.password == password: account = user.account account.email = new_email session.commit() self.service.msg(user, '\x02{}\x02 계정의 이메일이 \x02{}\x02 로 변경되었습니다.', user.account.name.name, new_email) else: self.service.msg(user, '\x02{}\x02 계정의 비밀번호와 일치하지 않습니다.', user.account.name.name)
def execute(self, user, name, new_vhost): account = Account.find_by_nick(name) if account is None: self.service.msg(user, '등록되지 않은 계정입니다.') return session = Session() account.vhost = new_vhost session.commit() self.service.writesvsuserline('CHGHOST {} {}', user.uid, account.vhost or user.host) self.service.msg(user, '\x02{}\x02 계정의 가상 호스트가 \x02{}\x02 로 변경되었습니다.', user.account.name.name, new_vhost or '(없음)')
def execute(self, user, name): if name is None: name = user.nick session = Session() nick = Nick.find_by_name(name) if nick is None: self.service.msg(user, '\x02{}\x02 계정에 \x02{}\x02 닉네임이 등록되어 있지 않습니다.', user.account.name.name, name) elif user.account.name is nick: self.service.msg(user, '\x02{}\x02 닉네임이 해당 계정의 기본 닉네임으로 지정되어 있어 제거할 수 없습니다. 기본 닉네임을 수정해주세요.', name) else: account = user.account account.aliases.remove(nick) session.delete(nick) session.commit() self.service.msg(user, '\x02{}\x02 계정에서 \x02{}\x02 닉네임을 제거했습니다.', user.account.name.name, name)
def execute(self, user): session = Session() if len(user.account.aliases) >= 5: self.service.msg(user, '\x02{}\x02 계정에 등록할 수 있는 닉네임 제한을 초과했습니다 (5개).', user.account.name.name) return if Nick.find_by_name(user.nick): self.service.msg(user, '이미 등록되어 있는 닉네임입니다.') return nick = Nick() nick.name = user.nick nick.last_use = datetime.now() account = user.account account.aliases.append(nick) session.commit() self.service.msg(user, '\x02{}\x02 계정에 \x02{}\x02 닉네임을 추가했습니다.', user.account.name.name, nick.name)
def execute(self, user, new_name): session = Session() nick = Nick.find_by_name(new_name) if nick: if nick is user.account.name: self.service.msg(user, '\x02{}\x02 계정의 대표 닉네임이 이미 \x02{}\x02 입니다.', user.account.name.name, new_name) return elif nick in user.account.aliases: old_name = user.account.name.name account = user.account account.aliases.append(user.account.name) account.aliases.remove(nick) account.name = nick session.commit() user.metadata['accountname'] = user.account.name.name self.service.writeserverline('METADATA {} accountname :{}', user.uid, user.account.name.name) self.service.msg(user, '\x02{}\x02 계정의 대표 닉네임이 \x02{}\x02 로 변경되었습니다.', old_name, new_name) return self.service.msg(user, '\x02{}\x02 계정에 \x02{}\x02 닉네임이 존재하지 않습니다. \x02/msg {} 그룹\x02 명령을 이용해 해당 닉네임을 계정에 추가해보세요.', user.account.name.name, new_name, self.service.name)
def run(self, user, param): if (self.permission is Permission.LOGIN_REQUIRED) and ('accountname' not in user.metadata): self.service.msg(user, '로그인되어 있지 않습니다. \x02/msg {} 로그인\x02 명령을 이용해 로그인해주세요.', self.service.name) elif (self.permission is Permission.OPERATOR) and (not user.is_operator): self.service.msg(user, '권한이 없습니다. 오퍼레이터 인증을 해 주세요.') else: r = re.compile(r'^{}$'.format(self.regex)) m = r.match(param) if m: try: yield from self.execute(user, **m.groupdict()) except Exception as ex: ty, exc, tb = sys.exc_info() session = Session() session.rollback() self.service.msg(user, '\x02{}\x02 명령을 처리하는 도중 문제가 발생했습니다. 잠시 후 다시 한번 시도해주세요.', self.name) self.service.writesvsuserline('PRIVMSG {} :ERROR! {} {}', settings.admin_channel, ty, exc) raise ex else: self.service.msg(user, '사용법이 올바르지 않습니다. \x02/msg {} 도움말 {}\x02 를 입력해보세요.', self.service.name, self.name)
def execute(self, user, email, password): session = Session() if Nick.find_by_name(user.nick): self.service.msg(user, '해당 닉네임 \x02{}\x02 은 이미 오징어 IRC 네트워크에 등록되어 있습니다.', user.nick) return nick = Nick() nick.name = user.nick nick.last_use = datetime.now() account = Account() account.email = email account.name = nick account.password = password account.last_login = datetime.now() session.add(account) session.commit() self.service.msg(user, '해당 닉네임 \x02{}\x02 의 계정 등록이 완료되었습니다. 앞으로 \x02/msg {} 로그인 {}\x02 명령을 통해 로그인할 수 있습니다. 지금 로그인 해보세요.', nick.name, self.service.name, password)
def execute(self, user, name, password): if user.account is not None: self.service.msg(user, '이미 \x02{}\x02 계정으로 로그인되어 있습니다.', user.account.name.name) return if name is None: name = user.nick session = Session() nick = Nick.find_by_name(name) if nick: account = nick.account or nick.account_alias if account.password == password: nick.last_use = datetime.now() account.last_login = datetime.now() session.commit() self.service.msg(user, '환영합니다! \x02{}\x02 계정으로 로그인되었습니다.', account.name.name) self.service.writeserverline('METADATA {} accountname :{}', user.uid, account.name.name) if account.vhost is not None: self.service.writesvsuserline('CHGHOST {} {}', user.uid, account.vhost) user.metadata['accountname'] = account.name.name return self.service.msg(user, '등록되지 않은 계정이거나 잘못된 비밀번호입니다. 계정명이나 비밀번호를 모두 제대로 입력했는지 다시 한번 확인해주세요.')