diff --git a/cmdRoute.php b/cmdRoute.php
index 5454635..c494e1a 100644
--- a/cmdRoute.php
+++ b/cmdRoute.php
@@ -1,10 +1,12 @@
changeCoor(abs($lat));
+ $str .= ($lat < 0) ? 'S' : 'N';
+ $lon = number_format(trim(explode(',', $rawStr)[1]), 8); // 经度
+ $str .= ', ' . $this->changeCoor(abs($lon));
+ $str .= ($lon < 0) ? 'W' : 'E';
+ $str .= ')';
+ return $str;
+ }
+
+ private function dnsResolveIPv4($domain) { // DNS解析A记录
+ $ipAddr = array();
+ $rs = dns_get_record(strtolower($domain), DNS_A);
+ foreach ($rs as $record) {
+ $ipAddr[] = $record['ip'];
+ }
+ return $ipAddr;
+ }
+
+ private function dnsResolveIPv6($domain) { // DNS解析AAAA记录
+ $ipAddr = array();
+ $rs = dns_get_record(strtolower($domain), DNS_AAAA);
+ foreach ($rs as $record) {
+ $ipAddr[] = $record['ipv6'];
+ }
+ return $ipAddr;
+ }
+
+ public function dnsResolve($domain) { // DNS解析IP记录
+ $ipAddr = array();
+ $ipv4 = $this->dnsResolveIPv4($domain);
+ foreach ($ipv4 as $ip) {
+ $ipAddr[] = $ip;
+ }
+ $ipv6 = $this->dnsResolveIPv6($domain);
+ foreach ($ipv6 as $ip) {
+ $ipAddr[] = $ip;
+ }
+ return $ipAddr;
+ }
+
+ public function getInfo($ip) {
+ if (!filter_var($ip, FILTER_VALIDATE_IP)) { // IP地址不合法
+ return array(
+ 'text' => 'Illegal IP Address'
+ );
+ }
+ $info = json_decode(file_get_contents($this->apiPath . $ip), true);
+ if ($info['status'] !== 'T') { // 上游接口错误
+ return array(
+ 'text' => 'Server Error'
+ );
+ }
+ $msg = 'IP: ' . $info['ip'] . '
' . PHP_EOL;
+ if ($info['as'] != NULL) {
+ $msg .= 'AS: ';
+ $msg .= $info['as'] . '' . PHP_EOL;
+ }
+ if ($info['loc'] != NULL) {
+ $msg .= 'Location: ';
+ $msg .= $this->coorFormat($info['loc']) . '' . PHP_EOL;
+ }
+ if ($info['city'] != NULL) { $msg .= 'City: ' . $info['city'] . PHP_EOL; }
+ if ($info['region'] != NULL) { $msg .= 'Region: ' . $info['region'] . PHP_EOL; }
+ if ($info['country'] != NULL) { $msg .= 'Country: ' . $info['country'] . PHP_EOL; }
+ if ($info['timezone'] != NULL) { $msg .= 'Timezone: ' . $info['timezone'] . PHP_EOL; }
+ if ($info['isp'] != NULL) { $msg .= 'ISP: ' . $info['isp'] . PHP_EOL; }
+ if ($info['scope'] != NULL) { $msg .= 'Scope: ' . $info['scope'] . '
' . PHP_EOL; }
+ if ($info['detail'] != NULL) { $msg .= 'Detail: ' . $info['detail'] . PHP_EOL; }
+ return array(
+ 'parse_mode' => 'HTML', // HTML格式输出
+ 'disable_web_page_preview' => 'true', // 不显示页面预览
+ 'text' => $msg,
+ 'reply_markup' => json_encode(array( // 显示按钮
+ 'inline_keyboard' => array([[
+ 'text' => 'View on echoIP',
+ 'url' => 'https://ip.dnomd343.top/?ip=' . $ip
+ ]])
+ ))
+ );
+ }
+}
+
+function ipInfo($rawParam) { // IP查询入口
+ global $chatId;
+ if ($rawParam == '' || $rawParam === 'help') { // 显示使用说明
+ sendMessage($chatId, array(
+ 'parse_mode' => 'Markdown',
+ 'text' => '*Usage:* `/ip IPv4/IPv6/Domain`',
+ 'reply_markup' => json_encode(array( // 显示echoIP按钮
+ 'inline_keyboard' => array([[
+ 'text' => 'Get my IP address',
+ 'url' => 'https://ip.dnomd343.top/'
+ ]])
+ ))
+ ));
+ return;
+ }
+ if (filter_var($rawParam, FILTER_VALIDATE_IP)) { // 参数为IP地址
+ sendMessage($chatId, (new ipInfo)->getInfo($rawParam));
+ return;
+ }
+ if ((new ipInfo)->isDomain($rawParam)) {
+ $ips = (new ipInfo)->dnsResolve($rawParam);
+ if (count($ips) == 0) { // 解析不到IP记录
+ sendMessage($chatId, array(
+ 'parse_mode' => 'Markdown',
+ 'text' => 'Nothing found of `' . $rawParam . '`'
+ ));
+ return;
+ }
+ foreach ($ips as $ip) {
+ $buttons[] = array([ // 生成按钮列表
+ 'text' => $ip,
+ 'callback_data' => '/ip ' . $ip
+ ]);
+ }
+ if (count($ips) >= 2) {
+ $buttons[] = array([ // 两个及以上的IP 添加显示全部的按钮
+ 'text' => 'Get all detail',
+ 'callback_data' => '/ip ' . $rawParam
+ ]);
+ }
+ sendMessage($chatId, array(
+ 'parse_mode' => 'Markdown',
+ 'text' => 'DNS resolve of `' . $rawParam . '`',
+ 'reply_markup' => json_encode(array( // 显示IP列表按钮
+ 'inline_keyboard' => $buttons
+ ))
+ ));
+ }
+}
+
+function ipInfoCallback($rawParam) { // IP查询回调入口
+ global $chatId;
+ $content = explode(',', $rawParam);
+ if (filter_var($rawParam, FILTER_VALIDATE_IP)) { // 参数为IP地址
+ ipInfo($rawParam);
+ } else { // 参数为域名
+ $ips = (new ipInfo)->dnsResolve($rawParam);
+ foreach ($ips as $ip) {
+ ipInfo($ip); // 逐个输出
+ }
+ }
+}
+
+?>
\ No newline at end of file