def onConnect(cn): try: same = dbmanager.query(IpToNick).filter(IpToNick.ip==sbserver.playerIpLong(cn)).filter(IpToNick.nick==sbserver.playerName(cn)).all() if len(same) > 0: return except NoResultFound: pass ent = IpToNick(sbserver.playerIpLong(cn), sbserver.playerName(cn)) session.add(ent) session.commit()
def onConnect(cn): try: same = dbmanager.query(IpToNick).filter( IpToNick.ip == sbserver.playerIpLong(cn)).filter( IpToNick.nick == sbserver.playerName(cn)).all() if len(same) > 0: return except NoResultFound: pass ent = IpToNick(sbserver.playerIpLong(cn), sbserver.playerName(cn)) session.add(ent) session.commit()
def namesCmd(cn, args): '''@description Display names used by client @usage cn @public''' if master_required and not isAtLeastMaster(cn): insufficientPermissions(cn) return if args == '': raise UsageError() return try: tcn = int(args) names = dbmanager.query(IpToNick).filter(IpToNick.ip==sbserver.playerIpLong(tcn)).all() if len(names) == 0: sbserver.playerMessage(cn, info('No names found')) return except NoResultFound: sbserver.playerMessage(cn, info('No names found')) return except ValueError: sbserver.playerMessage(cn, error('Invalid cn')) return namestr = 'Other known names: ' for name in names: namestr += name.nick + ' ' sbserver.playerMessage(cn, info(namestr))
def namesCmd(cn, args): '''@description Display names used by client @usage cn @public''' if master_required and not isAtLeastMaster(cn): insufficientPermissions(cn) return if args == '': raise UsageError() return try: tcn = int(args) names = dbmanager.query(IpToNick).filter( IpToNick.ip == sbserver.playerIpLong(tcn)).all() if len(names) == 0: sbserver.playerMessage(cn, info('No names found')) return except NoResultFound: sbserver.playerMessage(cn, info('No names found')) return except ValueError: sbserver.playerMessage(cn, error('Invalid cn')) return namestr = 'Other known names: ' for name in names: namestr += name.nick + ' ' sbserver.playerMessage(cn, info(namestr))
def ban(cn, seconds, reason, banner_cn): ip = sbserver.playerIpLong(cn) expiration = time.time() + seconds nick = sbserver.playerName(cn) if banner_cn != -1: banner_ip = sbserver.playerIpLong(banner_cn) banner_nick = sbserver.playerName(banner_cn) else: banner_ip = 0 banner_nick = '' newban = Ban(ip, expiration, reason, nick, banner_ip, banner_nick, time.time()) session.add(newban) session.commit() addTimer(200, sbserver.playerKick, (cn,)) logging.info('Player %s (%s) banned for %s by %s (%s)', nick, ipLongToString(ip), reason, banner_nick, ipLongToString(banner_ip)) sbserver.message(info(ban_message.substitute(colordict, name=nick, seconds=seconds, reason=reason)))
def checkConnectBanned(cn): checklist=( sbserver.playerName(cn), ipLongToString(sbserver.playerIpLong(cn)) ) matches=bandatabase.search(checklist) if len(matches)>0: timeperiod="indefinatelly" reason=matches[0][2] if reason== "": reason="none" serverNotice("%s is banned %s, reason: %s" % (sbserver.playerName(cn),matches[0][1],reason)) return True return False
def cndetails(cn): return sbserver.playerName(cn)+" (cn"+str(cn)+"/"+ipLongToString(sbserver.playerIpLong(cn))+")"
def announce(cn): sbserver.message(sbtools.orange(sbserver.playerName(cn) + " is connected from " + str(getCountry(sbserver.playerIpLong(cn)))))
def noticePlayerConnect(cn): ip = "(%s)" % (ipLongToString(sbserver.playerIpLong(cn))) normal = "Connected: %s(%d)" % (formatCaller(("ingame",cn)), cn) serverNotice(normal + ip)
def ipLong(self): '''Ip of client as long''' return sbserver.playerIpLong(self.cn)