首页 > 其他分享 >将socks5列表转换成sing-box格式的json

将socks5列表转换成sing-box格式的json

时间:2024-06-22 22:54:19浏览次数:23  
标签:box count sList mRow mJson function aRet socks5 json

将socks5列表转换成sing-box格式的json

function getRowMap($tag, $server, $port, $user, $pass) {
    $mRow = [];
    $mRow['tag'] = (string)$tag;
    $mRow['type'] = 'socks';
    $mRow['version'] = '5';
    $mRow['server'] = $server;
    $mRow['server_port'] = intval($port);
    $mRow['username'] = $user;
    $mRow['password'] = $pass;
    return $mRow;
}
function getInet4Address($i) {
    $start = ip2long('172.19.0.1');
    return long2ip($start + $i * 4) . '/' . 30;
}
function getInbounds($count) {
    $aRet = [];
    for($i = 0; $i < $count; $i++) {
        $aRet[] = [
            'tag' => (string)$i,
            'type' => 'tun',
            'interface_name' => 'tun' . $i,
            'inet4_address' => getInet4Address($i),
        ];
    }
    return $aRet;
}
function getOutbounds($sList) {
    $sList = str_replace("\r", "\n", $sList);
    $sList = str_replace("\n\n", "\n", $sList);
    $aList = explode("\n", $sList);
    $aRet = [];
    foreach ($aList as $sRow) {
        if (!$sRow) {
            continue;
        }
        $aRow = explode(':', $sRow);
        if ($mRow = getRowMap(count($aRet), $aRow[0], $aRow[1], $aRow[2], $aRow[3])) {
            $aRet[] = $mRow;
        }
    }
    return $aRet;
}
function getRules($count) {
    $aRet = [];
    for($i = 0; $i < $count; $i++) {
        $aRet[] = [
            'inbound' => (string)$i,
            'outbound' => (string)$i,
        ];
    }
    return $aRet;
}
$sList = '';
$aOutbounds = getOutbounds($sList);
$mJson = [];
$mJson['log'] = ['level' => 'error'];
$mJson['inbounds'] = getInbounds(count($aOutbounds));
$mJson['outbounds'] = $aOutbounds;
$mJson['route'] = ['rules' => getRules(count($aOutbounds))];
echo json_encode($mJson, JSON_PRETTY_PRINT);

标签:box,count,sList,mRow,mJson,function,aRet,socks5,json
From: https://www.cnblogs.com/xiangxisheng/p/18262838

相关文章

  • FastJson使用详解
    FastJson文章目录第一章FastJson使用详解这一篇就够了第二章FastJsonHttpMessageConverter类的作用与使用详解第三章Jackson使用详解文章目录FastJson文章目录前言一、FastJson是什么?二、使用步骤1.引入库2.序列化和反序列化Java对象3解析JSON字符串4使用注解......
  • 二、浅谈 JSON 处理技巧
    1.JSON:一种轻量级的数据交换格式,一般接口返回的数据类型都是JSON。JSON的定义格式与字典相同,也是键值对方式,如{key:value}。其实JSON是字符串,由于字符串不能用key、value来取值,所以要先转换为字典才可以。 2.JSON模块常用的四个方法:(1)json.dumps():将Python任意对象......
  • drogon orm分页问题,req->getJsonObject()为空会导致Segmentation fault
    2024年6月22日17:14:12req->getJsonObject()获取json数据的时候,如果没有提前判断if(req->getJsonObject()==nullptr){throwstd::invalid_argument("参数json不能为空");}autojsonPtr=req->getJsonObject();官方文档:h......
  • VBox和HBox的用法及用例
    JavaFX中的VBox和HBox是两种常用的布局组件,分别用于垂直和水平布局。它们继承自Pane类,可以包含多个子节点,并且子节点会按照指定的方向排列。VBox(垂直框)VBox组件按照垂直方向排列子节点,子节点上下排列。基本用法:使用getChildren().add(node)方法添加子节点。可以通......
  • fastjson
    fastjson一、fastjson简介fastjson是java的一个库,可以将java对象转化为json格式的字符串,也可以将json格式的字符串转化为java对象提供了toJSONString()和parseObject()方法来将Java对象与JSON相互转换。调用toJSONString方法即可将对象转换成JSON字符串,parseObject......
  • 什么是json?json可以存放在哪几种数据类型?在什么时候用?
    JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,基于ECMAScript(欧洲计算机协会制定的js规范)的一个子集,采用完全独立于语言的文本格式来存储和表示数据。它使得人们可以很容易地阅读和写入数据,同时也使得机器可以解析和生成数据。JSON可以存放以下几种数据类型:1.字......
  • excel 转json 工具、json检测工具(来自个人学习,编写,自己使用工具)
    推荐一款自己编写的一款软件,excel转json工具(绿色、纯净、免费、共享);因为游戏需要将excel或其它表格转成json工具,以供cocoscreator使用,其它一些工具的比较:1.cocoscreator插件,也有免费的,但主要是效率低,如果excels文件多的时候,转换时间特别的长,无法接受。就是入口方便自......
  • Json工具类
    publicstaticclassJsonHelper{///<summary>///将对象序列化为JSON格式///</summary>///<paramname="o">对象</param>///<returns>json字符串</returns>publicstaticstringSerializeObject(object......
  • 对JSONUtil.toBean()的理解
    在Java中,JSONUtil.toBean()​方法的作用是将JSON格式的数据转换为Java对象。这个方法通常属于一些JSON处理库(例如Hutool库中的JSONUtil),它提供了便捷的方式将JSON字符串中的数据映射到Java对象的相应属性上。这样可以使得开发者能够以面向对象的方式处理JSON数据,而无需手动解析JSO......
  • Android开发系列(六)Jetpack Compose之Box
       Box是一个用来组合和控制子元素布局的组件。它可以在一个矩形区域内排列一个或多个子元素,并根据所提供的参数来控制它们的位置、大小和样式。  Box的功能类似传统的FrameLayout。  下面通过示例了解Box的使用方法,首先看一个最简单的示例,如下所示  这里定......