public function run()
 {
     Config::changeAllTimestampsToNow();
     DataManager::changeAllTimestampsToNow();
     $server = Server::getInstance();
     $server->notify($this->senderNick, "Database has reloaded all values from RAM");
 }
示例#2
0
 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);
 }
示例#3
0
 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;
             }
         }
     }
 }
示例#4
0
 /**
  * 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"]));
     }
 }
示例#5
0
文件: Harass.php 项目: numb95/pmg
 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;
     }
 }