Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class cURLHandler {
- public $ch;
- public $user;
- public $users;
- public $servers;
- public $fields;
- public $sessions;
- public $handles;
- function __construct() {
- $this->request = ($_SERVER['REQUEST_METHOD'] == "GET") ? ($_GET) : ($_POST);
- }
- public function run() {
- // begin
- $this->ch = create_multi_handler();
- // aggregate data
- $request = ($_SERVER['REQUEST_METHOD'] == "GET") ? ($_GET) : ($_POST);
- $this->servers = $this->getservers($request);
- $this->fields = $this->get_post_fields($request);
- $this->sessions = $this->get_sessions($request);
- $this->handles = prepare_curl_handles($servers, $fields, $token = array($_COOKIE['token']));
- // swarm!
- $this->execute_multiple_curl_handles($handles);
- }
- public function create_multi_handler(){
- return curl_multi_init();
- }
- public function prepare_curl_handles($servers, $fields, $token){
- $h = array();
- foreach($servers as $server_url){
- $h[$server_url] = prepare_curl_handle($server_url, $fields, $token = array($_COOKIE['token']));
- }
- return $h;
- }
- public function prepare_curl_handle($server_url, $fields, $token){
- $handle = curl_init($server_url);
- curl_setopt($handle, CURLOPT_TIMEOUT, 20);
- curl_setopt($handle, CURLOPT_URL, $server_url);
- curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($handle, CURLOPT_POST, 1);
- curl_setopt($handle, CURLOPT_POSTFIELDS, array(
- "token" => $token,
- "fields" => json_encode($fields)
- )
- );
- $len = strlen(json_encode($fields)) + strlen(json_encode($token));
- curl_setopt($handle, CURLOPT_HTTPHEADER, array(
- 'Content-Type' => 'application/json',
- 'Content-Length' => $len
- )
- );
- return $handle;
- }
- public function add_handles($curl_multi_handler, $handles){
- foreach($handles as $handle)
- curl_multi_add_handle($curl_multi_handler, $handle);
- }
- public function perform_multiexec($curl_multi_handler){
- do {
- $mrc = curl_multi_exec($curl_multi_handler, $active);
- } while ($active > 0);
- while ($active && $mrc == CURLM_OK) {
- if (curl_multi_select($curl_multi_handler) != -1) {
- do {
- $mrc = curl_multi_exec($curl_multi_handler, $active);
- } while ($active > 0);
- }
- }
- }
- public function perform_curl_close($curl_multi_handler, $handles){
- // is this necessary
- foreach($handles as $handle){
- curl_multi_remove_handle($curl_multi_handler, $handle);
- }
- curl_multi_close($curl_multi_handler);
- }
- public function execute_multiple_curl_handles($handles){
- $curl_multi_handler = create_multi_handler();
- add_handles($curl_multi_handler, $handles);
- perform_multiexec($curl_multi_handler);
- perform_curl_close($curl_multi_handler, $handles);
- }
- public function trace($var){
- echo '<pre>';
- print_r($var);
- }
- public function save_server_log($filename = "server.log") {
- if (!(dir_exists("server_logs") ^ mkdir("server_logs")))
- return false;
- file_put_contents($filename, json_encode($this));
- }
- public function save_user_log() {
- $filename = $_COOKIE['token'];
- if (!(dir_exists("user_logs") ^ mkdir("user_logs")));
- return false;
- file_put_contents($filename, json_encode($this->user));
- }
- public function get_server_log($filename = "server.log") {
- $fp = "";
- if (!file_exists($filename))
- return false;
- $fp = fopen($filename, "r");
- $dim = fread($fp, file_size($filename));
- $decoded = json_decode($dim);
- foreach ($decoded as $k=>$v)
- $this->$k = $v;
- }
- public function get_user_log($filename) {
- $filename = $_COOKIE['PHPSESSID'];
- $fp = fopen($filename, "r");
- $dim = fread($fp, file_size($filename));
- $decoded = json_decode($dim);
- foreach ($decoded as $k=>$v)
- $this->user->$k = $v;
- }
- public function find_user($email) {
- $path = "user_files/";
- $search = "";
- $files = scandir($path);
- foreach ($files as $value) {
- if (!$value->isFile())
- continue;
- $dim = fread($fp, file_size($value));
- $search = json_decode($dim);
- if ($this->search_user_log($search) == $email)
- break;
- }
- foreach ($search as $k=>$v)
- $this->user->$k = $v;
- }
- public function search_user_log($dim) {
- $email = $dim->email;
- return $email;
- }
- public function get_servers($request){
- return $request['server'];
- }
- public function get_sessions($request){
- return $request['session'];
- }
- public function get_post_fields($request){
- foreach($request as $kk=>$vv){
- if($kk!='server' && $kk!='session'){
- $fields[$kk]=$vv;
- }
- }
- return $fields;
- }
- public function validate_request(){
- if ($this->ch)
- return true;
- return false;
- }
- }
- /*****************************************************/
- session_start();
- if (!isset($_COOKIE['token']))
- setcookie("token", $_COOKIE['PHPSESSID'], time() + (86400 * 365), "/");
- $handler = new cURLHandler();
- if(!$handler->validate_request()){
- exit();
- }
- else {
- $interrupt = 0;
- $window = [];
- $serv_conf_file = fopen("server.ini", "r");
- $serv_conf_opts = fread($serv_conf_file, file_size("server.conf"));
- $user_conf_file = fopen("users.conf", "r");
- $user_conf_opts = fread($user_conf_file, file_size("user.conf"));
- foreach ($user_conf_opts as $k => $v)
- $handler->users->$k = $v;
- $handler->users = array_merge($handler->users, array($request['email'] => $_COOKIE['token']));
- foreach ($handler->users as $k => $v) {
- if ($v == $_COOKIE['token']) {
- $window = array($k => $v);
- $interrupt = 1;
- break;
- }
- }
- if ($interrupt == 1) {
- $handler->run();
- header("Location:saas.php?email=" . $window[0] . "&session=" . $window[1]);
- }
- else {
- fwrite($user_conf_file, json_encode($handler->users));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement