Guest User

Untitled

a guest
Feb 19th, 2017
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.69 KB | None | 0 0
  1. <?php
  2. ini_set("max_execution_time",120);
  3.  
  4. //Database connection info
  5. $db_hostname = ""; //Hostname
  6. $db_port = 3306; //Port
  7. $db_username = ""; //Username
  8. $db_password = ""; //Password
  9. $db_database = ""; //Database
  10.  
  11. //Steam info
  12. $account_invites = 100; //Number of invites per account per hour -- DO NOT CHANGE IT
  13. $group_invites = 50; //Number of invites per two hours per group -- DO NOT CHANGE IT
  14. $ip_invites = 25000; //Number of invites per two hours per ip -- DO NOT CHANGE IT
  15.  
  16. $ip_time = 60*60*2;
  17. $ac_time = 60*60*2;
  18. $gr_time = 60*60*2;
  19.  
  20. $user_agent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; rv:2.2) Gecko/20110201";
  21.  
  22. //-------------- DO NOT CHANGE ANYTHING BELOW THIS LINE --------------
  23.  
  24. $steam_cookie = "";
  25.  
  26. $ifconfig = array();
  27. $ips = array();
  28. exec("/sbin/ifconfig", $ifconfig);
  29. $ifconfig = implode("\n", $ifconfig);
  30. preg_match_all("/inet addr:([^\ ]*) ([^\n]*)\n([ ]*)UP/i", $ifconfig, $matches);
  31. for($i=0;$i<count($matches[1]);++$i)
  32. if(!preg_match("/127\.0\.0\.[\d]/i", $matches[1][$i]))
  33. $ips[]=$matches[1][$i];
  34.  
  35. //Connect to database
  36. $mysqli_conn = mysql_pconnect($db_hostname.":".$db_port, $db_username, $db_password);
  37. mysql_select_db($db_database);
  38.  
  39.  
  40. $server_row = mysql_fetch_assoc(mysql_query("SELECT groupids FROM server_groups WHERE serverip=\"".$_GET["serverip"]."\" AND active=1"));
  41.  
  42. $plugin_groupid = explode(",", $server_row["groupids"]);
  43.  
  44. if(count($plugin_groupid) == 0)
  45. {
  46. if($_GET["debug"])
  47. {
  48. echo "Server is not present in the database";
  49. }
  50. die();
  51. }
  52.  
  53. $invites_now = 0;
  54.  
  55. for($i=0;$i<count($plugin_groupid);++$i)
  56. {
  57. if(file_exists("autoinvite.txt"))
  58. {
  59. $steam_cookie = file_get_contents("autoinvite.txt");
  60. }
  61.  
  62. $query = mysql_query("SELECT *, (SELECT COUNT(*) FROM invitations_sent WHERE accountid=accounts.id AND time > ".(time()-$ac_time).") FROM accounts WHERE active = 1 HAVING (SELECT COUNT(*) FROM invitations_sent WHERE accountid=accounts.id AND time > ".(time()-$ac_time).") < ".$account_invites);
  63. if(mysql_num_rows($query)==0)
  64. {
  65. if(is_numeric($_GET["communityid"]))
  66. {
  67. $server_row = mysql_fetch_assoc(mysql_query("SELECT groupids FROM server_groups WHERE serverip=\"".$_GET["serverip"]."\" AND active=1"));
  68. $plugin_groupid = explode(",", $server_row["groupids"]);
  69. foreach($plugin_groupid AS $groupid)
  70. if(!empty($groupid))
  71. if(mysql_num_rows(mysql_query("SELECT * FROM queued_invitations WHERE groupid=\"".$groupid."\" AND communityid=\"".$_GET["communityid"]."\"")) == 0 && strlen($_GET["communityid"])==17)
  72. mysql_query("INSERT INTO queued_invitations (communityid, groupid) VALUES(\"".mysql_real_escape_string($_GET["communityid"])."\", \"".$groupid."\")");
  73. }
  74. die("No accounts available");
  75. }
  76. $user = mysql_fetch_assoc($query);
  77. $ip = $user["lastip"];
  78.  
  79. //Over the time limit, resetting
  80. if($steam_cookie == "" || ($user["cookie"] != "" && $user["cookie"]!=$steam_cookie) || $user["cookie"] == "" || !in_array($ip, $ips))
  81. {
  82. $ip = $ips[rand(0, count($ips)-1)];
  83. $data = array("username" => $user["username"]);
  84.  
  85. $steam_login = curl_init();
  86. curl_setopt($steam_login, CURLOPT_URL, "http://steamcommunity.com/");
  87. curl_setopt($steam_login, CURLOPT_RETURNTRANSFER, 1);
  88. curl_setopt($steam_login, CURLOPT_HEADER, 1);
  89. //curl_setopt($steam_login, CURLOPT_INTERFACE, $ip);
  90. curl_setopt($steam_login, CURLOPT_USERAGENT, $user_agent);
  91. $output=curl_exec($steam_login);
  92. if($_GET["debug"])
  93. echo "Output: ".$output;
  94.  
  95. if(preg_match("/sessionid=(.*);/i", $output, $sessionid))
  96. $sessionid = $sessionid[1];
  97.  
  98. $steam_login = curl_init();
  99. curl_setopt($steam_login, CURLOPT_URL, "https://steamcommunity.com/login/home/");
  100. curl_setopt($steam_login, CURLOPT_RETURNTRANSFER, 1);
  101. curl_setopt($steam_login, CURLOPT_COOKIE, "sessionid=".$sessionid);
  102. curl_setopt($steam_login, CURLOPT_HEADER, 1);
  103. //curl_setopt($steam_login, CURLOPT_INTERFACE, $ip);
  104. curl_setopt($steam_login, CURLOPT_USERAGENT, $user_agent);
  105. curl_setopt($steam_login, CURLOPT_CAINFO, "./cacert.pem");
  106. $output=curl_exec($steam_login);
  107.  
  108. $steam_login = curl_init();
  109. curl_setopt($steam_login, CURLOPT_URL, "https://steamcommunity.com/login/getrsakey/");
  110. curl_setopt($steam_login, CURLOPT_RETURNTRANSFER, 1);
  111. curl_setopt($steam_login, CURLOPT_HEADER, 1);
  112. curl_setopt($steam_login, CURLOPT_POST, 1);
  113. curl_setopt($steam_login, CURLOPT_POSTFIELDS, $data);
  114. //curl_setopt($steam_login, CURLOPT_INTERFACE, $ip);
  115. curl_setopt($steam_login, CURLOPT_COOKIE, "sessionid=".$sessionid);
  116. curl_setopt($steam_login, CURLOPT_REFERER, "https://steamcommunity.com/login/home/");
  117. curl_setopt($steam_login, CURLOPT_USERAGENT, $user_agent);
  118. curl_setopt($steam_login, CURLOPT_CAINFO, "./cacert.pem");
  119. $output=curl_exec($steam_login);
  120. if($_GET["debug"])
  121. echo "Output: ".$output;
  122.  
  123. preg_match_all("/\:\"([^\"]*)\"/", $output, $matches);
  124. $rsa["mod"]=$matches[1][0];
  125. $rsa["exp"]=$matches[1][1];
  126. $rsa["time"]=$matches[1][2];
  127.  
  128. include("Crypt/RSA.php");
  129. $RSA = new Crypt_RSA();
  130. $RSA->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1);
  131. $n = new Math_BigInteger($rsa["mod"], 16);
  132. $e = new Math_BigInteger($rsa["exp"], 16);
  133. $key = array("modulus"=>$n,"publicExponent"=>$e);
  134. $RSA->loadKey($key, CRYPT_RSA_PUBLIC_FORMAT_RAW);
  135. $encryptedPassword = base64_encode($RSA->encrypt($user["password"]));
  136.  
  137. //Fetching Steam cookie
  138. $data = array("username" => $user["username"],
  139. "password" => $encryptedPassword,
  140. "emailauth" => "",
  141. "emailsteamid" => "",
  142. "captchagid" => "-1",
  143. "captcha_text" => "",
  144. "rsatimestamp" => $rsa["time"]);
  145.  
  146. print_r($data);
  147.  
  148. $steam_login = curl_init();
  149. curl_setopt($steam_login, CURLOPT_URL, "https://steamcommunity.com/login/dologin/");
  150. curl_setopt($steam_login, CURLOPT_RETURNTRANSFER, 1);
  151. curl_setopt($steam_login, CURLOPT_COOKIE, "sessionid=".$sessionid);
  152. curl_setopt($steam_login, CURLOPT_HEADER, 1);
  153. curl_setopt($steam_login, CURLOPT_POST, 1);
  154. curl_setopt($steam_login, CURLOPT_POSTFIELDS, $data);
  155. //curl_setopt($steam_login, CURLOPT_INTERFACE, $ip);
  156. curl_setopt($steam_login, CURLOPT_USERAGENT, $user_agent);
  157. curl_setopt($steam_login, CURLOPT_CAINFO, "./cacert.pem");
  158. $output=curl_exec($steam_login);
  159. if($_GET["debug"])
  160. echo $output;
  161.  
  162. if(preg_match("/steamLogin=(.*);/i", $output, $steam_cookie))
  163. $steam_cookie = $steam_cookie[1];
  164. curl_close($steam_login);
  165.  
  166. if(is_array($steam_cookie))
  167. {
  168. if($_GET["debug"])
  169. {
  170. echo "<br/>Steam Authentication Failed -> ";
  171. print_r($user);
  172. echo "<br/><br/>";
  173. }
  174. die();
  175. }
  176.  
  177. touch("autoinvite.txt");
  178. file_put_contents("autoinvite.txt", $steam_cookie);
  179.  
  180. $steam_communityid = str_replace(strstr($steam_cookie, "%"), "", $steam_cookie);
  181. $token = substr(strstr(substr(strstr($steam_cookie, "%"), 1), "%"), 3);
  182.  
  183. $steam_transfer = curl_init();
  184. curl_setopt($steam_transfer, CURLOPT_URL, "https://store.steampowered.com/login/transfer");
  185. curl_setopt($steam_transfer, CURLOPT_RETURNTRANSFER, 1);
  186. curl_setopt($steam_transfer, CURLOPT_HEADER, 1);
  187. curl_setopt($steam_transfer, CURLOPT_POST, 1);
  188. //curl_setopt($steam_transfer, CURLOPT_INTERFACE, $ip);
  189. curl_setopt($steam_transfer, CURLOPT_COOKIE, "steamLogin=".$steam_cookie."; sessionid=".$sessionid);
  190. curl_setopt($steam_transfer, CURLOPT_POSTFIELDS, array("steamid"=>$steam_communityid,"token"=>$token));
  191. curl_setopt($steam_transfer, CURLOPT_USERAGENT, $user_agent);
  192. curl_setopt($steam_transfer, CURLOPT_CAINFO, "./cacert.pem");
  193. $output=curl_exec($steam_transfer);
  194. if($_GET["debug"])
  195. echo $output;
  196.  
  197. if(preg_match("/steamLogin=(.*);/i", $output, $browserid))
  198. $browserid = $browserid[1];
  199.  
  200. $steam_transfer = curl_init();
  201. curl_setopt($steam_transfer, CURLOPT_URL, "http://steamcommunity.com/profiles/".$steam_communityid."/home");
  202. curl_setopt($steam_transfer, CURLOPT_RETURNTRANSFER, 1);
  203. curl_setopt($steam_transfer, CURLOPT_HEADER, 1);
  204. //curl_setopt($steam_transfer, CURLOPT_INTERFACE, $ip);
  205. curl_setopt($steam_transfer, CURLOPT_COOKIE, "steamLogin=".$steam_cookie."; browserid=".$browserid."; sessionid=".$sessionid);
  206. curl_setopt($steam_transfer, CURLOPT_USERAGENT, $user_agent);
  207. $output=curl_exec($steam_transfer);
  208. if($_GET["debug"])
  209. echo $output;
  210.  
  211. mysql_query("UPDATE accounts SET cookie=\"".$steam_cookie."\", sessionid=\"".$sessionid."\", lastip=\"".$ip."\" WHERE id=".$user["id"]);
  212. }
  213. else
  214. {
  215. $sessionid = $user["sessionid"];
  216. }
  217.  
  218. echo "logged in as ".$user["username"];
  219.  
  220. $steam_communityid = str_replace(strstr($steam_cookie, "%"), "", $steam_cookie);
  221. $token = substr(strstr(substr(strstr($steam_cookie, "%"), 1), "%"), 3);
  222.  
  223. if($plugin_groupid[$i]=="")
  224. continue;
  225. $invites_now = 0;
  226. $successful_invites = array();
  227. $query = mysql_query("SELECT locked FROM groups WHERE groupid=\"".$plugin_groupid[$i]."\" ");
  228.  
  229. if(mysql_num_rows($query)==0)
  230. {
  231. mysql_query("INSERT INTO groups (groupid, locked) VALUES(\"".$plugin_groupid[$i]."\", 0)");
  232. $lock = false;
  233. }
  234. else
  235. list($lock) = mysql_fetch_array($query, MYSQL_NUM);
  236.  
  237. $sofar_ip = mysql_num_rows(mysql_query("SELECT * FROM invitations_sent WHERE serverip=\"".$ip."\" AND time>".(time()-$ip_time)));
  238. $sofar_ac = mysql_num_rows(mysql_query("SELECT * FROM invitations_sent WHERE accountid=".$user["id"]." AND time>".(time()-$ac_time)));
  239. $sofar_gr = mysql_num_rows(mysql_query("SELECT * FROM invitations_sent WHERE groupid=\"".$plugin_groupid[$i]."\" AND time>".(time()-$gr_time)));
  240.  
  241. if(mysql_num_rows(mysql_query("SELECT * FROM invitations_sent")) > 10000)
  242. mysql_query("DELETE FROM invitations_sent WHERE time < ".(time()-60*60*3));
  243.  
  244. $left_ip = $ip_invites - $sofar_ip;
  245. $left_ac = $account_invites - $sofar_ac;
  246. $left_gr = $group_invites - $sofar_gr;
  247.  
  248. if($sofar_ip < $sofar_ac)
  249. if($sofar_ac < $sofar_gr)
  250. $invites_sofar=$sofar_gr;
  251. else
  252. $invites_sofar=$sofar_ac;
  253. else
  254. if($sofar_ip < $sofar_gr)
  255. $invites_sofar = $sofar_gr;
  256. else
  257. $invites_sofar = $sofar_ip;
  258.  
  259. if($left_ip < $left_ac)
  260. if($left_ip < $left_gr)
  261. $left=$left_ip;
  262. else
  263. $left=$left_gr;
  264. else
  265. if($left_ac < $left_gr)
  266. $left = $left_ac;
  267. else
  268. $left = $left_gr;
  269.  
  270. if($left>0)
  271. {
  272. if(isset($_GET["communityid"]))
  273. {
  274. $result = invite_player($steam_communityid, $_GET["communityid"], $plugin_groupid[$i], $steam_cookie, $sessionid, $ip, $user_agent);
  275. //file_put_contents("invite.log", $_GET["serverip"]." - ".$_GET["communityid"]." - ".$result."\n", FILE_APPEND);
  276. if(preg_match("/\<\!\[CDATA\[OK\]\]\>/", $result))
  277. {
  278. $invites_now++;
  279. mysql_query("INSERT INTO invitations_sent (communityid, accountid, groupid, serverip, time) VALUES(\"".$_GET["communityid"]."\", ".$user["id"].", \"".$plugin_groupid[$i]."\", \"".$ip."\", ".time().")");
  280. /*mysql_query("UPDATE groups SET invitations=".($invites_sofar+1).", lasttime=".$time_of_last." WHERE groupid=\"".$plugin_groupid[$i]."\"");
  281. mysql_query("UPDATE accounts SET invitations=".($user["invitations"]+1).", last=".$user["last"]." WHERE id=".$user["id"]);
  282. mysql_query("UPDATE locations SET invitations=".($user["invitations"]+1).", last=".$user["last"]." WHERE id=".$user["id"]);*/
  283. }
  284. else if(preg_match("/permission/", $result))
  285. {
  286. join_group($plugin_groupid[$i], $steam_cookie, $sessionid, $ip, $user_agent);
  287. $result = invite_player($steam_communityid, $_GET["communityid"], $plugin_groupid[$i], $steam_cookie, $sessionid, $ip, $user_agent);
  288. if(preg_match("/\<\!\[CDATA\[OK\]\]\>/", $result))
  289. {
  290. $invites_now++;
  291. mysql_query("INSERT INTO invitations_sent (communityid, accountid, groupid, serverip, time) VALUES(\"".$_GET["communityid"]."\", ".$user["id"].", \"".$plugin_groupid[$i]."\", \"".$ip."\", ".time().")");
  292. }
  293. } else if(preg_match("/invalid/", $result))
  294. {
  295. // Steam logon expired
  296. file_put_contents("autoinvite.txt", "");
  297. die();
  298. }
  299.  
  300. if($_GET["debug"])
  301. {
  302. echo $result;
  303. }
  304. }
  305.  
  306. if($left-$invites_now > 0 && !$lock)
  307. {
  308. //Fetch queued players and invite them
  309.  
  310. $successful_invites = array();
  311. $number = $left-$invites_now;
  312.  
  313. $mysql_query = mysql_query("SELECT * FROM queued_invitations WHERE groupid=\"".$plugin_groupid[$i]."\" LIMIT 0, ".$number);
  314.  
  315. if(mysql_num_rows($mysql_query)>0)
  316. {
  317. mysql_query("UPDATE groups SET locked=1 WHERE groupid=\"".$plugin_groupid[$i]."\"");
  318.  
  319. while($player = mysql_fetch_assoc($mysql_query))
  320. {
  321. //foreach($plugin_groupid AS $comid)
  322. //{
  323. $result = invite_player($steam_communityid, $player["communityid"], $plugin_groupid[$i], $steam_cookie, $sessionid, $ip, $user_agent);
  324. //$log .= $result;
  325.  
  326. if(preg_match("/\<\!\[CDATA\[OK\]\]\>/", $result))
  327. {
  328. mysql_query("INSERT INTO invitations_sent (communityid, accountid, groupid, serverip, time) VALUES(\"".$player["communityid"]."\", ".$user["id"].", \"".$plugin_groupid[$i]."\", \"".$ip."\", ".time().")");
  329. }
  330. else if(preg_match("/permission/", $result))
  331. {
  332. join_group($plugin_groupid[$i], $steam_cookie, $sessionid, $ip, $user_agent);
  333. $result = invite_player($steam_communityid, $player["communityid"], $plugin_groupid[$i], $steam_cookie, $sessionid, $ip, $user_agent);
  334. if(preg_match("/\<\!\[CDATA\[OK\]\]\>/", $result))
  335. {
  336. $invites_now++;
  337. mysql_query("INSERT INTO invitations_sent (communityid, accountid, groupid, serverip, time) VALUES(\"".$player["communityid"]."\", ".$user["id"].", \"".$plugin_groupid[$i]."\", \"".$ip."\", ".time().")");
  338. }
  339. }
  340. //}
  341. $successful_invites[] = $player["communityid"];
  342. }
  343.  
  344. //Delete successfully invited players from database
  345.  
  346. $mysql_query_string = "DELETE FROM queued_invitations WHERE groupid=\"".$plugin_groupid[$i]."\" AND (";
  347.  
  348. for($a=0;$a<count($successful_invites);++$a)
  349. {
  350. $mysql_query_string .= " communityid=\"".$successful_invites[$a]."\"";
  351. if(($a+1) != count($successful_invites))
  352. $mysql_query_string .= " OR";
  353. }
  354.  
  355. $mysql_query_string .=")";
  356.  
  357. mysql_query($mysql_query_string);
  358.  
  359. //file_put_contents("log.txt", $log);
  360.  
  361. $invites_sofar += $invites_now;
  362.  
  363. mysql_query("UPDATE groups SET locked=0 WHERE groupid=\"".$plugin_groupid[$i]."\"");
  364. //mysql_query("UPDATE accounts SET invitations=".($user["invitations"]+$invites_now)." WHERE id=".$user["id"]);
  365. }
  366. }
  367. }
  368. else
  369. {
  370. if(isset($_GET["communityid"]) && is_numeric($_GET["communityid"]))
  371. {
  372. //Can't invite more today, queueing
  373. if(mysql_num_rows(mysql_query("SELECT * FROM queued_invitations WHERE communityid=\"".mysql_real_escape_string($_GET["communityid"])."\" AND groupid=\"".$plugin_groupid[$i]."\""))==0 && strlen($_GET["communityid"])==17)
  374. {
  375. if(mysql_num_rows(mysql_query("SELECT * FROM queued_invitations WHERE groupid=\"".$groupid."\" AND communityid=\"".$_GET["communityid"]."\"")) == 0)
  376. mysql_query("INSERT INTO queued_invitations (communityid, groupid) VALUES(\"".mysql_real_escape_string($_GET["communityid"])."\", \"".$plugin_groupid[$i]."\")");
  377. }
  378. }
  379. }
  380. }
  381.  
  382. //Close database connection
  383. mysql_close();
  384.  
  385. //file_put_contents("autoinvite.txt", $invites_sofar."\n".$steam_cookie."\n".$time_of_first);
  386.  
  387. function invite_player($inviter, $invitee, $group, $steam_cookie, $sessionid, $ip, $user_agent)
  388. {
  389. $data = array("xml"=>"1",
  390. "type"=>"groupInvite",
  391. "sessionID"=>urldecode($sessionid),
  392. "group"=>$group,
  393. "inviter"=>$inviter,
  394. "invitee"=>$invitee);
  395.  
  396. print_r($data);
  397.  
  398. $steam_invite = curl_init();
  399. curl_setopt($steam_invite, CURLOPT_URL, "http://steamcommunity.com/actions/GroupInvite");
  400. curl_setopt($steam_invite, CURLOPT_RETURNTRANSFER, 1);
  401. curl_setopt($steam_invite, CURLOPT_HEADER, 1);
  402. curl_setopt($steam_invite, CURLOPT_INTERFACE, $ip);
  403. curl_setopt($steam_invite, CURLOPT_POST, 1);
  404. curl_setopt($steam_invite, CURLOPT_POSTFIELDS, $data);
  405. curl_setopt($steam_invite, CURLOPT_COOKIE, "steamLogin=".$steam_cookie."; sessionid=".$sessionid);
  406. curl_setopt($steam_invite, CURLOPT_USERAGENT, $user_agent);
  407. $result = curl_exec($steam_invite);
  408. curl_close($steam_invite);
  409.  
  410. return $result;
  411. }
  412.  
  413. function join_group($groupid, $steam_cookie, $sessionid, $ip, $user_agent)
  414. {
  415. $steam_group = curl_init();
  416. curl_setopt($steam_group, CURLOPT_URL, "http://steamcommunity.com/gid/".$groupid);
  417. curl_setopt($steam_group, CURLOPT_RETURNTRANSFER, 1);
  418. curl_setopt($steam_group, CURLOPT_HEADER, 1);
  419. curl_setopt($steam_group, CURLOPT_COOKIE, "steamLogin=".$steam_cookie."; sessionid=".$sessionid);
  420. curl_setopt($steam_group, CURLOPT_USERAGENT, $user_agent);
  421. $result = curl_exec($steam_group);
  422. curl_close($steam_group);
  423. if(preg_match("/Location: http:\/\/steamcommunity.com\/groups\/(.*)\r\n/", $result, $group))
  424. $group_name = $group[1];
  425.  
  426. if($_GET["debug"])
  427. echo $result;
  428.  
  429. $data = array("action"=>"login",
  430. "sessionID"=>$sessionid);
  431. $group_join = curl_init();
  432. curl_setopt($group_join, CURLOPT_URL, "http://steamcommunity.com/groups/".$group_name);
  433. curl_setopt($group_join, CURLOPT_RETURNTRANSFER, 1);
  434. curl_setopt($group_join, CURLOPT_HEADER, 1);
  435. curl_setopt($group_join, CURLOPT_POST, 1);
  436. curl_setopt($group_join, CURLOPT_POSTFIELDS, $data);
  437. curl_setopt($group_join, CURLOPT_INTERFACE, $ip);
  438. curl_setopt($group_join, CURLOPT_USERAGENT, $user_agent);
  439. curl_setopt($group_join, CURLOPT_COOKIE, "steamLogin=".$steam_cookie."; sessionid=".$sessionid);
  440. $result = curl_exec($group_join);
  441. curl_close($group_join);
  442.  
  443. if($_GET["debug"])
  444. echo $result;
  445. }
  446. ?>
Add Comment
Please, Sign In to add comment