/** * @see lib/modules/CommandModule::execute() */ public function execute($user, $target, $message) { // split message $messageEx = explode(' ', $message); if ($target[0] != '#') { $target = $messageEx[1]; unset($messageEx[1]); $messageEx = array_values($messageEx); } if (!$this->bot->isRegistered($target)) { return $this->bot->sendMessage($user->getUuid(), Services::getLanguage()->get($user->languageID, 'command.' . $this->originalName . '.notRegistered')); } $access = $this->bot->getAccess($target, Services::getUserManager()->getUser($user->getUuid())->accountname); if ($access < 500) { return $this->bot->sendMessage($user->getUuid(), Services::getLanguage()->get($user->languageID, 'command.permissionDenied')); } $sql = "SELECT\n\t\t\t\tunregistercode\n\t\t\tFROM\n\t\t\t\tchanserv_channels\n\t\t\tWHERE\n\t\t\t\tchannel = '" . escapeString($target) . "'"; $row = Services::getDB()->getFirstRow($sql); $code = $row['unregistercode']; if (isset($messageEx[1])) { if ($code != trim($messageEx[1])) { return $this->bot->sendMessage($user->getUuid(), Services::getLanguage()->get($user->languageID, 'command.' . $this->originalName . '.codeWrong', $target)); } // TODO: Validate unregistercode $this->bot->unregister($target); $this->bot->sendMessage($user->getUuid(), Services::getLanguage()->get($user->languageID, 'command.' . $this->originalName . '.success', $target)); } else { $this->bot->sendMessage($user->getUuid(), Services::getLanguage()->get($user->languageID, 'command.' . $this->originalName . '.code', $code)); } }
/** * @see lib/modules/CommandModule::execute() */ public function execute($user, $target, $message) { // split message $messageEx = explode(' ', $message); if ($target[0] != '#') { $target = $messageEx[1]; unset($messageEx[1]); $messageEx = array_values($messageEx); } $access = $this->bot->getAccess($target, Services::getUserManager()->getUser($user->getUuid())->accountname); if ($access < $this->bot->getNeededAccess($target, $this->originalName)) { return $this->bot->sendMessage($user->getUuid(), Services::getLanguage()->get($user->languageID, 'command.permissionDenied')); } if (count($messageEx) == 1) { $sql = "SELECT\n\t\t\t\t\t*\n\t\t\t\tFROM\n\t\t\t\t\tchanserv_channel_accessLevel\n\t\t\t\tWHERE\n\t\t\t\t\tchannel = '" . escapeString($target) . "'\n\t\t\t\tORDER BY \n\t\t\t\t\taccessLevel DESC"; $result = Services::getDB()->sendQuery($sql); while ($row = Services::getDB()->fetchArray($result)) { $this->bot->sendMessage($user->getUuid(), Services::getLanguage()->get($user->languageID, 'command.' . $this->originalName . '.' . $row['function']) . ': ' . $row['accessLevel']); } } else { if (count($messageEx) == 3) { if ($access < $messageEx[2]) { return $this->bot->sendMessage($user->getUuid(), Services::getLanguage()->get($user->languageID, 'command.' . $this->originalName . '.tooHigh')); } if (!$this->bot->getNeededAccess($target, $messageEx[1])) { return $this->bot->sendMessage($user->getUuid(), Services::getLanguage()->get($user->languageID, 'command.' . $this->originalName . '.unknown')); } $sql = "UPDATE\n\t\t\t\t\t\tchanserv_channel_accessLevel\n\t\t\t\t\tSET\n\t\t\t\t\t\taccessLevel = " . $messageEx[2] . "\n\t\t\t\t\tWHERE\n\t\t\t\t\t\tfunction = '" . escapeString($messageEx[1]) . "'"; Services::getDB()->sendQuery($sql); } else { $this->bot->sendMessage($user->getUuid(), Services::getLanguage()->get($user->languageID, 'command.' . $this->originalName . '.syntaxHint')); } } }
/** * Creates a new instance of LanguageManager */ public function __construct() { $sql = "SELECT\r\n\t\t\t\t\t*\r\n\t\t\t\tFROM\r\n\t\t\t\t\tlanguage"; $result = Services::getDB()->sendQuery($sql); while ($row = Services::getDB()->fetchArray($result)) { $this->availableLanguages[] = $row; $this->items[intval($row['languageID'])] = array(); } $sql = "SELECT\r\n\t\t\t\t\t*\r\n\t\t\t\tFROM\r\n\t\t\t\t\tlanguage_item"; $result = Services::getDB()->sendQuery($sql); while ($row = Services::getDB()->fetchArray($result)) { $this->items[intval($row['languageID'])][$row['name']] = $row['value']; } }
/** * @see lib/modules/CommandModule::execute() */ public function execute($user, $target, $message) { // split message $messageEx = explode(' ', $message); if ($target[0] != '#') { $target = $messageEx[1]; unset($messageEx[1]); $messageEx = array_values($messageEx); } if (count($messageEx) == 1) { $sql = "SELECT\n\t\t\t\t\t*\n\t\t\t\tFROM\n\t\t\t\t\tchanserv_channels c\n\t\t\t\t\tLEFT JOIN\n\t\t\t\t\t\tauthserv_users a\n\t\t\t\t\t\tON\n\t\t\t\t\t\t\tc.registrar = a.userID\n\t\t\t\tWHERE\n\t\t\t\t\tchannel = '" . escapeString($target) . "'"; $row = Services::getDB()->getFirstRow($sql); $this->bot->sendMessage($user->getUuid(), 'Time: ' . date('d.m.Y H:i:s', $row['time'])); $this->bot->sendMessage($user->getUuid(), 'Registrar: ' . $row['accountname']); } }
/** * @see lib/modules/CommandModule::execute() */ public function execute($user, $target, $message) { // split message $messageEx = explode(' ', $message); if ($target[0] != '#') { $target = $messageEx[1]; unset($messageEx[1]); $messageEx = array_values($messageEx); } $access = $this->bot->getAccess($target, Services::getUserManager()->getUser($user->getUuid())->accountname); if ($access < $this->bot->getNeededAccess($target, 'access')) { return $this->bot->sendMessage($user->getUuid(), Services::getLanguage()->get($user->languageID, 'command.permissionDenied')); } if (count($messageEx) == 3) { if ($messageEx[2] >= $access) { return $this->bot->sendMessage($user->getUuid(), Services::getLanguage()->get($user->languageID, 'command.' . $this->originalName . '.tooHigh')); } else { if ($messageEx[2] > 500) { return $this->bot->sendMessage($user->getUuid(), Services::getLanguage()->get($user->languageID, 'command.' . $this->originalName . '.tooHigh')); } } if ($access <= $this->bot->getAccess($target, Services::getUserManager()->getUserByNick($messageEx[1])->accountname)) { return $this->bot->sendMessage($user->getUuid(), Services::getLanguage()->get($user->languageID, 'command.permissionDenied')); } $authServ = Services::getModuleManager()->lookupModule('AuthServ'); $userID = call_user_func(array($authServ, 'getUserID'), $messageEx[1]); if (!$userID) { return $this->bot->sendMessage($user->getUuid(), Services::getLanguage()->get($user->languageID, 'command.invalidUser')); } if ($messageEx[0] < 1) { $sql = "DELETE FROM chanserv_channels_to_users WHERE channel = '" . escapeString($target) . "' AND userID = " . $userID; } else { $sql = "INSERT INTO chanserv_channels_to_users (channel, userID, accessLevel)\n\t\t\t\t\tVALUES ('" . escapeString($target) . "', " . $userID . ", " . intval($messageEx[2]) . ")\n\t\t\t\t\tON DUPLICATE KEY UPDATE accessLevel = VALUES(accessLevel)"; } Services::getDB()->sendQuery($sql); $this->bot->sendMessage($user->getUuid(), Services::getLanguage()->get($user->languageID, 'command.' . $this->originalName . '.success')); } else { $this->bot->sendMessage($user->getUuid(), Services::getLanguage()->get($user->languageID, 'command.' . $this->originalName . '.syntaxHint')); } }
/** * @see lib/modules/CommandModule::execute() */ public function execute($user, $target, $message) { // split message $messageEx = explode(' ', $message); if ($target[0] != '#') { $target = $messageEx[1]; unset($messageEx[1]); $messageEx = array_values($messageEx); } $access = $this->bot->getAccess($target, Services::getUserManager()->getUser($user->getUuid())->accountname); if ($access < $this->bot->getNeededAccess($target, 'access')) { return $this->bot->sendMessage($user->getUuid(), Services::getLanguage()->get($user->languageID, 'command.permissionDenied')); } if (count($messageEx) == 1) { $sql = "SELECT\n\t\t\t\t\tc.*,\n\t\t\t\t\ta.accountname\n\t\t\t\tFROM\n\t\t\t\t\tchanserv_channels_to_users c\n\t\t\t\t\tLEFT JOIN\n\t\t\t\t\t\tauthserv_users a\n\t\t\t\t\t\tON c.userID = a.userID\n\t\t\t\tWHERE\n\t\t\t\t\tchannel = '" . escapeString($target) . "'\n\t\t\t\tORDER BY \n\t\t\t\t\tc.accessLevel DESC"; $result = Services::getDB()->sendQuery($sql); while ($row = Services::getDB()->fetchArray($result)) { $this->bot->sendMessage($user->getUuid(), $row['accountname'] . ': ' . $row['accessLevel']); } } else { $this->bot->sendMessage($user->getUuid(), Services::getLanguage()->get($user->languageID, 'command.' . $this->originalName . '.syntaxHint')); } }
/** * @see lib/modules/CommandModule::execute() */ public function execute($user, $target, $message) { // split message $messageEx = explode(' ', $message); if (count($messageEx) == 2) { $password = $messageEx[1]; if (!$this->bot->isAuthed($user->getUuid())) { return $this->bot->sendMessage($user->getUuid(), Services::getLanguage()->get($user->languageID, 'command.notAuthed')); } $accountname = Services::getUserManager()->getUser($user->getUuid())->accountname; if (!$this->bot->checkCredentials($accountname, $password)) { return $this->bot->sendMessage($user->getUuid(), Services::getLanguage()->get($user->languageID, 'command.auth.invalidCredentials')); } $userID = $this->bot->getUserID($accountname); $this->bot->delete($accountname); // TODO: Kill user to log him out $sql = "DELETE FROM chanserv_channels_to_users WHERE userID = " . $userID; Services::getDB()->sendQuery($sql); $this->bot->sendMessage($user->getUuid(), Services::getLanguage()->get($user->languageID, 'command.' . $this->originalName . '.success')); } else { // send syntax hint $this->bot->sendMessage($user->getUuid(), Services::getLanguage()->get($user->languageID, 'command.' . $this->originalName . '.syntaxHint')); } }
/** * Returns the access level of $accountname * * @param string $accountname * @return integer */ public static function getAccessLevel($accountname) { $sql = "SELECT\n\t\t\t\t\taccessLevel\n\t\t\t\tFROM\n\t\t\t\t\tauthserv_users\n\t\t\t\tWHERE\n\t\t\t\t\taccountname = '" . escapeString($accountname) . "'"; $row = Services::getDB()->getFirstRow($sql); // workaround ... if (!Services::getDB()->getNumRows()) { return 0; } return intval($row['accessLevel']); }
/** * Checks whether the given channel is registered * * @param string $channel * @return boolean */ public function isRegistered($channel) { $sql = "SELECT\r\n\t\t\t\tcount(*) as count\r\n\t\t\tFROM\r\n\t\t\t\tchanserv_channels\r\n\t\t\tWHERE\r\n\t\t\t\tchannel = '" . escapeString($channel) . "'"; $row = Services::getDB()->getFirstRow($sql); return $row['count'] > 0; }
/** * Binds a command to $botAddress * @param string $botAddress * @param string $moduleAddress * @param string $commandName * @param boolean $appearInHelp * @param boolean $fromDatabase */ public function bindCommand($botAddress, $moduleAddress, $commandName, $appearInHelp = true, $fromDatabase = false) { // validate if (!$this->moduleLoaded($moduleAddress)) { throw new ModuleException("Unknown module at address '" . $moduleAddress . "'"); } if (!$this->moduleLoaded($botAddress)) { throw new ModuleException("Unknown module at address '" . $botAddress . "'"); } if ($this->moduleInformation[$botAddress]['type'] != 'Bot') { throw new ModuleException("Commands can only bound to bots"); } // bind $this->runningBots[$botAddress]->registerCommand(new $moduleAddress($this->runningBots[$botAddress], strtoupper($commandName), $appearInHelp)); // write to db if (!$fromDatabase) { $sql = "INSERT INTO\r\n\t\t\t\t\t\tmodule_instance_command (address, commandName, appearInHelp, parentAddress)\r\n\t\t\t\t\tVALUES\r\n\t\t\t\t\t\t('" . escapeString($moduleAddress) . "', '" . escapeString(strtoupper($commandName)) . "', " . ($appearInHelp ? 1 : 0) . ", '" . escapeString($botAddress) . "')"; Services::getDB()->sendQuery($sql); } }
/** * @see Database::escapeString() * @param string $str */ function escapeString($str) { return Services::getDB()->escapeString($str); }