blatech = parse_ini_file($config, true); } public function runCommand($message, $args) { $args = static::sanitiseArgs($args); $nick = ltrim(explode('!', $message[0])[0], ":"); $channel = $message[2]; $msg = explode(" ", ltrim(trim($message[3], "\r\n"), ":!")); if (!isset($msg[0])) { return null; } else { if (array_key_exists($msg[0], $this->blatech)) { $command = $this->blatech[$msg[0]]['command']; $stdin = $this->blatech[$msg[0]]['stdin']; $cargs = $this->blatech[$msg[0]]['args']; $path = $this->blatech[$msg[0]]["path"]; $include_trigger_as_argument = $this->blatech[$msg[0]]['include_trigger_as_argument']; if ($include_trigger_as_argument) { $args = $msg[0] . ' ' . $args; } if ($path) { $path_check = is_readable($path); if (!$path_check) { return 'Cannot access directory at : ' . $path; } $cd = "cd " . $path . ' && '; } else { $cd = ""; } if ($stdin == true) { // var_dump($cd . 'echo "' . $args . '" | ' . $command); return explode("\n", shell_exec($cd . 'echo "' . $args . '" | ' . $command))[0]; } else if ($cargs == true) { return 'Command Line Arguments Not Supported Yet.'; } else { // var_dump($cd . 'echo "' . $args . '" | ' . $command); return explode("\n", shell_exec($cd . $command))[0]; } } } } private static function sanitiseArgs($string) { return preg_replace('/[^a-z\d_+:@#~!?\\/"\'£$%^*(){}\-\][=,.< >]/iu', '', $string); } }