|
窗口程序集名 | 保 留 | 保 留 | 备 注 | 窗口程序集_启动窗口 | | | | 变量名 | 类 型 | 数组 | 备 注 | 集_API密钥 | 文本型 | | 集_域名 | 文本型 | | 集_服务器地址 | 文本型 | |
按钮_导入账号.标题 = "导入账号" 按钮_开始创建.标题 = "开始创建" 按钮_开始创建.禁止 = 真 编辑框_结果.是否允许多行 = 真 编辑框_结果.滚动条 = 2 进度条1.位置 = 0 .局部变量 文件路径, 文本型 .局部变量 文件内容, 文本型 .局部变量 账号列表, 文本型, , "0" .局部变量 i, 整数型 文件路径 = 打开文件对话框 ("选择账号文件", " 文本文件 (*.txt )|*.txt", , "账号列表.txt" ) 如果 (文件路径 = "" ) 返回 () 如果 (文件是否存在 (文件路径 ))  文件内容 = 到文本 (读入文件 (文件路径 ))  账号列表 = 分割文本 (文件内容, #换行符, )  如果 (取数组成员数 (账号列表 ) > 0 )  列表框_账号. 清空 ()  计次循环首 (取数组成员数 (账号列表 ), i )   如果 (账号列表 [i ] ≠ "" )    列表框_账号. 加入项目 (账号列表 [i ], )    计次循环尾 ()  按钮_开始创建.禁止 = 假   标签_状态.标题 = "已导入" + 到文本 (列表框_账号. 取项目数 ()) + "个账号"   信息框 ("文件内容为空", 0, "错误", ) 信息框 ("文件不存在", 0, "错误", )   .局部变量 账号数量, 整数型   集_服务器地址 = 编辑框_服务器地址.内容  集_域名 = 编辑框_域名.内容  集_API密钥 = 编辑框_API密钥.内容   如果 (集_服务器地址 = "" 或 集_域名 = "" 或 集_API密钥 = "" ) 信息框 ("请填写完整服务器信息", 0, "提示", ) 返回 ()  账号数量 = 列表框_账号. 取项目数 () 如果 (账号数量 = 0 ) 信息框 ("没有可创建的账号", 0, "提示", ) 返回 ()  按钮_开始创建.禁止 = 真  按钮_导入账号.禁止 = 真  进度条1.最大位置 = 账号数量  进度条1.位置 = 0  编辑框_结果.内容 = ""  线程_启动 (&批量创建账号, , ) .局部变量 i, 整数型  .局部变量 账号信息, 文本型  .局部变量 用户名, 文本型  .局部变量 密码, 文本型  .局部变量 配额, 文本型  .局部变量 结果, 文本型  .局部变量 成功数, 整数型  .局部变量 失败数, 整数型   成功数 = 0  失败数 = 0   计次循环首 (列表框_账号. 取项目数 (), i )  账号信息 = 列表框_账号. 取项目文本 (i - 1 )     如果 (文本_分割 (账号信息, ":", 用户名, 密码, 配额 ) < 3 )   结果 = "第" + 到文本 (i ) + "行格式错误: " + 账号信息 + #换行符    编辑框_结果. 加入文本 (结果 )   失败数 = 失败数 + 1   到循环尾 ()     如果 (创建邮箱账号 (用户名, 密码, 配额 ))    结果 = "成功创建: " + 用户名 + "@" + 集_域名 + #换行符    成功数 = 成功数 + 1    结果 = "创建失败: " + 用户名 + "@" + 集_域名 + #换行符    失败数 = 失败数 + 1     编辑框_结果. 加入文本 (结果 )  进度条1.位置 = i  处理事件 () 计次循环尾 ()  编辑框_结果. 加入文本 ("创建完成! 成功: " + 到文本 (成功数 ) + " 失败: " + 到文本 (失败数 ) + #换行符 ) 按钮_开始创建.禁止 = 假  按钮_导入账号.禁止 = 假 |
创建邮箱账号 | 逻辑型 | | |
用户名 | 文本型 | | | | 密码 | 文本型 | | | | 配额 | 文本型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | API地址 | 文本型 | | | POST数据 | 文本型 | | | 协议头 | 文本型 | | | 响应 | 文本型 | | | JSON | 类_json | | |
API地址 = "https://" + 集_服务器地址 + "/api/v1/add/mailbox" POST数据 = "local_part=" + 用户名 +  "&domain=" + 集_域名 +  "&password=" + 密码 +  "&password2=" + 密码 +  ""a=" + 配额 +  "&active=1" +  "&force_pw_update=0" +  "&tls_enforce_in=0" +  "&tls_enforce_out=0" 协议头 = "Content-Type: application/x-www-form-urlencoded" + #换行符 +  "X-API-Key: " + 集_API密钥 响应 = 到文本 (网页_访问_对象 (API地址, 1, POST数据, , , 协议头, , , , , , , , , , , )) 如果 (JSON. 解析 (响应 ))  如果 (JSON. 取通用属性 ("type" ) = "success" ) 返回 (真) 输出调试文本 ("创建失败: " + JSON. 取通用属性 ("msg" )) 输出调试文本 ("JSON解析失败: " + 响应 )  返回 (假) .局部变量 测试结果, 逻辑型   集_服务器地址 = 编辑框_服务器地址.内容  集_API密钥 = 编辑框_API密钥.内容   如果 (集_服务器地址 = "" 或 集_API密钥 = "" ) 信息框 ("请填写服务器地址和API密钥", 0, "提示", ) 返回 ()  测试结果 = 测试API连接 () 如果 (测试结果 ) 信息框 ("API连接成功", 0, "成功", ) 信息框 ("API连接失败", 0, "错误", )   变量名 | 类 型 | 静态 | 数组 | 备 注 | API地址 | 文本型 | | | 协议头 | 文本型 | | | 响应 | 文本型 | | | JSON | 类_json | | |
API地址 = "https://" + 集_服务器地址 + "/api/v1/get/domain/all" 协议头 = "X-API-Key: " + 集_API密钥 响应 = 到文本 (网页_访问_对象 (API地址, 0, , , , 协议头, , , , , , , , , , , )) 如果 (JSON. 解析 (响应 ))  如果 (JSON. 取通用属性 ("type" ) = "success" ) 返回 (真)   返回 (假) .局部变量 选中项, 整数型   选中项 = 列表框_账号.现行选中项  如果 (选中项 ≥ 0 )  按钮_删除选中.禁止 = 假   按钮_删除选中.禁止 = 真     .局部变量 选中项, 整数型   选中项 = 列表框_账号.现行选中项  如果 (选中项 ≥ 0 )  列表框_账号. 删除项目 (选中项 )  标签_状态.标题 = "已导入" + 到文本 (列表框_账号. 取项目数 ()) + "个账号"   如果 (列表框_账号. 取项目数 () = 0 )  按钮_删除选中.禁止 = 真   按钮_开始创建.禁止 = 真     .局部变量 用户名, 文本型  .局部变量 密码, 文本型  .局部变量 配额, 文本型  .局部变量 账号信息, 文本型   用户名 = 输入框 ("请输入用户名", "添加账号", ) 如果 (用户名 = "" ) 返回 ()  密码 = 输入框 ("请输入密码", "添加账号", ) 如果 (密码 = "" ) 返回 ()  配额 = 输入框 (" 请输入邮箱配额 (MB )", "添加账号", "1024" ) 如果 (配额 = "" )  配额 = "1024"   账号信息 = 用户名 + ":" + 密码 + ":" + 配额  列表框_账号. 加入项目 (账号信息, ) 按钮_开始创建.禁止 = 假  标签_状态.标题 = "已导入" + 到文本 (列表框_账号. 取项目数 ()) + "个账号"   
编辑框_服务器地址:Mailcow服务器地址(如:mail.example.com)
编辑框_域名:邮箱域名(如:example.com)
编辑框_API密钥:Mailcow API密钥
列表框_账号:显示待创建的账号列表
按钮_导入账号:从文本文件导入账号
按钮_添加账号:手动添加单个账号
按钮_删除选中:删除选中的账号
按钮_测试连接:测试API连接
按钮_开始创建:开始批量创建账号
进度条1:显示创建进度
编辑框_结果:显示创建结果
账号文件应为文本文件(.txt),每行一个账号,格式为:用户名:密码:配额
john:Passw0rd!1024
lisa:Secure#123:2048
mike:StrongP@ss:512
|
|