public function run() { Config::changeAllTimestampsToNow(); DataManager::changeAllTimestampsToNow(); $server = Server::getInstance(); $server->notify($this->senderNick, "Database has reloaded all values from RAM"); }
public function run() { if (empty(static::$projects)) { $data = json_decode(file_get_contents(GITLAB_API_URL . "/v" . GITLAB_API_VERSION . "/groups/" . GITLAB_MONITOR_GROUP_ID . "?private_token=" . GITLAB_API_PRIVATE_TOKEN)); foreach ($data->projects as $project) { static::$projects[$project->id] = $project; } } $latestAnnouncedEventDates = DataManager::retrieve("latestAnnouncedEvents"); if (empty($latestAnnouncedEventDates)) { $firstRun = true; } $server = Server::getInstance(); foreach (static::$projects as $project) { $events = json_decode(file_get_contents(GITLAB_API_URL . "/v" . GITLAB_API_VERSION . "/projects/" . $project->id . "/events?private_token=" . GITLAB_API_PRIVATE_TOKEN)); $eventsToAnnounce = array(); foreach ($events as $event) { if ($event->created_at == $latestAnnouncedEventDates[$project->id]) { break; } $eventsToAnnounce[] = $event; } if ($events[0]->created_at) { if ($events[0]->created_at == $latestAnnouncedEventDates[$project->id]) { continue; } $latestAnnouncedEventDates[$project->id] = $events[0]->created_at; } krsort($eventsToAnnounce); // events are given to us newest first by default, we want to // announce from oldest events to newest; hence reverse sorting if (!isset($firstRun)) { // don't announce anything on first run, or there will be spam foreach ($eventsToAnnounce as $event) { switch ($event->target_type) { case "Issue": // TODO break; default: if (isset($event->data->commits) && !empty($event->data->commits)) { foreach ($event->data->commits as $commit) { $message = chr(2) . chr(3) . "9[COMMIT]" . chr(3) . " " . chr(3) . "13[" . $project->name . "]" . chr(3) . " " . chr(3) . "8[" . str_replace("refs/heads/", "", $event->data->ref) . "] " . chr(3) . chr(2) . $commit->author->name . " - " . $commit->message . " " . shortenURL($commit->url); $server->message(GITLAB_ANNOUNCE_CHANNEL, $message); } } } } } } DataManager::store("latestAnnouncedEvents", $latestAnnouncedEventDates); }
public function run() { $harassedNicks = DataManager::retrieve("harassedNicks", "modules\\funstuff\\Harass"); $harassedHosts = DataManager::retrieve("harassedHosts", "modules\\funstuff\\Harass"); if ($harassedNicks) { if (in_array($this->senderNick, $harassedNicks) !== false) { $server = Server::getInstance(); $server->message($this->channel, "Shutup " . $this->senderNick . "! We all hate you."); return true; } } if ($harassedHosts) { $user = UserManager::get($this->senderNick); $host = $user->host; foreach ($harassedHosts as $harassedHost) { if (preg_match($harassedHost, $host)) { $server = Server::getInstance(); $server->message($this->channel, "Shutup " . $this->senderNick . "! We all hate you."); return true; } } } }
/** * Updates the database with data from the script * arrays */ public function updateDatabase() { // Channels $this->query("DELETE FROM channel_users"); $this->query("DELETE FROM channels"); foreach (ChannelManager::$connectedChannels as $channel) { $stmt = $this->pdo->prepare("INSERT INTO channels(name, topic) VALUES(?,?);"); $stmt->execute(array($channel->channelName, $channel->topic)); foreach ($channel->connectedNicks as $connectedNick) { if (isset($channel->privilegedNicks[$connectedNick])) { $stmt = $this->pdo->prepare("INSERT INTO channel_users(nickname, channel_name, privilege) VALUES(?,?,?);"); $stmt->execute(array($connectedNick, $channel->channelName, $channel->privilegedNicks[$connectedNick])); } else { $stmt = $this->pdo->prepare("INSERT INTO channel_users(nickname, channel_name) VALUES(?,?);"); $stmt->execute(array($connectedNick, $channel->channelName)); } } } // Users $this->query("DELETE FROM users"); foreach (UserManager::$trackedUsers as $user) { if ($user->nickname && $user->ident && $user->host && $user->realName) { $stmt = $this->prepare("INSERT INTO users(nickname, ident, host, real_name) VALUES(?,?,?,?);"); $stmt->execute(array($user->nickname, $user->ident, $user->host, $user->realName)); } else { if ($user->nickname && $user->ident && $user->host) { $stmt = $this->prepare("INSERT INTO users(nickname, ident, host) VALUES(?,?,?);"); $stmt->execute(array($user->nickname, $user->ident, $user->host)); } else { if ($user->nickname) { $stmt = $this->prepare("INSERT INTO users(nickname) VALUES(?);"); $stmt->execute(array($user->nickname)); } } } } // Module data // check if we need to update anything currently in the db $stmt = $this->prepare("SELECT * FROM module_data"); $stmt->execute(); $doneTitles = array(); while ($row = $stmt->fetchObject()) { if (DataManager::checkIfDataExistsAndIsNewerThan($row->title, $row->module, $row->last_updated_time)) { $data = DataManager::retrieve($row->title, $row->module); $dbData = serialize($data); $time = DataManager::getLastUpdatedTime($row->title, $row->module); $stmt = $this->prepare("DELETE FROM module_data WHERE title=?;"); $stmt->execute(array($row->title)); $stmt = $this->prepare("INSERT INTO module_data(title, data, module, last_updated_time) VALUES(?,?,?,?);"); $stmt->execute(array($row->title, $dbData, $row->module, $time)); } $doneTitles[$row->title] = true; } // do everything else $allModules = DataManager::getAllData(); foreach ($allModules as $module => $titles) { foreach ($titles as $title => $types) { if ($doneTitles[$title]) { continue; } $dbData = serialize($types["data"]); $stmt = $this->prepare("DELETE FROM module_data WHERE title=?;"); $stmt->execute(array($title)); $stmt = $this->prepare("INSERT INTO module_data(title, data, module, last_updated_time) VALUES(?,?,?,?);"); $stmt->execute(array($title, $dbData, $module, $types["lastUpdated"])); } } // Config // check if we need to update anything currently in the db $stmt = $this->prepare("SELECT * FROM config"); $stmt->execute(); $doneKeys = array(); while ($row = $stmt->fetchObject()) { if (Config::checkIfValueExistsAndIsNewerThan($row->name, $row->last_updated_time)) { $data = Config::getValue($row->name); $dbData = serialize($data); $time = Config::getLastUpdatedTime($row->name); $stmt = $this->prepare("DELETE FROM config WHERE name=?;"); $stmt->execute(array($row->name)); $stmt = $this->prepare("INSERT INTO config(name, data, last_updated_time) VALUES(?,?,?);"); $stmt->execute(array($row->name, $dbData, $time)); } $doneKeys[$row->name] = true; } // do everything else $allKeys = Config::getAllValues(); foreach ($allKeys as $name => $types) { if ($doneKeys[$name]) { continue; } $dbData = serialize($types["data"]); $stmt = $this->prepare("DELETE FROM config WHERE name=?;"); $stmt->execute(array($name)); $stmt = $this->prepare("INSERT INTO config (name, data, last_updated_time) VALUES (?,?,?);"); $stmt->execute(array($name, $dbData, $types["lastUpdated"])); } }
public function run() { switch ($this->parameters(1)) { case "add": switch ($this->parameters(2)) { case "nick": $harassedNicks = DataManager::retrieve("harassedNicks"); if (!$harassedNicks) { $harassedNicks = array(); } $harassedNicks[] = $this->parameters(3); DataManager::store("harassedNicks", $harassedNicks); $server = Server::getInstance(); $server->notify($this->senderNick, $this->parameters(3) . " added to harass list"); break; case "host": $harassedHosts = DataManager::retrieve("harassedHosts"); if (!$harassedHosts) { $harassedHosts = array(); } $harassedHosts[] = $this->parameters(3); DataManager::store("harassedHosts", $harassedHosts); $server = Server::getInstance(); $server->notify($this->senderNick, "REGEX string '" . $this->parameters(3) . "' added to harass list"); break; } break; case "del": switch ($this->parameters(2)) { case "nick": $harassedNicks = DataManager::retrieve("harassedNicks"); foreach ($harassedNicks as $id => $harassedNick) { if ($harassedNick == $this->parameters(3)) { unset($harassedNicks[$id]); } $success = true; } DataManager::store("harassedNicks", $harassedNicks); $server = Server::getInstance(); if ($success) { $server->notify($this->senderNick, $this->parameters(3) . " removed from harass list"); } else { $server->notify($this->senderNick, "No harass entry found matching the nickname " . $this->parameters(3)); } break; case "host": $harassedHosts = DataManager::retrieve("harassedHosts"); $success = false; foreach ($harassedHosts as $id => $harassedHost) { if ($harassedHost == $this->parameters(3)) { unset($harassedHosts[$id]); } $success = true; } DataManager::store("harassedHosts", $harassedHosts); $server = Server::getInstance(); if ($success) { $server->notify($this->senderNick, $this->parameters(3) . " removed from harass list"); } else { $server->notify($this->senderNick, "No harass entry found matching the REGEX hostname '" . $this->parameters(3) . "'"); } break; } break; } }