持久魔法接触=元件修补并屏蔽SIP扫描仪启动.sh
- 在Asterisk开始前将[res pjsip] contact=memory输入巫术.conf; 默认的巫术- astdb SQLite 后端静悄悄地放下所有的 REGISTER 联系人 - 屏蔽已知的SIP扫描仪
Sub-tab content fills full content-area width
Drop the centered max-width constraint (was 920 / 1200 / 680 / 720 depending on tab) on SubTabShell. The page already lives inside SettingsView's content column...
Fix attachment parsing and hasAttachment false positives
Three fixes to EmailImapService: 1. toEnvelope: narrow multipart check to multipart/mixed only — plain HTML+text emails (multipart/alternative) no longer sh...
Add download button to classic view attachment section
The classic view (MessageBrowser) had its own attachment list that was missing the download button — only the conversation view was fixed previously. Also align...
Add com.kamo.z.shared.commerce to EnableJpaRepositories scan
**************** (required by **************** in the shared library) lives under com.kamo.z.shared.commerce but was not included in the JPA repository scan, ca...
适当的布局、贴补和提供者标识
布局/ 间隔修正 : - 所有六个标签(提供、扩展、电话用户、设备、语音邮件、保健) 现在用 TabShell 以 px: {xs: 2, md: 3} py: 3 pb: 6 编码将其内容用 TabShell 包装 。 按钮不再对着面板边缘。 - 粘性双行制表页头图案:图标平板+标题+左侧字幕, 右侧工具栏(搜索框+...
Correct field name and type in getFromAddresses response
Backend was sending 'email' key but frontend expected 'address', and sent type 'shared_mailbox' when frontend expected 'shared'. Also fixes hasMailboxes flag wh...
Load FROM addresses from accessible mailboxes and aliases
Replaces the broken getFromAddresses() endpoint (which sent 'email' instead of 'address') with getAccessibleMailboxes() + listMemberAliases(), matching the same...
使用 CockroachDB 兼容的 DROP INDEX CASCADE 语法
CockroachDB 拒绝“其他表格” .对UNIQUE限制的限制有: 未执行 : 无法使用 UNIQUE 限制“ uk org oauth 提供者” 使用 DROP INDEX 缩写 切换到“ DROP INDEX IF ExISTS < table>@<index > (a) 预防、控制和处理 库克罗克...
将 com.kamo.z. shared. commerce 纳入仓库扫描
最新卡莫共享图书馆宣传 **************** (不修改.dao.services) 建筑师依赖 **************** **************** 这个 服务通过 VOIPService 组件扫描加载,但其寄存器是 超出范围,在启动时引起不满意的依赖性例外. 将 com.kamo.z. s...
平台配置标签( General / VOIP & SMS / System user / Advanced)
环绕 在设置视图中有四个标签 : - 常规:只读平台概览——总类,活动电话服务器 实例计数, 活跃的短消息提供者实例计数, 上次全球 VOIP 同步 时间戳。 读自新QQ - VOIP & SMS:编辑voipSyncIntervalMinutes (1.1440)和voipSyncenabled, 上个 Globa...
添加附件下载按钮并解开已读标记
- 在每个附件行中添加一个下载图标按钮,以便用户强制 文件下载而非仅在新标签中打开 - 从线程装载尝试/捕获中读取 瞬间OTK/网络故障不再作为假线载出 错误或留下邮件为未读
Global VOIP sync job (admin-tunable interval)
VoipGlobalSyncJob ticks every minute and, on each tick, reads the SystemConfiguration singleton to decide whether a global sync is due: - If voipSyncEnabled is ...
系统配置 + 平台概览终点
平台全平台配置表面,由现有顶层所有者守门 guard (matches SystemUserConfig Captain's request ToplevelOwner type). 防守(Matches SystemUserConfig Captain's required ToplevelOwner pattern...
内部同步
代理资源 CRUD(扩展/用户/设备/语音邮件): - VoipExtensions Captain at QQ) 互联网档案馆的存檔,存档日期2011-12-02. - 在/api/voip/Instances/{id}/用户的用户控制器 - VoipDevices 主计长在... - VoipVoicemail C...
多功能提供者重构 + 完全 FreePBX + Flowroute 短消息
核心模型变化:一个Org → 许多VoipProviderInstances(是:每个Org一个). 每个提供者API的呼叫现在都进行实例扫描. 电话提供接口 : - 新的扩展/用户/设备CRUD+语音信箱音频/图像描述方法。 - 新能力旗(扩展管理、用户管理、设备管理; 语音邮件Transcription). 默认...
多问电话/短信供应商迁移
运行于 Hibernate ddl-auto: update 创建新表格之后(VOIP PROVIDER INSTANCE, BULK TEXT PROVIDER INSTENCE,电话 EXTENSION,电话 END USER,电话 DEVICE, 电话: 电话: 电话: 电话: 电话: 电话: 电话: 电话: 电...
多层电话/短信供应商计划基金会
- 重命名 VoipProviderConfig → VoipProviderInstance; 放下 UNIQUE(org id), 添加实例 name, config json, last sync at, last sync error. - 重命名 BulkText Provider Config → Bulk...
将主机Path 从 MinIO( rclone FUSE) 移动到本地 / var/ lib/ pbx
MinIO通过rclone FUSE不支持 POSIX chmod 或 symlink () ——两者 FreePBX的模块系统要求。 更改全部 FreePBX 和 MariaDB 从/mnt/shared-files/pbx/到/var/lib/pbx/的hostPath卷,每卷 节点本地磁盘. FreePBX 数据...
通过php为 MinIO FUSE 主机Path 包装 fwconole/ AMportal
/var/lib/asteric 由 MinIO 支持,通过rclone FUSE 不支持 POSIX chmod,因此fwconsole脚本不能在该卷上被执行. startup.sh 现在在 ephemeral /usr/ local/bin 中创建收尾脚本 直接引用php,再将同音链接/usr/sbin/fwcon...
添加预停钩并终止 GracePeriodseconds
集装箱因背景Asterisk被困在"终结"中 apache2ctl( PID 1) 退出后, 进程继续运行 。 预停钩子发送 在Kubernetes杀死容器之前将SIGTERM送往Asterisk,允许清洁 端口释放并阻止下个吊舱撞击端口使用错误 重新启动时.
添加 poostrap.php 需要重生 /etc/ freepbx.conf
安装者写出 freepbx.conf 有数据源=' 和 request once freepBX 类。 我们的再生成版本都缺失了——导致"Class FreePBX没有找到". 每次启动500个错误 .
重新启动时重生 /etc/freepbx.conf
/etc是平面(不是主机Path),所以/etc/freepbx.conf由The 每次启动时安装器都会丢失 。 添加了其它分支来再生 当靴子被困时,它已经存在,所以管理员UI可以 连接所有后续靴子上的 MariaDB .
绕行开始 ASTErisk, 等待控制套接字代替
启动 asterisk 使用“ pidof 星号 ” , 该星号在 pock 上返回一个假正数 重启,导致等待-Asterisk循环被挂起. 现在启动.sh开始 直接通过 safety asterisk (在清除 soldale socket/pid 文件后) 进行突触 并等待控制套接字文件出现,而不是依赖pidof...
在背景中启动 Asterisk, 等待它, 然后运行安装器
入口.sh 不运行 FreePBX 安装器—— 它只开始 服务。 startup.sh 现在复制入口设置步骤,开始 Asterisk 在背景中, 等待它的套接字准备好, 然后运行 php 安装如果它是第一个靴子,然后在前缘开始Apache. 这可以修复安装时“ 错误与 Asterisk 通讯” 崩溃 .
让入口处理安装,而不是启动.sh
FreePBX 安装器( php s安装 -n) 要求 Asterisk 已经是 运行中。 我们的启动者.sh在Asterisk开始前就打电话了,导致 "与Asterisk的不良通讯"相撞. 现在启动.sh只等待 MariaDB 和补丁 Apache 端口,然后执行图像输入点 首先启动Asterisk,然后在第一个启动...
仅挂载/etc/astrisk, 而非/etc, 以修正 PHP simplexml 错误
将 /etc 全文上载为主机Path 卷正在腐蚀 PHP 扩展 甚至在从图像种子后加载 – simplexml load file 未定义 安装时间。 现在只有/etc/asterisk存在;/etc来自 图像并保持 PHP 配置完整。 第一启动探测器从 /etc/freepbx.conf(ephemeral)至 ...
将CPU限制降低到 2: 1 比例以消除过度承诺
文件 4–1 核心, jibri 4–2 核心, 自由转换 2–1 核心, 贝加莫特2~1核,相接1~0.5核. 将~7.5核从节点限制中省出.
切换到 es 计算机/ freepbx: 17 并带有正确的架构
freepbx没有FreepBX 17图像(自2022年起被放弃). es计算机/freepbx:17(2026年4月更新,Asterisk 21 + FreePBX 17)要求 一个单独的 MariaDB 舱和一个一次性 php 安装步骤。 变化 : - 添加freepbx-mariadb StatefulSet(...
放弃公共管理;通过http://k[12]m1:8088访问
8088号港口的局域网/WireGuard(FreePBX)现在只有内部管理。 nginx 直接绑在主机Network上). 没有Traefik路线, 没有让我们加密 cert,没有PBX本身需要的公用端口80/443转发.
在 k1m1 和 k2m1 上部署 FreePBX 17 + Jigasi SIP桥
FreePBX(已退休/freepbx:17-latest)使用主机Network运行,所以SIP/RTP 保存真实的客户端IP,通过节点Selector被绑定为一号节点. SIP 打开 5060 UDP/TCP (5061 TLS), RTP 范围 18000-18999 为避开Janus所选 (20000年-209...
在转发前分析表格Data以防止二进制腐败
request.text () on multipart/form-data 损坏二进制文件字节; 通过解析为 init.body so forwardToApi 跳过请求. text () 让我们重新生成一个有正确边界的干净多段.
删除 minH8: 100vh 导致双滚动条
外框的 minH8: 100vh 超过了布局的 calc( 100vh - 56px) 容器,既导致浏览器级滚动,也导致内部滚动 溢出: 自动同时活动 。 身高:只有100%就够了.
丢弃编辑器页头, 重命名 General sub- tab
- 删除后行图标按钮+屏蔽图标+标题+字幕 安全模型/主模型编辑器的顶部。 取消按钮 在粘粘的动作栏中已经向后导航,并放下 标题给每个表型都增加了垂直相间. - 将“ 将军” 子塔布重命名为“ 模式配置” , 用于正常安全 模型和主模型编辑器的"Master Model Config",所以 选项卡标签作为上下文重复.
从安全模型表格中去掉 Stale Pay 列头
当雇员自付卡莫费字段被删除时, 匹配 排行体中的 TableCell 被删除, 但标题行仍然有 “团队成员” 给钱,把每个身体柱子一个插槽 左侧头部。 删除孤页眉至此列/ 页眉 宽度再次排列.
GoDaddy 400 个错误背后的表面真实原因
Go Daddy 现在返回 HTTP 400 并带有代码=unable TO AUTHENTICATE和身体 “坏要求:坏要求”当账户不符合其当前状态时 生产域 API 资格( 10+ 账户或一个账户上的域) 活跃的折扣域俱乐部成员)。 证书是完美的 电话仍然失败。 我们的委托人把那个重新写成原始的 "坏求"之体,无用...
检查子 Tab 现在让ATF 成为第一
重排检查分卡以匹配请求的顺序 : 1. 酒精、烟草和火器 2. 允许成员年龄范围 3. 允许雇员(小组成员)的年龄范围 其它子塔布已经按照正确的顺序排列(通则: 基本信息/能见度/谁能创建/平台设置/ 域配置 / 商业市场; 允许的应用程序和默认安全 角色为单节分页.
平台-admin视图、页码、活搜索、过滤器、 org 标志
平台管理员(顶级的 org 拥有者)现在通过 新的/api/security/org/all-networks端点,而不仅仅是自己的成员。 标题和字幕更新以反映管理员的背景。 其他改进: - 铺设:客户端,默认25页/页,可配置(10/25/50/100) - 实时搜索:按标题、短标题或域名进行过滤 - 过滤芯片: ...
为平台管理员添加 GET/api/security/org/all-networks
顶级的Org 拥有者现在可以通过 与打电话者相关的会员信息。 呼叫者有成员的地方的鸟类 记录获取是Owner/memberId人口;其他人得到成员ID:无效,是Owner:假. endpoint强制要求调用者既位于顶层的Org,也是所有者.
安全模型编辑器+清理中的子标签
- 安全模型编辑器现在分了 入四个子目录: 常规(基本信息、可见度、谁能创建、 平台设置、域配置、商业市场、审查(酒精/ 烟草/火器+成员+成员年龄范围),允许的Apps,以及 默认安全角色 。 - 穝 让管理员编辑一个模型 允许 RootSubdomains 旗和父名与其余部分并列 模型的设置 。 之前这个住在Or...
从 DataLoader 调试组成员PayFees 排序
主型提供商不再通过取消的三州付费 当创建主安全模型时设置——字段从 ChildOrg Security Model及其服务超载.
丢弃团队 MemberPayFees 设置参数
映射共享图书馆的改变——安全模型控制器, 主模型控制器和应用程序模型控制器不再读取/写入 团队成员PayFeesSetting。 分支类型编辑器的平面自给 选择与 Billing Group 重构一起删除 .
投放队 成员付费投票
雇员自付费用政策已不复存在——计费集团重置 按组计费,不通过安全模式。 删除 团队成员PayFeesSetting 列 从 ChildOrg Security Model, 匹配 来自 ChildOrg Security ModelDTO 的字段,以及每个进取器/进取器/过载 ChildOrg安全模式服务。 删除付费助...
通过 findByIdWith Domains 下载域, 放下@ Transactional
@ Transactional 在一个控制器方法上保持一个 DB 连接打开 上传整个MinIO, 并有LazyInitialization Exception的风险 如果 内部获取 OrganizationById 交易在解析PrimaryDomain 之前执行 访问 org.getDomains (). 使用 fin...
从 apiPath 删除重复类型
extToApi 已经附加了来自原文件的搜索(?type=...) 请求 URL。 嵌入? type = 在 apiPath 中第二次生产 * type=full?type=full 在后端,所以Spring解析类型为 "完整"(full?type=full)——从不等于"完整"——使所有标志都落地. 在标志。 svg...
恢复 int64 成员ID 的邮箱切换器
使用 Get MemberIdString 来获取信箱/ 成员, 正常 id/ mailboxId 从电子邮件服务中驱动切换器 在有邮箱的情况下,JS号码的强制不能脱去身份证的精度.
分支类型页面上的异名能见度 UI + Subdomain 分支按钮
子域名 BranchesDialog : - 别名编辑器将芯片列表替换为表格式行列表显示 成员和小组成员的复选框/别名——管理控制 创建者类型在/network/create中看到每个父名称 - 在更新的 ModelSubdomain 签名上更新,以通过完全别名对象 (别名,可见"ToMembers",可见"ToTea...
别名能见度过滤 + 自动验证子域所有权
组织主计长: - Web-alies org 创建现在自动标记所有权 isDnsVerified=real on the created OrgDomain——自此以后不需要TXT记录 我们代表他们为Go Daddy提供了DNS - CUSTOM 父AliasType 路径现在执行 per-alias 创建者类型可见度...
