Advertisement
Guest User

Untitled

a guest
Sep 25th, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.05 KB | None | 0 0
  1. <?php
  2.  
  3. //
  4. $settings = [
  5. 'api_key' => '0wNRmkuYK0hamW0cQ0Zpzw9RFvMi0BRhgtbmNLA1qrF44KsO5RZfsYFnhmcoIYNh',
  6. 'userscript' => 170066,
  7. 'image' => 124,
  8. 'size1' => 5000,
  9. 'size2' => 500,
  10. 'kernal' => 138,
  11. 'password' => 'unHuW9dypTRjGaLjeBEU',
  12. ];
  13.  
  14. //
  15. set_time_limit(0);
  16.  
  17. //
  18. function request($data)
  19. {
  20. $url = 'https://api.linode.com/';
  21. $url .= '?';
  22. $url .= http_build_query($data);
  23. $url = file_get_contents($url);
  24. $url = json_decode($url, true);
  25. return $url;
  26. }
  27.  
  28. //
  29. $data = [
  30. 'api_key' => $settings['api_key'],
  31. 'api_action' => 'linode.list',
  32. ];
  33. $result = request($data);
  34. if (!empty($result['ERRORARRAY'])) {
  35. die('Invalid API KEY.');
  36. }
  37.  
  38. //
  39. if ($_POST) {
  40.  
  41. //
  42. $output = [];
  43. $msgS = null;
  44. $msgE = null;
  45.  
  46. //
  47. if (isset($_POST['list'])) {
  48.  
  49. $data = [
  50. 'api_key' => $settings['api_key'],
  51. 'api_action' => 'linode.ip.list',
  52. ];
  53. $result = request($data);
  54.  
  55. if (!empty($result['DATA'])) {
  56.  
  57. $msgS = 'Success!';
  58.  
  59. foreach ($result['DATA'] as $ip) {
  60. $output[] = $ip['IPADDRESS'] . trim($_POST['prefix']);
  61. }
  62.  
  63. } else {
  64.  
  65. $msgE = 'Error! You do not have any virtual machines.';
  66.  
  67. }
  68.  
  69. }
  70.  
  71. //
  72. if (isset($_POST['create'])) {
  73.  
  74. $msgS = 'Success!';
  75.  
  76. for ($i = 0; $i < trim($_POST['quantity']); $i++) {
  77.  
  78. $data = [
  79. 'api_key' => $settings['api_key'],
  80. 'api_action' => 'linode.create',
  81.  
  82. 'DatacenterID' => $_POST['location'],
  83. 'PlanID' => 1,
  84. ];
  85. $result = request($data);
  86.  
  87. $data = [
  88. 'api_key' => $settings['api_key'],
  89. 'api_action' => 'linode.disk.createfromstackscript',
  90.  
  91. 'LinodeID' => $result['DATA']['LinodeID'],
  92. 'StackScriptID' => $settings['userscript'],
  93. 'StackScriptUDFResponses' => '{}',
  94. 'DistributionID' => $settings['image'],
  95. 'Label' => 'MAIN',
  96. 'Size' => $settings['size1'],
  97. 'rootPass' => $settings['password'],
  98. ];
  99. $disk1 = request($data);
  100.  
  101. $data = [
  102. 'api_key' => $settings['api_key'],
  103. 'api_action' => 'linode.disk.create',
  104.  
  105. 'LinodeID' => $result['DATA']['LinodeID'],
  106. 'Label' => 'SWAP',
  107. 'Type' => 'swap',
  108. 'Size' => $settings['size2'],
  109. ];
  110. $disk2 = request($data);
  111.  
  112. $data = [
  113. 'api_key' => $settings['api_key'],
  114. 'api_action' => 'linode.config.create',
  115.  
  116. 'LinodeID' => $result['DATA']['LinodeID'],
  117. 'KernelID' => $settings['kernal'],
  118. 'Label' => 'DEFAULT',
  119. 'DiskList' => $disk1['DATA']['DiskID'] . ',' . $disk2['DATA']['DiskID'],
  120. ];
  121. request($data);
  122.  
  123. $data = [
  124. 'api_key' => $settings['api_key'],
  125. 'api_action' => 'linode.boot',
  126.  
  127. 'LinodeID' => $result['DATA']['LinodeID'],
  128. ];
  129. request($data);
  130.  
  131. $output[] = 'Created ID : ' . $result['DATA']['LinodeID'];
  132.  
  133. }
  134.  
  135. }
  136.  
  137. //
  138. if (isset($_POST['delete'])) {
  139.  
  140. $data = [
  141. 'api_key' => $settings['api_key'],
  142. 'api_action' => 'linode.list',
  143. ];
  144. $result = request($data);
  145.  
  146. if (empty($result['DATA'])) {
  147.  
  148. $msgE = 'Error! You do not have any virtual machines.';
  149.  
  150. } else {
  151.  
  152. $msgS = 'Success!';
  153.  
  154. foreach ($result['DATA'] as $linode) {
  155.  
  156. $data = [
  157. 'api_key' => $settings['api_key'],
  158. 'api_action' => 'linode.shutdown',
  159. 'LinodeID' => $linode['LINODEID'],
  160. ];
  161. request($data);
  162.  
  163. $data = [
  164. 'api_key' => $settings['api_key'],
  165. 'api_action' => 'linode.disk.list',
  166. 'LinodeID' => $linode['LINODEID'],
  167. ];
  168. $disks = request($data);
  169.  
  170. foreach ($disks['DATA'] as $disk) {
  171. $data = [
  172. 'api_key' => $settings['api_key'],
  173. 'api_action' => 'linode.disk.delete',
  174. 'LinodeID' => $linode['LINODEID'],
  175. 'DiskID' => $disk['DISKID'],
  176. ];
  177. request($data);
  178. }
  179.  
  180. $status = true;
  181.  
  182. while ($status) {
  183. $data = [
  184. 'api_key' => $settings['api_key'],
  185. 'api_action' => 'linode.job.list',
  186. 'LinodeID' => $linode['LINODEID'],
  187. ];
  188. $jobs = request($data);
  189.  
  190. if ($jobs['DATA'][0]['HOST_SUCCESS'] == 1) {
  191. $status = false;
  192. }
  193. }
  194.  
  195. $data = [
  196. 'api_key' => $settings['api_key'],
  197. 'api_action' => 'linode.delete',
  198. 'LinodeID' => $linode['LINODEID'],
  199. ];
  200. request($data);
  201.  
  202. $output[] = 'Deleted Linode ID : ' . $linode['LINODEID'];
  203.  
  204. }
  205.  
  206. }
  207.  
  208. }
  209.  
  210. }
  211.  
  212. ?>
  213. <!DOCTYPE html>
  214. <html lang="en">
  215. <head>
  216. <meta charset="utf-8">
  217. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  218. <meta name="viewport" content="width=device-width, initial-scale=1">
  219. <meta name="robots" content="none">
  220. <title>TheProxyGuru - API Manager (Linode)</title>
  221. <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
  222. <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.3.7/cyborg/bootstrap.min.css">
  223. <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
  224. <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
  225. <!--[if lt IE 9]>
  226. <script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
  227. <script src="https://cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.min.js"></script>
  228. <![endif]-->
  229. <style>
  230. * {
  231.  
  232. }
  233. html {
  234.  
  235. }
  236. body {
  237. padding-top: 50px;
  238. }
  239. a, a:link, a:active, a:hover {
  240. text-decoration: none;
  241. }
  242. </style>
  243. </head>
  244. <body>
  245. <!-- -->
  246. <div class="container-fluid">
  247. <div class="row">
  248. <div class="col-lg-3 text-center">
  249. <h6><a href=".">LINODE</a></h6>
  250. <hr>
  251. </div>
  252. </div>
  253. </div>
  254. <!-- -->
  255. <?php if (!empty($msgS)): ?>
  256. <div class="container-fluid">
  257. <div class="row">
  258. <div class="col-lg-3">
  259. <div class="alert alert-success">
  260. <?= $msgS ?>
  261. </div>
  262. </div>
  263. </div>
  264. </div>
  265. <?= PHP_EOL ?>
  266. <?php endif; ?>
  267. <!-- -->
  268. <?php if (!empty($msgE)): ?>
  269. <div class="container-fluid">
  270. <div class="row">
  271. <div class="col-lg-3">
  272. <div class="alert alert-danger">
  273. <?= $msgE ?>
  274. </div>
  275. </div>
  276. </div>
  277. </div>
  278. <?= PHP_EOL ?>
  279. <?php endif; ?>
  280. <!-- -->
  281. <div class="container-fluid">
  282. <div class="row">
  283. <div class="col-lg-3">
  284. <div class="well">
  285. <?php if (!empty($output)): ?>
  286. <?php foreach ($output as $o): ?>
  287. <?= $o ?>
  288. <br>
  289. <?php endforeach; ?>
  290. <?= PHP_EOL ?>
  291. <?php endif; ?>
  292. </div>
  293. </div>
  294. </div>
  295. </div>
  296. <!-- -->
  297. <div class="container-fluid">
  298. <div class="row">
  299. <div class="col-lg-3">
  300. <div class="panel panel-default">
  301. <div class="panel-heading">List</div>
  302. <div class="panel-body">
  303. <form class="form" method="post">
  304. <div class="form-group">
  305. <input class="form-control" id="prefix" type="text" name="prefix" placeholder=":port:user:pass">
  306. </div>
  307. <button class="btn btn-info btn-lg btn-block" id="list" type="submit" name="list">List Proxies</button>
  308. </form>
  309. </div>
  310. </div>
  311. </div>
  312. </div>
  313. </div>
  314. <!-- -->
  315. <div class="container-fluid">
  316. <div class="row">
  317. <div class="col-lg-3">
  318. <div class="panel panel-default">
  319. <div class="panel-heading">Create</div>
  320. <div class="panel-body">
  321. <form class="form" method="post">
  322. <div class="form-group">
  323. <input class="form-control" id="quantity" type="text" name="quantity" placeholder="Quantity ..." required>
  324. </div>
  325. <div class="form-group">
  326. <select class="form-control" id="location" name="location">
  327. <option value="2">Dallas, TX, USA</option>
  328. <option value="3">Fremont, CA, USA</option>
  329. <option value="4">Atlanta, GA, USA</option>
  330. <option value="6">Newark, NJ, USA</option>
  331. <option value="7">London, England, UK</option>
  332. <option value="8" disabled>Tokyo, JP</option>
  333. <option value="9">Singapore, SG</option>
  334. <option value="10">Frankfurt, DE</option>
  335. <option value="11">Tokyo 2, JP</option>
  336. </select>
  337. </div>
  338. <button class="btn btn-success btn-lg btn-block" id="create" type="submit" name="create">Create</button>
  339. </form>
  340. </div>
  341. </div>
  342. </div>
  343. </div>
  344. </div>
  345. <!-- -->
  346. <div class="container-fluid">
  347. <div class="row">
  348. <div class="col-lg-3">
  349. <div class="panel panel-default">
  350. <div class="panel-heading">Delete</div>
  351. <div class="panel-body">
  352. <form class="form" method="post">
  353. <button class="btn btn-danger btn-lg btn-block" id="delete" type="submit" name="delete">Delete</button>
  354. </form>
  355. </div>
  356. </div>
  357. </div>
  358. </div>
  359. </div>
  360. <!-- -->
  361. <div class="container-fluid">
  362. <div class="row">
  363. <div class="col-lg-3 text-center">
  364. <hr>
  365. <p><small>&copy; <?= date('Y') ?> <a href="https://TheProxyGuru.com" target="_blank">TheProxyGuru</a></small></p>
  366. </div>
  367. </div>
  368. </div>
  369. </body>
  370. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement