fix 忘记密码发短信报错,http请求超时时间修改
This commit is contained in:
parent
a88a846c97
commit
2fb09b7252
|
|
@ -22,26 +22,26 @@
|
|||
<body>
|
||||
<h2 align="center">服务条款</h2>
|
||||
<hr/>
|
||||
<p class="font_content">为维护双方利益,根据相关法律、法规的规定,双方在平等、自愿、公平、诚信的基础上,VPN科技(以下简称“VPN”)旗下产品VPN客户端(以下简称“VPN”)就用户购买跨境互联网虚拟专用网络服务(以下简称“服务”)的相关事宜达成如下协议,请您务必审慎阅读、充分理解各条款内容,特别是免除或者限制责任的条款、法律适用和争议解决条款,您应重点阅读。如您对协议有任何疑问,可向我方平台客服咨询,协议如下:</p>
|
||||
<p class="font_content">为维护双方利益,根据相关法律、法规的规定,双方在平等、自愿、公平、诚信的基础上,加速器科技(以下简称“加速器”)旗下产品加速器客户端(以下简称“加速器”)就用户购买跨境互联网虚拟专用网络服务(以下简称“服务”)的相关事宜达成如下协议,请您务必审慎阅读、充分理解各条款内容,特别是免除或者限制责任的条款、法律适用和争议解决条款,您应重点阅读。如您对协议有任何疑问,可向我方平台客服咨询,协议如下:</p>
|
||||
|
||||
<p class="font_content">a) Our goal is to provide quality service to all customers. Please read these terms of service carefully before you access the site or the service. <br/>
|
||||
</p>
|
||||
<p class="font_content">b) These Terms of Service (“the Terms”) govern your use of the 影猫VPN and the associated website domains (the “Site”) and related service (the “Services”), which are owned and operated by the 影猫VPN Team (“影猫VPN,” “our”, “we” or “us”). The Terms constitute a legally binding agreement (the “Agreement”) between you and the 影猫 VPN Team.</p>
|
||||
<p class="font_content">b) These Terms of Service (“the Terms”) govern your use of the 影猫加速器 and the associated website domains (the “Site”) and related service (the “Services”), which are owned and operated by the 影猫加速器 Team (“影猫加速器,” “our”, “we” or “us”). The Terms constitute a legally binding agreement (the “Agreement”) between you and the 影猫 加速器 Team.</p>
|
||||
<p class="font_subtitle">
|
||||
影猫VPN Service
|
||||
影猫加速器 Service
|
||||
</p>
|
||||
<p class="font_content">a) You understand that we are providing you with a virtual private network (or "VPN") service, which includes, but is not limited to, the use of servers, transport, routers, IP addresses and other equipment and protocols to transmit information over our network (the "System"). You agree to abide by the Terms with respect to your use of the Service.</p>
|
||||
<p class="font_content">a) You understand that we are providing you with a virtual private network (or "加速器") service, which includes, but is not limited to, the use of servers, transport, routers, IP addresses and other equipment and protocols to transmit information over our network (the "System"). You agree to abide by the Terms with respect to your use of the Service.</p>
|
||||
<p class="font_subtitle">
|
||||
Usage Policy
|
||||
</p>
|
||||
<p class="font_content">a) BY USING 影猫 VPN SERVICE (the "Service") YOU AGREE:</p>
|
||||
<p class="font_content">a) BY USING 影猫 加速器 SERVICE (the "Service") YOU AGREE:</p>
|
||||
<p class="font_content">a) NOT to use the system for sending spam, port scanning, scanning for open proxies or open relays, sending opt-in email, unsolicited email or any type or version of email sent in large quantities even if the email is ultimately sent off of another server.</p>
|
||||
<p class="font_content">b) NOT to launch any pop-ups from our service.</p>
|
||||
<p class="font_content">c) NOT to attack in any way shape or form any other computer or network while on our service.</p>
|
||||
<p class="font_content">d) NOT to use the service for things that could hurt our network or other people.</p>
|
||||
<p class="font_content">b) It is the user responsibility to know and comprehend any and all relevant laws related to any jurisdiction or venue that concerns you and your actions. 影猫 VPN is not liable in any way or form for actions done by its users including a criminal liability and a civil liability for harm executed or not executed beyond any money paid to 影猫 VPN for its services by a concrete individual.</p>
|
||||
<p class="font_content">c) Violations of this Usage Policy or the Terms may result in termination of your account, without any refund of amounts previously paid for the Service. Additionally, you may be held responsible for any and all damages incurred to 影猫 VPN, including any amounts charged by any outside entity due to said violation(s), including attorney’s fees and costs without limitation.</p>
|
||||
<p class="font_content">d) 影猫 VPN enables you to download software, software updates or patches, or other utilities and tools onto your mobile phones or Internet-enabled device. 影猫 VPN ("the Software") grants to you a nonexclusive, limited license to use the Software solely for the purpose stated by 影猫 VPN at the time the Software is made available to you and in accordance with these Terms. Modifying, distributing to unauthorized parties, reverse engineering, or otherwise using the Software in any way not expressly authorized by 影猫 VPN, is strictly prohibited.</p>
|
||||
<p class="font_content">b) It is the user responsibility to know and comprehend any and all relevant laws related to any jurisdiction or venue that concerns you and your actions. 影猫 加速器 is not liable in any way or form for actions done by its users including a criminal liability and a civil liability for harm executed or not executed beyond any money paid to 影猫 加速器 for its services by a concrete individual.</p>
|
||||
<p class="font_content">c) Violations of this Usage Policy or the Terms may result in termination of your account, without any refund of amounts previously paid for the Service. Additionally, you may be held responsible for any and all damages incurred to 影猫 加速器, including any amounts charged by any outside entity due to said violation(s), including attorney’s fees and costs without limitation.</p>
|
||||
<p class="font_content">d) 影猫 加速器 enables you to download software, software updates or patches, or other utilities and tools onto your mobile phones or Internet-enabled device. 影猫 加速器 ("the Software") grants to you a nonexclusive, limited license to use the Software solely for the purpose stated by 影猫 加速器 at the time the Software is made available to you and in accordance with these Terms. Modifying, distributing to unauthorized parties, reverse engineering, or otherwise using the Software in any way not expressly authorized by 影猫 加速器, is strictly prohibited.</p>
|
||||
<p class="font_subtitle">
|
||||
Disclaimers
|
||||
</p>
|
||||
|
|
@ -54,22 +54,22 @@
|
|||
<p class="font_subtitle">
|
||||
第一条 服务范围
|
||||
</p>
|
||||
<p class="font_content">1.1 VPN向申请主体(以下简称“用户”)提供服务,用户按照本协议约定的条款接受服务。</p>
|
||||
<p class="font_content">1.1 加速器向申请主体(以下简称“用户”)提供服务,用户按照本协议约定的条款接受服务。</p>
|
||||
|
||||
<p class="font_subtitle">
|
||||
第二条 账户注册及用户资料
|
||||
</p>
|
||||
<p class="font_content">2.1 用户下载VPN客户端后,首次使用手机号和验证码登录即为注册;</p>
|
||||
<p class="font_content">2.2 用户在使用VPN提供的服务时,应使用真实、准确的手机号进行注册或登录,不得冒用他人手机号,若因冒用他人手机号而产生了纠纷或损失,由客户自行承担;</p>
|
||||
<p class="font_content">2.3 VPN对用户资料依法保密,但为建立与用户沟通渠道,改善服务工作,VPN可以使用本协议涉及的用户资料;</p>
|
||||
<p class="font_content">2.4 用户应妥善保管手机号和验证码,因用户原因造成的用户验证码遗失或被他人获取造成的责任、损失,VPN不予承担。</p>
|
||||
<p class="font_content">2.1 用户下载加速器客户端后,首次使用手机号和验证码登录即为注册;</p>
|
||||
<p class="font_content">2.2 用户在使用加速器提供的服务时,应使用真实、准确的手机号进行注册或登录,不得冒用他人手机号,若因冒用他人手机号而产生了纠纷或损失,由客户自行承担;</p>
|
||||
<p class="font_content">2.3 加速器对用户资料依法保密,但为建立与用户沟通渠道,改善服务工作,加速器可以使用本协议涉及的用户资料;</p>
|
||||
<p class="font_content">2.4 用户应妥善保管手机号和验证码,因用户原因造成的用户验证码遗失或被他人获取造成的责任、损失,加速器不予承担。</p>
|
||||
|
||||
<p class="font_subtitle">
|
||||
第三条 业务使用
|
||||
</p>
|
||||
<p class="font_content">3.1 用户确认开始使用/注册程序使用我方平台服务前,应当具备中华人民共和国法律规定的与您行为相适应的民事行为能力。若用户不具备前述与用户行为相适应的民事行为能力,则应获得监护人的知情同意,用户及用户的监护人应依照法律规定承担因此而导致的相应的责任。如果用户是未成年人,请在用户的监护人同意和指导下访问和/或使用我方服务;</p>
|
||||
<p class="font_content">3.2 用户使用服务时,应遵守中华人民共和国的法律、法规、规章等相关规定;</p>
|
||||
<p class="font_content">3.3 VPN提供的服务仅限成功注册并缴费的用户使用,若因用户将服务提供给第三方使用等而产生的责任及损失,由用户自行承担;</p>
|
||||
<p class="font_content">3.3 加速器提供的服务仅限成功注册并缴费的用户使用,若因用户将服务提供给第三方使用等而产生的责任及损失,由用户自行承担;</p>
|
||||
<p class="font_content">3.4 官网公布的方式,为下载、注册、登录、使用我方服务的唯一合法途径,您通过其他任何方式获取的我方服务均为非法取得,我方概不承认其效力,一经发现,我方有权立即做出删除、取消、暂停、封号等处理,任何因此导致的一切不利后果均由用户自行承担。我方保留向相关责任主体追究法律责任的权利。</p>
|
||||
|
||||
<p class="font_subtitle">
|
||||
|
|
@ -77,20 +77,20 @@
|
|||
</p>
|
||||
<p class="font_content">4.1 服务的计费周期为:用户首次登录时系统默认赠送 24 小时免费体验,如需续期,则按官网及客户端展示的租期费用执行,具体租期分为 1 个月、6 个月和 1 年,支付方式可选择微信、支付宝等;</p>
|
||||
<p class="font_content">4.2 如有政策调整,自调整时间起按新标准执行。</p>
|
||||
<p class="font_content">4.3 租期服务期限以用户自行选择并支付相应费用的期限为准,租期服务到期后,VPN将停止继续向用户提供相关服务;</p>
|
||||
<p class="font_content">4.3 租期服务期限以用户自行选择并支付相应费用的期限为准,租期服务到期后,加速器将停止继续向用户提供相关服务;</p>
|
||||
|
||||
<p class="font_subtitle">
|
||||
第五条 服务质量与用户服务
|
||||
</p>
|
||||
<p class="font_content">5.1 VPN会在官网等公布相关事宜的服务项目、服务时限、服务范围、使用规则、交费规定等内容。</p>
|
||||
<p class="font_content">5.2 VPN负责向用户提供VPN客户端的下载、安装、注册、登录、使用等方面的咨询服务;</p>
|
||||
<p class="font_content">5.3 因VPN原因造成通信障碍,且不能修复的,VPN免收故障期间的服务费,按天计算(另有约定的除外)。VPN不赔偿因故障造成的其他损失。故障时间的计算,以VPN接到用户申告或VPN查出障碍的时间起至恢复使用为止。</p>
|
||||
<p class="font_content">5.1 加速器会在官网等公布相关事宜的服务项目、服务时限、服务范围、使用规则、交费规定等内容。</p>
|
||||
<p class="font_content">5.2 加速器负责向用户提供加速器客户端的下载、安装、注册、登录、使用等方面的咨询服务;</p>
|
||||
<p class="font_content">5.3 因加速器原因造成通信障碍,且不能修复的,加速器免收故障期间的服务费,按天计算(另有约定的除外)。加速器不赔偿因故障造成的其他损失。故障时间的计算,以加速器接到用户申告或加速器查出障碍的时间起至恢复使用为止。</p>
|
||||
|
||||
<p class="font_subtitle">
|
||||
第六条 协议中止和解除
|
||||
</p>
|
||||
<p class="font_content">6.1 本协议有效期与用户购买的服务时长一致。</p>
|
||||
<p class="font_content">6.2 用户有下列情形之一的,VPN可以终止服务并不承担责任,已收取的费用不做退回:</p>
|
||||
<p class="font_content">6.2 用户有下列情形之一的,加速器可以终止服务并不承担责任,已收取的费用不做退回:</p>
|
||||
<p class="font_content">(1)用户违反本协议约定,我方依据违约条款终止本协议的;</p>
|
||||
<p class="font_content">(2)用户转借账号、盗用他人账号、发布违禁内容和信息、骗取他人财物、采取不正当手段谋利等行为,我方依据我方平台规则对您的账号予以查封的;</p>
|
||||
<p class="font_content">(3)除上述情形外,因用户多次违反我方平台规则相关规定且情节严重,我方依据我方平台规则对您的账户予以查封的;</p>
|
||||
|
|
@ -100,8 +100,8 @@
|
|||
<p class="font_subtitle">
|
||||
第七条 不可抗力及免责
|
||||
</p>
|
||||
<p class="font_content">7.1 由于不可抗力,如战争、电力故障,罢工,暴乱、自然灾害等,鉴于互联网的特殊性,不可抗力还包括黑客攻击、运营商网络通讯中断及其他非因VPN过错产生的系统故障等导致本协议不能履行的,VPN均无需承担违约责任。</p>
|
||||
<p class="font_content">7.2 如政府、司法行政机关等相关管理部门提出要求,暂停或终止提供相应服务,VPN不承担任何责任。</p>
|
||||
<p class="font_content">7.1 由于不可抗力,如战争、电力故障,罢工,暴乱、自然灾害等,鉴于互联网的特殊性,不可抗力还包括黑客攻击、运营商网络通讯中断及其他非因加速器过错产生的系统故障等导致本协议不能履行的,加速器均无需承担违约责任。</p>
|
||||
<p class="font_content">7.2 如政府、司法行政机关等相关管理部门提出要求,暂停或终止提供相应服务,加速器不承担任何责任。</p>
|
||||
|
||||
<p class="font_subtitle">
|
||||
第八条 争议解决
|
||||
|
|
@ -111,15 +111,15 @@
|
|||
<p class="font_subtitle">
|
||||
第九条 用户服务协议变更
|
||||
</p>
|
||||
<p class="font_content">9.1 VPN更新用户服务协议、隐私权政策及相关平台规则(统称“服务协议”),届时协议更新会通过官网提示、短信推送或客户端公告等方式通知和提醒用户注意。 服务协议变更后,若用户继续使用VPN服务,即表示用户同意接受VPN更新后的服务协议。若用户不同意变更后的服务协议,请用户停止使用VPN服务。</p>
|
||||
<p class="font_content">9.1 加速器更新用户服务协议、隐私权政策及相关平台规则(统称“服务协议”),届时协议更新会通过官网提示、短信推送或客户端公告等方式通知和提醒用户注意。 服务协议变更后,若用户继续使用加速器服务,即表示用户同意接受加速器更新后的服务协议。若用户不同意变更后的服务协议,请用户停止使用加速器服务。</p>
|
||||
|
||||
<p class="font_subtitle">
|
||||
第十条 附则
|
||||
</p>
|
||||
<p class="font_content">10.1 本协议自订立、生效、解释、修订、补充、终止、执行与争议解决均适用中华人民共和国法律;如法律无相关规定的,参照商业惯例及/或行业惯例;</p>
|
||||
<p class="font_content">10.2 VPN保留因技术进步或国家政策变动等原因对服务做出调整的权利,但调整时应提前告知用户并提供相应解决方案;</p>
|
||||
<p class="font_content">10.3 VPN可以采用电话、互联网等渠道进行业务公告或业务通知;</p>
|
||||
<p class="font_content">10.4 用户下载并注册VPN客户端时即表示已默认同意本服务协议,此服务协议自用户注册之日起生效;</p>
|
||||
<p class="font_content">10.2 加速器保留因技术进步或国家政策变动等原因对服务做出调整的权利,但调整时应提前告知用户并提供相应解决方案;</p>
|
||||
<p class="font_content">10.3 加速器可以采用电话、互联网等渠道进行业务公告或业务通知;</p>
|
||||
<p class="font_content">10.4 用户下载并注册加速器客户端时即表示已默认同意本服务协议,此服务协议自用户注册之日起生效;</p>
|
||||
<p class="font_content">10.5 本协议任一条款被视为废止、无效或不可执行,该条应视为可分的且并不影响本协议其余条款的有效性及可执行性。</p><br/>
|
||||
|
||||
<!-- <p align="center" class="font_foot">-->
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<p class="font_subtitle">
|
||||
引言
|
||||
</p>
|
||||
<p class="font_content">VPN非常重视您的隐私。因此,我们制定了涵盖如何收集、使用、披露、转让以及存储您的信息的隐私政策。如您使用或继续使用我们的服务,都表示您同意我们按照本《VPN隐私政策》收集、使用、储存和分享您的信息。请花些时间熟悉我们针对客户隐私的做法,如有任何疑问,请联系我们。</p>
|
||||
<p class="font_content">影猫非常重视您的隐私。因此,我们制定了涵盖如何收集、使用、披露、转让以及存储您的信息的隐私政策。如您使用或继续使用我们的服务,都表示您同意我们按照本《影猫隐私政策》收集、使用、储存和分享您的信息。请花些时间熟悉我们针对客户隐私的做法,如有任何疑问,请联系我们。</p>
|
||||
|
||||
<p class="font_subtitle">
|
||||
信息收集
|
||||
|
|
@ -49,25 +49,25 @@
|
|||
<p class="font_subtitle">
|
||||
信息使用
|
||||
</p>
|
||||
<p class="font_content">VPN利用收集的信息来提供、维护、保护和改进服务,同时开发新的服务为用户创造更好的体验,并提高我们的总体服务品质。</p>
|
||||
<p class="font_content">影猫利用收集的信息来提供、维护、保护和改进服务,同时开发新的服务为用户创造更好的体验,并提高我们的总体服务品质。</p>
|
||||
|
||||
<p class="font_subtitle">
|
||||
您理解并同意,VPN可在如下情形使用您的信息:
|
||||
您理解并同意,影猫可在如下情形使用您的信息:
|
||||
</p>
|
||||
<p class="font_content">1)向您提供服务,特别是为您提供定制服务;</p>
|
||||
<p class="font_content">2)在我们提供服务时,用于身份验证、客户服务、安全防范、诈骗监测、存档和备份用途,确保我们向您提供的产品和服务的安全性;</p>
|
||||
<p class="font_content">3)帮助我们设计新服务,改善我们现有服务;</p>
|
||||
<p class="font_content">4)向您提供与您更加相关的广告以替代普遍投放的广告;</p>
|
||||
<p class="font_content">5)评估我们服务中的广告和其他促销及推广活动的效果,并加以改善;</p>
|
||||
<p class="font_content">6)VPN可能会对产品使用情况进行统计,并可能会与公众分享这些统计信息,以展示我们服务的整体使用趋势;</p>
|
||||
<p class="font_content">6)影猫可能会对产品使用情况进行统计,并可能会与公众分享这些统计信息,以展示我们服务的整体使用趋势;</p>
|
||||
<p class="font_content">7)软件认证或管理软件升级;</p>
|
||||
<p class="font_content">8)其他有利于为您提供服务的情形。</p>
|
||||
|
||||
<p class="font_subtitle">
|
||||
信息披露
|
||||
</p>
|
||||
<p class="font_content">除以下情形外,未经您的同意,VPN不会与任何第三方分享您的个人信息。</p>
|
||||
<p class="font_content">VPN可能将您的个人信息与我们的关联公司、合作伙伴及第三方服务供应商、承包商及代理(例如代表我们发出电子邮件或推送通知的通讯服务提供商)分享(他们可能并非位于您所在的法域),用作下列用途:</p>
|
||||
<p class="font_content">除以下情形外,未经您的同意,影猫不会与任何第三方分享您的个人信息。</p>
|
||||
<p class="font_content">影猫可能将您的个人信息与我们的关联公司、合作伙伴及第三方服务供应商、承包商及代理(例如代表我们发出电子邮件或推送通知的通讯服务提供商)分享(他们可能并非位于您所在的法域),用作下列用途:</p>
|
||||
<p class="font_content">1)向您提供我们的服务;</p>
|
||||
<p class="font_content">2)实现“我们可能如何使用信息”部分所述目的;</p>
|
||||
<p class="font_content">3)理解、维护和改善我们的服务。</p>
|
||||
|
|
@ -75,7 +75,7 @@
|
|||
<p class="font_subtitle">
|
||||
信息安全
|
||||
</p>
|
||||
<p class="font_content">我们仅在本《VPN隐私政策》所述目的所必需的期间和法律法规要求的时限内,保留您的个人信息。</p>
|
||||
<p class="font_content">我们仅在本《加速器隐私政策》所述目的所必需的期间和法律法规要求的时限内,保留您的个人信息。</p>
|
||||
<p class="font_content">我们会使用各种安全技术和程序,以防信息的丢失、不当使用、未经授权阅览或披露。例如,在某些服务中,我们将利用加密技术(例如 SSL)来保护您提供的个人信息。但请您理解,由于技术的限制以及可能存在的各种恶意手段,在互联网行业,即便竭尽所能加强安全措施,也不可能始终保证信息百分之百的安全。您需要了解,您接入我们的服务所用的系统和通讯网络,有可能因我们可控范围外的因素而出现问题。</p>
|
||||
|
||||
<p class="font_subtitle">
|
||||
|
|
@ -86,7 +86,7 @@
|
|||
<p class="font_subtitle">
|
||||
信息收集
|
||||
</p>
|
||||
<p class="font_content">VPN可能会收集或使用您的信息,并将这些信息储存为日志信息,目的是为您提供更个性化的用户体验和服务,并用于以下用途:记住您的身份、分析您使用我们服务的情况以及优化广告等。</p>
|
||||
<p class="font_content">加速器可能会收集或使用您的信息,并将这些信息储存为日志信息,目的是为您提供更个性化的用户体验和服务,并用于以下用途:记住您的身份、分析您使用我们服务的情况以及优化广告等。</p>
|
||||
|
||||
<p class="font_subtitle">
|
||||
广告服务
|
||||
|
|
@ -103,13 +103,13 @@
|
|||
<p class="font_subtitle">
|
||||
未成年人信息保护
|
||||
</p>
|
||||
<p class="font_content">我们鼓励父母或监护人指导未满十八岁的未成年人使用我们的服务。我们建议未成年人阅读本《VPN隐私政策》,并在提交个人信息之前寻求父母或监护人的同意和指导。</p>
|
||||
<p class="font_content">我们鼓励父母或监护人指导未满十八岁的未成年人使用我们的服务。我们建议未成年人阅读本《加速器隐私政策》,并在提交个人信息之前寻求父母或监护人的同意和指导。</p>
|
||||
|
||||
|
||||
<p class="font_subtitle">
|
||||
适用范围
|
||||
</p>
|
||||
<p class="font_content">请您注意,本《VPN隐私政策》不适用于以下情况:</p>
|
||||
<p class="font_content">请您注意,本《加速器隐私政策》不适用于以下情况:</p>
|
||||
<p class="font_content">通过我们的服务而接入的第三方服务(包括任何第三方网站)收集的信息;</p>
|
||||
<p class="font_content">通过在我们服务中进行广告服务的其他公司或机构所收集的信息。</p>
|
||||
|
||||
|
|
@ -117,7 +117,7 @@
|
|||
<p class="font_subtitle">
|
||||
变更
|
||||
</p>
|
||||
<p class="font_content">我们可能适时修订本《VPN隐私政策》的条款,如该等修订造成您在本《VPN隐私政策》下权利的实质减少,我们将在修订生效前通过在主页上显著位置提示或向您发送电子邮件或以其他方式通知您。在该种情况下,若您继续使用我们的服务,即表示同意受经修订的本《VPN隐私政策》的约束。</p>
|
||||
<p class="font_content">我们可能适时修订本《加速器隐私政策》的条款,如该等修订造成您在本《加速器隐私政策》下权利的实质减少,我们将在修订生效前通过在主页上显著位置提示或向您发送电子邮件或以其他方式通知您。在该种情况下,若您继续使用我们的服务,即表示同意受经修订的本《加速器隐私政策》的约束。</p>
|
||||
<br/>
|
||||
|
||||
<!-- <p align="center" class="font_foot">-->
|
||||
|
|
|
|||
Binary file not shown.
|
Before Width: | Height: | Size: 14 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 16 KiB |
|
|
@ -1,12 +0,0 @@
|
|||
//package com.next.vpn
|
||||
//
|
||||
//import androidx.annotation.Keep
|
||||
//
|
||||
//@Keep
|
||||
//object Stup {
|
||||
// external fun key(): String
|
||||
// init {
|
||||
// System.loadLibrary("initSDK")
|
||||
//
|
||||
// }
|
||||
//}
|
||||
|
|
@ -184,5 +184,4 @@ class BandPhoneActivity : BaseNotTitleActivity() {
|
|||
super.onDestroy()
|
||||
countDownTimer?.cancel()
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -47,6 +47,7 @@ class InstallApplicationActivity : BaseActivity() {
|
|||
private var index = 0
|
||||
private var indexBase=0
|
||||
private var saveAppInfo = mutableListOf<AppInfoEntity>()
|
||||
private var saveAppPackageSet = mutableSetOf<String>()
|
||||
private lateinit var rxDialogShapeLoading: RxDialogShapeLoading
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
|
|
@ -153,7 +154,10 @@ class InstallApplicationActivity : BaseActivity() {
|
|||
if(decodeString.isNullOrEmpty()){
|
||||
//为空直接将改条数据添加
|
||||
saveAppInfo.clear()
|
||||
|
||||
saveAppInfo.add(appInfoItem)
|
||||
saveAppPackageSet.clear()
|
||||
saveAppPackageSet.add(appInfoItem.packageName)
|
||||
val gson = Gson()
|
||||
MMKV.defaultMMKV().encode(BZYConstants.APPSETTINGINFO, gson.toJson(saveAppInfo))
|
||||
}else{
|
||||
|
|
@ -163,7 +167,9 @@ class InstallApplicationActivity : BaseActivity() {
|
|||
object : TypeToken<ArrayList<AppInfoEntity?>?>() {
|
||||
}.type
|
||||
) as MutableList<AppInfoEntity>
|
||||
com.yingmao.clash.common.log.Log.d("appInfoItem==>${appInfoItem}")
|
||||
saveAppInfo.add(appInfoItem)
|
||||
saveAppPackageSet.add(appInfoItem.packageName)
|
||||
val gson = Gson()
|
||||
MMKV.defaultMMKV().encode(BZYConstants.APPSETTINGINFO, gson.toJson(saveAppInfo))
|
||||
}
|
||||
|
|
@ -196,10 +202,13 @@ class InstallApplicationActivity : BaseActivity() {
|
|||
}
|
||||
}
|
||||
saveAppInfo.removeAt(tempIndex)
|
||||
saveAppPackageSet.remove(appInfoItem.packageName)
|
||||
MMKV.defaultMMKV().encode(BZYConstants.APPSETTINGINFO, Gson().toJson(saveAppInfo))
|
||||
}
|
||||
|
||||
}
|
||||
MMKV.defaultMMKV().encode(BZYConstants.APP_SETTING_PACKAGE_INFO,saveAppPackageSet)
|
||||
serStore.packages=saveAppPackageSet
|
||||
iAAdapter.notifyDataSetChanged()
|
||||
}
|
||||
|
||||
|
|
@ -229,7 +238,9 @@ class InstallApplicationActivity : BaseActivity() {
|
|||
MMKV.defaultMMKV().removeValueForKey(BZYConstants.APPSETTINGINFO)
|
||||
val gson = Gson()
|
||||
MMKV.defaultMMKV().encode(BZYConstants.APPSETTINGINFO, gson.toJson(saveChoose))
|
||||
|
||||
MMKV.defaultMMKV().removeValueForKey(BZYConstants.APP_SETTING_PACKAGE_INFO)
|
||||
saveAppPackageSet.clear()
|
||||
serStore.packages=saveAppPackageSet
|
||||
} else {
|
||||
var i = 0
|
||||
val j: Int = iAAdapter.getChoose().size
|
||||
|
|
@ -242,8 +253,13 @@ class InstallApplicationActivity : BaseActivity() {
|
|||
TVChooseName.text=getString(R.string.SelectAll)
|
||||
tableTitleCB.setImageResource(R.drawable.ic_weixianzhong)
|
||||
isSelectAll = false
|
||||
|
||||
//直接删除
|
||||
MMKV.defaultMMKV().removeValueForKey(BZYConstants.APPSETTINGINFO)
|
||||
|
||||
MMKV.defaultMMKV().removeValueForKey(BZYConstants.APP_SETTING_PACKAGE_INFO)
|
||||
saveAppPackageSet.clear()
|
||||
serStore.packages=saveAppPackageSet
|
||||
}
|
||||
iAAdapter.notifyDataSetChanged()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -938,11 +938,23 @@ class NewMainActivity : BaseActivity() {
|
|||
val config = resources.configuration
|
||||
val language = config.locale.language
|
||||
if (language.equals("en")) {
|
||||
val locale = Locale.getDefault()
|
||||
SimpleDateFormat("dd/MM/yyyy HH:mm:ss", locale)
|
||||
val dateFormat = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||
val locale = Locale.ENGLISH
|
||||
SimpleDateFormat("dd/MM/yyyy HH:mm:ss",locale)
|
||||
} else {
|
||||
val locale = Locale.ENGLISH
|
||||
SimpleDateFormat("dd/MM/yyyy HH:mm:ss",locale)
|
||||
}
|
||||
endTimeInfo = dateFormat.format(validPeriod)
|
||||
} else {
|
||||
SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss")
|
||||
val dateFormat = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||
SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss")
|
||||
} else {
|
||||
SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss")
|
||||
}
|
||||
endTimeInfo = dateFormat.format(validPeriod)
|
||||
}
|
||||
|
||||
}else{
|
||||
if(decodeString == "English"){
|
||||
val locale = Locale.ENGLISH
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ import com.yingmao.clash.core.model.TunnelState
|
|||
import com.yingmao.clash.net.http.HttpStatus
|
||||
import com.yingmao.clash.remote.Broadcasts
|
||||
import com.yingmao.clash.remote.Remote
|
||||
import com.yingmao.clash.service.store.ServiceStore
|
||||
import com.yingmao.clash.util.ApplicationObserver
|
||||
import com.yingmao.clash.util.StatusBarUtils
|
||||
import com.yingmao.clash.util.UiStore
|
||||
|
|
@ -49,9 +50,11 @@ open class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope(), Br
|
|||
lateinit var more_tv: TextView
|
||||
protected val uiStore by lazy { UiStore(this) }
|
||||
protected val events = Channel<Event>(Channel.UNLIMITED)
|
||||
// private var dayNight: DayNight = DayNight.Day
|
||||
|
||||
// private var dayNight: DayNight = DayNight.Day
|
||||
var baseLoading: RxDialogShapeLoading? = null
|
||||
val requests: Channel<androidx.core.R> = Channel(Channel.UNLIMITED)
|
||||
val serStore by lazy { ServiceStore(this) }
|
||||
|
||||
sealed class RequestTunnel {
|
||||
object ReloadAll : RequestTunnel()
|
||||
|
|
@ -62,6 +65,7 @@ open class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope(), Br
|
|||
data class Select(val index: Int, val name: String) : RequestTunnel()
|
||||
data class UrlTest(val index: Int) : RequestTunnel()
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; //竖屏
|
||||
|
|
@ -108,7 +112,8 @@ open class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope(), Br
|
|||
onBackPressed()
|
||||
}
|
||||
}
|
||||
fun showTitleBar(titleText: String,intent: Intent) {
|
||||
|
||||
fun showTitleBar(titleText: String, intent: Intent) {
|
||||
titleBar.visibility = View.VISIBLE
|
||||
title.text = titleText
|
||||
backIv.setOnClickListener {
|
||||
|
|
@ -116,13 +121,14 @@ open class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope(), Br
|
|||
}
|
||||
}
|
||||
|
||||
fun setMoreBar(moreInfo:String,listener:View.OnClickListener){
|
||||
more_tv.visibility=View.VISIBLE
|
||||
more_tv.text=moreInfo
|
||||
fun setMoreBar(moreInfo: String, listener: View.OnClickListener) {
|
||||
more_tv.visibility = View.VISIBLE
|
||||
more_tv.text = moreInfo
|
||||
more_tv.setOnClickListener(listener)
|
||||
}
|
||||
fun updateMoreBar(moreInfo: String){
|
||||
more_tv.text=moreInfo
|
||||
|
||||
fun updateMoreBar(moreInfo: String) {
|
||||
more_tv.text = moreInfo
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -239,7 +245,7 @@ open class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope(), Br
|
|||
ProfileUpdateFailed,
|
||||
}
|
||||
|
||||
fun showLoading(str: String,context: Context) {
|
||||
fun showLoading(str: String, context: Context) {
|
||||
val message = if (TextUtils.isEmpty(str)) "进行中..." else str
|
||||
if (baseLoading == null) {
|
||||
baseLoading = RxDialogShapeLoading(context)
|
||||
|
|
@ -255,6 +261,11 @@ open class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope(), Br
|
|||
baseLoading?.cancel()
|
||||
}
|
||||
}
|
||||
|
||||
fun selectServer(){
|
||||
val mmkv = MMKV.defaultMMKV()
|
||||
val routerHost = mmkv.decodeStringSet(BZYConstants.MMKV_KEY_ROUTER_HOST, HashSet())
|
||||
}
|
||||
@Synchronized
|
||||
fun switchServer(): Boolean {
|
||||
var isChange = false
|
||||
|
|
|
|||
|
|
@ -104,6 +104,7 @@ class BZYConstants {
|
|||
// const val shareTextHost = "嗨,一个稳定好用的加速器,打开链接注册免费体验吧=> https://38.180.8.92:8080/page/register.html?userId="
|
||||
const val INITIALIZATION = "is_initialization"
|
||||
const val APPSETTINGINFO = "appSettingInfo"
|
||||
const val APP_SETTING_PACKAGE_INFO = "APP_SETTING_PACKAGE_INFO"
|
||||
const val languageInfo = "languageInfo"
|
||||
}
|
||||
}
|
||||
|
|
@ -132,6 +132,7 @@ class NewAccFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatch
|
|||
intentFilter.addAction(Intents.ACTION_CLASH_REQUEST_STOP)
|
||||
intentFilter.addAction(Intents.ACTION_Glo_Mode)
|
||||
intentFilter.addAction(Intents.ACTION_OVERRIDE_CHANGED)
|
||||
|
||||
context?.registerReceiver(
|
||||
ClashBP(), intentFilter
|
||||
)
|
||||
|
|
@ -497,7 +498,6 @@ class NewAccFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatch
|
|||
if(isAdded){
|
||||
endTimeInfo =resources.getString(R.string.AccountExpired)
|
||||
}
|
||||
|
||||
} else {
|
||||
val validPeriod = MMKV.defaultMMKV().decodeLong(BZYConstants.MMKV_KEY_VPN_VALID_PERIOD)
|
||||
|
||||
|
|
@ -507,10 +507,21 @@ class NewAccFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatch
|
|||
val config = resources.configuration
|
||||
val language = config.locale.language
|
||||
if (language.equals("en")) {
|
||||
val locale = Locale.getDefault()
|
||||
SimpleDateFormat("dd/MM/yyyy HH:mm:ss", locale)
|
||||
val dateFormat = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||
val locale = Locale.ENGLISH
|
||||
SimpleDateFormat("dd/MM/yyyy HH:mm:ss",locale)
|
||||
} else {
|
||||
val locale = Locale.ENGLISH
|
||||
SimpleDateFormat("dd/MM/yyyy HH:mm:ss",locale)
|
||||
}
|
||||
endTimeInfo = dateFormat.format(validPeriod)
|
||||
} else {
|
||||
SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss")
|
||||
val dateFormat = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||
SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss")
|
||||
} else {
|
||||
SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss")
|
||||
}
|
||||
endTimeInfo = dateFormat.format(validPeriod)
|
||||
}
|
||||
}else{
|
||||
if(decodeString == "English"){
|
||||
|
|
|
|||
|
|
@ -223,9 +223,7 @@ interface HttpApi {
|
|||
): String
|
||||
|
||||
//http://10.10.23.115:8020/netbarcloud/vpn/getPointCardSurplus.do
|
||||
@Headers(
|
||||
"User-Agent: Octopus_Android"
|
||||
)
|
||||
@Headers("User-Agent: Octopus_Android")
|
||||
@POST("/netbarcloud/vpn/getPointCardSurplus.do")
|
||||
suspend fun getPointCardSurplus(
|
||||
@QueryMap params: Map<String, String>,
|
||||
|
|
|
|||
|
|
@ -42,9 +42,9 @@ import javax.net.ssl.*
|
|||
class NetService private constructor() : INetService {
|
||||
|
||||
companion object {
|
||||
private const val ConnectTimeOut = 8L
|
||||
private const val ReadTimeOut = 8L
|
||||
private const val WriteTimeOut = 8L
|
||||
private const val ConnectTimeOut = 15L
|
||||
private const val ReadTimeOut = 60L
|
||||
private const val WriteTimeOut = 60L
|
||||
|
||||
// private var defaultUrl_domestic = getCurrentUrl()
|
||||
val instances: NetService by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { NetService() }
|
||||
|
|
@ -77,13 +77,13 @@ class NetService private constructor() : INetService {
|
|||
)
|
||||
loggingInterceptor.level = HttpLoggingInterceptor.Level.BODY
|
||||
var builder = OkHttpClient.Builder()
|
||||
// .retryOnConnectionFailure(true)
|
||||
.retryOnConnectionFailure(true)
|
||||
// .addInterceptor(RetryAndChangeIpInterceptor())
|
||||
// .proxy(java.net.Proxy.NO_PROXY)
|
||||
.connectTimeout(ConnectTimeOut, TimeUnit.SECONDS)
|
||||
.writeTimeout(WriteTimeOut, TimeUnit.SECONDS)
|
||||
.readTimeout(ReadTimeOut, TimeUnit.SECONDS)
|
||||
.callTimeout(15, TimeUnit.SECONDS)
|
||||
.callTimeout(240, TimeUnit.SECONDS)
|
||||
// .sslSocketFactory(getSSLSocketFactory(), CustomTrustManager())//信任所有证书
|
||||
.sslSocketFactory(getSSLSocketFactory(), trustAllCerts[0] as X509TrustManager)
|
||||
.hostnameVerifier(getHostnameVerifier()!!)
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.yingmao.clash.net.http.entity
|
||||
|
||||
import com.google.gson.JsonElement
|
||||
import com.google.gson.JsonObject
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import kotlinx.serialization.Serializable
|
||||
|
|
@ -188,7 +189,7 @@ data class SendSmsRsp(
|
|||
val code: String? = null,
|
||||
|
||||
@field:SerializedName("data")
|
||||
val data: JsonObject? = null,
|
||||
val data: JsonElement? = null,
|
||||
|
||||
@field:SerializedName("message")
|
||||
val message: String? = null
|
||||
|
|
|
|||
|
|
@ -0,0 +1,114 @@
|
|||
package com.yingmao.clash.view.dialog
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.Context
|
||||
import android.content.DialogInterface
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.widget.ImageView
|
||||
import android.widget.LinearLayout
|
||||
import android.widget.TextView
|
||||
|
||||
import com.yingmao.clash.R
|
||||
import com.yingmao.clash.conf.PayType
|
||||
|
||||
/**
|
||||
* @author tamsiree
|
||||
* @date 2016/7/19
|
||||
* 确认 取消 Dialog
|
||||
*/
|
||||
open class DialogSelectServerChoose : RxDialog {
|
||||
lateinit var titleView: TextView
|
||||
private set
|
||||
lateinit var rb_wxpay: View
|
||||
private set
|
||||
lateinit var rb_alipay: View
|
||||
private set
|
||||
lateinit var rb_typay: View
|
||||
private set
|
||||
lateinit var rb_alipay_app: View
|
||||
private set
|
||||
lateinit var rg_pay_type: LinearLayout
|
||||
private set
|
||||
lateinit var onPayTypeCheckedListener: OnPayTypeCheckedListener
|
||||
private set
|
||||
private var title: String = ""
|
||||
|
||||
constructor(context: Context?, themeResId: Int) : super(context!!, themeResId) {
|
||||
initView()
|
||||
}
|
||||
|
||||
constructor(context: Context?, cancelable: Boolean, cancelListener: DialogInterface.OnCancelListener?) : super(context!!, cancelable, cancelListener) {
|
||||
initView()
|
||||
}
|
||||
|
||||
constructor(context: Context?) : super(context!!) {
|
||||
initView()
|
||||
}
|
||||
|
||||
constructor(context: Activity?) : super(context!!) {
|
||||
initView()
|
||||
}
|
||||
|
||||
constructor(context: Context?, alpha: Float, gravity: Int) : super(context, alpha, gravity) {
|
||||
initView()
|
||||
}
|
||||
|
||||
private fun initView() {
|
||||
val dialogView = LayoutInflater.from(context).inflate(R.layout.dialog_select_server_choose, null)
|
||||
titleView = dialogView.findViewById(R.id.tv_title)
|
||||
rg_pay_type = dialogView.findViewById(R.id.rg_pay_type)
|
||||
rb_alipay = dialogView.findViewById(R.id.rb_alipay)
|
||||
rb_typay = dialogView.findViewById(R.id.rb_typay)
|
||||
rb_alipay_app = dialogView.findViewById(R.id.rb_alipay_app)
|
||||
rb_wxpay = dialogView.findViewById(R.id.rb_wxpay)
|
||||
if (title.isBlank()) {
|
||||
titleView.visibility = View.GONE
|
||||
}
|
||||
setContentView(dialogView)
|
||||
rb_alipay_app.setOnClickListener {
|
||||
onPayTypeCheckedListener.onPayTypeChecked(PayType.PAY_TYPE_ALI_APP)
|
||||
}
|
||||
rb_alipay.setOnClickListener {
|
||||
onPayTypeCheckedListener.onPayTypeChecked(PayType.PAY_TYPE_ALI)
|
||||
}
|
||||
rb_wxpay.setOnClickListener {
|
||||
onPayTypeCheckedListener.onPayTypeChecked(PayType.PAY_TYPE_WX)
|
||||
}
|
||||
rb_typay.setOnClickListener {
|
||||
onPayTypeCheckedListener.onPayTypeChecked(PayType.PAY_TYPE_Stripe)
|
||||
}
|
||||
|
||||
dialogView.findViewById<ImageView>(R.id.iv_bilai_zfb).setOnClickListener {
|
||||
onPayTypeCheckedListener.onPayTypeChecked(PayType.PAY_TYPE_BiLai_ZFB)
|
||||
}
|
||||
dialogView.findViewById<ImageView>(R.id.iv_bilai_wx).setOnClickListener {
|
||||
onPayTypeCheckedListener.onPayTypeChecked(PayType.PAY_TYPE_BiLai_WX)
|
||||
}
|
||||
dialogView.findViewById<ImageView>(R.id.iv_bilai_jd).setOnClickListener {
|
||||
onPayTypeCheckedListener.onPayTypeChecked(PayType.PAY_TYPE_BiLai_ZFB)
|
||||
}
|
||||
dialogView.findViewById<LinearLayout>(R.id.ll_bilai_url).setOnClickListener {
|
||||
onPayTypeCheckedListener.onPayTypeChecked(PayType.PAY_TYPE_BiLai_WEB)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fun setOnPayTypeCheckedListener(onPayTypeCheckedListener : OnPayTypeCheckedListener){
|
||||
this.onPayTypeCheckedListener = onPayTypeCheckedListener
|
||||
}
|
||||
|
||||
interface OnPayTypeCheckedListener{
|
||||
fun onPayTypeChecked(payType :String)
|
||||
}
|
||||
|
||||
fun setTitle(titleStr: String) {
|
||||
title = titleStr
|
||||
if (title.isBlank()) {
|
||||
titleView.visibility = View.GONE
|
||||
return
|
||||
}
|
||||
titleView.visibility = View.VISIBLE
|
||||
titleView.text = title
|
||||
}
|
||||
}
|
||||
|
|
@ -1,150 +0,0 @@
|
|||
/* Code generated by cmd/cgo; DO NOT EDIT. */
|
||||
|
||||
/* package cfa/native */
|
||||
|
||||
|
||||
#line 1 "cgo-builtin-export-prolog"
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#ifndef GO_CGO_EXPORT_PROLOGUE_H
|
||||
#define GO_CGO_EXPORT_PROLOGUE_H
|
||||
|
||||
#ifndef GO_CGO_GOSTRING_TYPEDEF
|
||||
typedef struct { const char *p; ptrdiff_t n; } _GoString_;
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
/* Start of preamble from import "C" comments. */
|
||||
|
||||
|
||||
#line 3 "app.go"
|
||||
#include "bridge.h"
|
||||
|
||||
#line 1 "cgo-generated-wrapper"
|
||||
|
||||
#line 3 "config.go"
|
||||
#include "bridge.h"
|
||||
|
||||
#line 1 "cgo-generated-wrapper"
|
||||
|
||||
#line 5 "log_open.go"
|
||||
#include "bridge.h"
|
||||
|
||||
#line 1 "cgo-generated-wrapper"
|
||||
|
||||
#line 3 "main.go"
|
||||
|
||||
|
||||
|
||||
#include "bridge.h"
|
||||
|
||||
#line 1 "cgo-generated-wrapper"
|
||||
|
||||
#line 3 "proxy.go"
|
||||
#include "bridge.h"
|
||||
|
||||
#line 1 "cgo-generated-wrapper"
|
||||
|
||||
#line 3 "tun.go"
|
||||
#include "bridge.h"
|
||||
|
||||
#line 1 "cgo-generated-wrapper"
|
||||
|
||||
#line 3 "tunnel.go"
|
||||
#include "bridge.h"
|
||||
|
||||
#line 1 "cgo-generated-wrapper"
|
||||
|
||||
|
||||
/* End of preamble from import "C" comments. */
|
||||
|
||||
|
||||
/* Start of boilerplate cgo prologue. */
|
||||
#line 1 "cgo-gcc-export-header-prolog"
|
||||
|
||||
#ifndef GO_CGO_PROLOGUE_H
|
||||
#define GO_CGO_PROLOGUE_H
|
||||
|
||||
typedef signed char GoInt8;
|
||||
typedef unsigned char GoUint8;
|
||||
typedef short GoInt16;
|
||||
typedef unsigned short GoUint16;
|
||||
typedef int GoInt32;
|
||||
typedef unsigned int GoUint32;
|
||||
typedef long long GoInt64;
|
||||
typedef unsigned long long GoUint64;
|
||||
typedef GoInt64 GoInt;
|
||||
typedef GoUint64 GoUint;
|
||||
typedef size_t GoUintptr;
|
||||
typedef float GoFloat32;
|
||||
typedef double GoFloat64;
|
||||
#ifdef _MSC_VER
|
||||
#include <complex.h>
|
||||
typedef _Fcomplex GoComplex64;
|
||||
typedef _Dcomplex GoComplex128;
|
||||
#else
|
||||
typedef float _Complex GoComplex64;
|
||||
typedef double _Complex GoComplex128;
|
||||
#endif
|
||||
|
||||
/*
|
||||
static assertion to make sure the file is being used on architecture
|
||||
at least with matching size of GoInt.
|
||||
*/
|
||||
typedef char _check_for_64_bit_pointer_matching_GoInt[sizeof(void*)==64/8 ? 1:-1];
|
||||
|
||||
#ifndef GO_CGO_GOSTRING_TYPEDEF
|
||||
typedef _GoString_ GoString;
|
||||
#endif
|
||||
typedef void *GoMap;
|
||||
typedef void *GoChan;
|
||||
typedef struct { void *t; void *v; } GoInterface;
|
||||
typedef struct { void *data; GoInt len; GoInt cap; } GoSlice;
|
||||
|
||||
#endif
|
||||
|
||||
/* End of boilerplate cgo prologue. */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern void notifyDnsChanged(c_string dnsList);
|
||||
extern void notifyInstalledAppsChanged(c_string uids);
|
||||
extern void notifyTimeZoneChanged(c_string name, int offset);
|
||||
extern char* queryConfiguration();
|
||||
extern void fetchAndValid(void* callback, c_string path, c_string url, int force);
|
||||
extern void load(void* completable, c_string path);
|
||||
extern char* readOverride(int slot);
|
||||
extern void writeOverride(int slot, c_string content);
|
||||
extern void clearOverride(int slot);
|
||||
extern void subscribeLogcat(void* remote);
|
||||
extern void coreInit(c_string home, c_string versionName, int sdkVersion);
|
||||
extern void reset();
|
||||
extern void forceGc();
|
||||
extern char* startHttp(c_string listenAt);
|
||||
extern void stopHttp();
|
||||
extern int startTun(int fd, c_string gateway, c_string portal, c_string dns, void* callback);
|
||||
extern void stopTun();
|
||||
extern char* queryTunnelState();
|
||||
extern void queryNow(uint64_t* upload, uint64_t* download);
|
||||
extern void queryTotal(uint64_t* upload, uint64_t* download);
|
||||
extern char* queryGroupNames(int excludeNotSelectable);
|
||||
extern char* queryGroup(c_string name, c_string sortMode);
|
||||
extern void healthCheck(void* completable, c_string name);
|
||||
extern void healthCheckAll();
|
||||
extern int patchSelector(c_string selector, c_string name);
|
||||
extern char* queryProviders();
|
||||
extern void updateProvider(void* completable, c_string pType, c_string name);
|
||||
extern void suspend(int suspended);
|
||||
extern char* getSS1(c_string name);
|
||||
extern char* getSS2(c_string name);
|
||||
extern char* getRegisterKey(c_string name);
|
||||
extern char* getRegisterKiv(c_string name);
|
||||
extern char* installSideloadGeoip(void* block, int blockSize);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
Binary file not shown.
|
|
@ -1,150 +0,0 @@
|
|||
/* Code generated by cmd/cgo; DO NOT EDIT. */
|
||||
|
||||
/* package cfa/native */
|
||||
|
||||
|
||||
#line 1 "cgo-builtin-export-prolog"
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#ifndef GO_CGO_EXPORT_PROLOGUE_H
|
||||
#define GO_CGO_EXPORT_PROLOGUE_H
|
||||
|
||||
#ifndef GO_CGO_GOSTRING_TYPEDEF
|
||||
typedef struct { const char *p; ptrdiff_t n; } _GoString_;
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
/* Start of preamble from import "C" comments. */
|
||||
|
||||
|
||||
#line 3 "app.go"
|
||||
#include "bridge.h"
|
||||
|
||||
#line 1 "cgo-generated-wrapper"
|
||||
|
||||
#line 3 "config.go"
|
||||
#include "bridge.h"
|
||||
|
||||
#line 1 "cgo-generated-wrapper"
|
||||
|
||||
#line 5 "log_open.go"
|
||||
#include "bridge.h"
|
||||
|
||||
#line 1 "cgo-generated-wrapper"
|
||||
|
||||
#line 3 "main.go"
|
||||
|
||||
|
||||
|
||||
#include "bridge.h"
|
||||
|
||||
#line 1 "cgo-generated-wrapper"
|
||||
|
||||
#line 3 "proxy.go"
|
||||
#include "bridge.h"
|
||||
|
||||
#line 1 "cgo-generated-wrapper"
|
||||
|
||||
#line 3 "tun.go"
|
||||
#include "bridge.h"
|
||||
|
||||
#line 1 "cgo-generated-wrapper"
|
||||
|
||||
#line 3 "tunnel.go"
|
||||
#include "bridge.h"
|
||||
|
||||
#line 1 "cgo-generated-wrapper"
|
||||
|
||||
|
||||
/* End of preamble from import "C" comments. */
|
||||
|
||||
|
||||
/* Start of boilerplate cgo prologue. */
|
||||
#line 1 "cgo-gcc-export-header-prolog"
|
||||
|
||||
#ifndef GO_CGO_PROLOGUE_H
|
||||
#define GO_CGO_PROLOGUE_H
|
||||
|
||||
typedef signed char GoInt8;
|
||||
typedef unsigned char GoUint8;
|
||||
typedef short GoInt16;
|
||||
typedef unsigned short GoUint16;
|
||||
typedef int GoInt32;
|
||||
typedef unsigned int GoUint32;
|
||||
typedef long long GoInt64;
|
||||
typedef unsigned long long GoUint64;
|
||||
typedef GoInt32 GoInt;
|
||||
typedef GoUint32 GoUint;
|
||||
typedef size_t GoUintptr;
|
||||
typedef float GoFloat32;
|
||||
typedef double GoFloat64;
|
||||
#ifdef _MSC_VER
|
||||
#include <complex.h>
|
||||
typedef _Fcomplex GoComplex64;
|
||||
typedef _Dcomplex GoComplex128;
|
||||
#else
|
||||
typedef float _Complex GoComplex64;
|
||||
typedef double _Complex GoComplex128;
|
||||
#endif
|
||||
|
||||
/*
|
||||
static assertion to make sure the file is being used on architecture
|
||||
at least with matching size of GoInt.
|
||||
*/
|
||||
typedef char _check_for_32_bit_pointer_matching_GoInt[sizeof(void*)==32/8 ? 1:-1];
|
||||
|
||||
#ifndef GO_CGO_GOSTRING_TYPEDEF
|
||||
typedef _GoString_ GoString;
|
||||
#endif
|
||||
typedef void *GoMap;
|
||||
typedef void *GoChan;
|
||||
typedef struct { void *t; void *v; } GoInterface;
|
||||
typedef struct { void *data; GoInt len; GoInt cap; } GoSlice;
|
||||
|
||||
#endif
|
||||
|
||||
/* End of boilerplate cgo prologue. */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern void notifyDnsChanged(c_string dnsList);
|
||||
extern void notifyInstalledAppsChanged(c_string uids);
|
||||
extern void notifyTimeZoneChanged(c_string name, int offset);
|
||||
extern char* queryConfiguration();
|
||||
extern void fetchAndValid(void* callback, c_string path, c_string url, int force);
|
||||
extern void load(void* completable, c_string path);
|
||||
extern char* readOverride(int slot);
|
||||
extern void writeOverride(int slot, c_string content);
|
||||
extern void clearOverride(int slot);
|
||||
extern void subscribeLogcat(void* remote);
|
||||
extern void coreInit(c_string home, c_string versionName, int sdkVersion);
|
||||
extern void reset();
|
||||
extern void forceGc();
|
||||
extern char* startHttp(c_string listenAt);
|
||||
extern void stopHttp();
|
||||
extern int startTun(int fd, c_string gateway, c_string portal, c_string dns, void* callback);
|
||||
extern void stopTun();
|
||||
extern char* queryTunnelState();
|
||||
extern void queryNow(uint64_t* upload, uint64_t* download);
|
||||
extern void queryTotal(uint64_t* upload, uint64_t* download);
|
||||
extern char* queryGroupNames(int excludeNotSelectable);
|
||||
extern char* queryGroup(c_string name, c_string sortMode);
|
||||
extern void healthCheck(void* completable, c_string name);
|
||||
extern void healthCheckAll();
|
||||
extern int patchSelector(c_string selector, c_string name);
|
||||
extern char* queryProviders();
|
||||
extern void updateProvider(void* completable, c_string pType, c_string name);
|
||||
extern void suspend(int suspended);
|
||||
extern char* getSS1(c_string name);
|
||||
extern char* getSS2(c_string name);
|
||||
extern char* getRegisterKey(c_string name);
|
||||
extern char* getRegisterKiv(c_string name);
|
||||
extern char* installSideloadGeoip(void* block, int blockSize);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 299 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 114 KiB After Width: | Height: | Size: 57 KiB |
|
|
@ -245,6 +245,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:orientation="horizontal"
|
||||
android:visibility="gone"
|
||||
android:paddingRight="30dp"
|
||||
android:paddingLeft="30dp"
|
||||
android:paddingTop="@dimen/dp_10"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/shape_round_white"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical"
|
||||
android:paddingLeft="40dp"
|
||||
android:paddingRight="40dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp"
|
||||
android:layout_marginBottom="30dp"
|
||||
android:gravity="center"
|
||||
android:text="@string/please_select_the_server"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/rg_pay_type"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="40dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:gravity="center"
|
||||
android:text="尝试使用可用的服务器"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="13sp" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
</androidx.recyclerview.widget.RecyclerView>
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
|
@ -80,7 +80,7 @@
|
|||
<string name="alipay">Alipay</string>
|
||||
<string name="point_card_balance">balance</string>
|
||||
<string name="please_select_the_payment_method">Please choose a payment method</string>
|
||||
|
||||
<string name="please_select_the_server">Please try switching to the following servers</string>
|
||||
<string name="qr_pay_note_zfb">Screenshot saving QR code ->Open [Alipay or WeChat] to scan ->Select saved QR code identification ->Click [Payment completed]</string>
|
||||
<string name="qr_pay_note_wx">Screenshot saving QR code ->Open [Alipay or WeChat] to scan ->Select saved QR code identification ->Click [Payment completed]</string>
|
||||
<string name="first_psw_note">Tips:The initial password is 123456</string>
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@
|
|||
<string name="alipay">支付寶</string>
|
||||
<string name="point_card_balance">余额</string>
|
||||
<string name="please_select_the_payment_method">請選擇支付方式</string>
|
||||
|
||||
<string name="please_select_the_server">請嚐試切換以下服務器</string>
|
||||
<string name="qr_pay_note_zfb">截圖保存二維碼 -> 打開【支付寶或微信】掃壹掃 -> 選擇已保存的二維碼識別 -> 點【已支付完成】</string>
|
||||
<string name="qr_pay_note_wx">截圖保存二維碼 -> 打開【支付寶或微信】掃壹掃 -> 選擇已保存的二維碼識別 -> 點【已支付完成】</string>
|
||||
<string name="first_psw_note">小提示:初始密碼爲 123456</string>
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@
|
|||
<string name="alipay">支付寶</string>
|
||||
<string name="point_card_balance">余额</string>
|
||||
<string name="please_select_the_payment_method">請選擇支付方式</string>
|
||||
|
||||
<string name="please_select_the_server">請嚐試切換以下服務器</string>
|
||||
<string name="qr_pay_note_zfb">截圖保存二維碼 -> 打開【支付寶或微信】掃壹掃 -> 選擇已保存的二維碼識別 -> 點【已支付完成】</string>
|
||||
<string name="qr_pay_note_wx">截圖保存二維碼 -> 打開【支付寶或微信】掃壹掃 -> 選擇已保存的二維碼識別 -> 點【已支付完成】</string>
|
||||
<string name="first_psw_note">小提示:初始密碼爲 123456</string>
|
||||
|
|
|
|||
|
|
@ -80,6 +80,7 @@
|
|||
<string name="alipay">支付宝</string>
|
||||
<string name="point_card_balance">余额</string>
|
||||
<string name="please_select_the_payment_method">请选择支付方式</string>
|
||||
<string name="please_select_the_server">请尝试切换以下服务器</string>
|
||||
|
||||
<string name="qr_pay_note_zfb">截图保存二维码 -> 打开【支付宝或微信】扫一扫 -> 选择已保存的二维码识别 -> 点【已支付完成】</string>
|
||||
<string name="qr_pay_note_wx">截图保存二维码 -> 打开【支付宝或微信】扫一扫 -> 选择已保存的二维码识别 -> 点【已支付完成】</string>
|
||||
|
|
|
|||
|
|
@ -51,8 +51,8 @@ subprojects {
|
|||
minSdk = 21
|
||||
//noinspection ExpiredTargetSdkVersion
|
||||
targetSdk = 31
|
||||
versionName = "1.0.2.2"
|
||||
versionCode = 1022
|
||||
versionName = "1.0.2.4"
|
||||
versionCode = 1024
|
||||
resValue("string", "release_name", "v$versionName")
|
||||
resValue("integer", "release_code", "$versionCode")
|
||||
externalNativeBuild {
|
||||
|
|
@ -86,9 +86,6 @@ subprojects {
|
|||
isDefault = true
|
||||
dimension = flavorDimensionList[0]
|
||||
buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")")
|
||||
if (isApp) {
|
||||
// applicationIdSuffix = ".meta"
|
||||
}
|
||||
buildConfigField("boolean", "is_free", "false")
|
||||
buildConfigField("boolean", "is_back_cn", "true")
|
||||
buildConfigField("boolean", "is_ym", "false")
|
||||
|
|
@ -103,9 +100,24 @@ subprojects {
|
|||
)
|
||||
}
|
||||
|
||||
|
||||
//影猫
|
||||
|
||||
create("1133") {
|
||||
isDefault = true
|
||||
dimension = flavorDimensionList[0]
|
||||
buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")")
|
||||
buildConfigField("boolean", "is_back_cn", "false")
|
||||
buildConfigField("boolean", "is_ym", "true")
|
||||
buildConfigField("boolean", "is_tz", "false")
|
||||
buildConfigField("String", "applicationId", "\"com.yingmao.clash\"")
|
||||
buildConfigField("String", "service_url", "\"https://api.ymvpnpro.cc:8700\"")
|
||||
buildConfigField("boolean", "is_free", "false")
|
||||
buildConfigField("String", "productId", "\"1133\"")
|
||||
manifestPlaceholders(
|
||||
mapOf(
|
||||
"APP_NAME" to "@string/app_name_gz", "APP_ICON" to "@mipmap/ic_logo_9972"
|
||||
)
|
||||
)
|
||||
}
|
||||
create("2917") {
|
||||
isDefault = true
|
||||
dimension = flavorDimensionList[0]
|
||||
|
|
|
|||
Loading…
Reference in New Issue