diff --git a/app/src/main/java/top/yvyan/guettable/activity/AboutActivity.java b/app/src/main/java/top/yvyan/guettable/activity/AboutActivity.java index 8ea3912a42f0096650c9dfb3972edbf7ab88064c..e10161770bc96e66bbb5915f99e4fec9f26849a8 100644 --- a/app/src/main/java/top/yvyan/guettable/activity/AboutActivity.java +++ b/app/src/main/java/top/yvyan/guettable/activity/AboutActivity.java @@ -8,6 +8,7 @@ import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.View; +import android.widget.LinearLayout; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; @@ -32,12 +33,17 @@ public class AboutActivity extends AppCompatActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SingleSettingData singleSettingData = SingleSettingData.newInstance(this); + SettingData Settings=SettingData.newInstance(getContext()); BackgroundUtil.setPageTheme(this, singleSettingData.getThemeId()); setContentView(R.layout.activity_about); BackgroundUtil.setFullAlphaStatus(this); TextView title = findViewById(R.id.title); title.setText(getString(R.string.person_about)); TextView profileVersion = findViewById(R.id.about_version); + LinearLayout debug_ClearMFACookie= findViewById(R.id.clear_mfa_cookie); + debug_ClearMFACookie.setVisibility(Settings.isDevelopMode() ? LinearLayout.VISIBLE : LinearLayout.GONE); + View debug_ClearMFACookie_spliter= findViewById(R.id.clear_mfa_cookie_spliter); + debug_ClearMFACookie_spliter.setVisibility(Settings.isDevelopMode() ? View.VISIBLE : View.GONE); profileVersion.setText(AppUtil.getAppVersionName(getContext())); } @@ -78,6 +84,13 @@ public class AboutActivity extends AppCompatActivity { helpTest(); } + public void clearMFACookie(View view) { + TokenData tokenData = TokenData.newInstance(getContext()); + tokenData.setMFACookie(null); + tokenData.setBkjwCookie(null); + ToastUtil.showToast(getContext(),"清除成功"); + } + /** * 协助测试 */ diff --git a/app/src/main/java/top/yvyan/guettable/activity/LoginActivity.java b/app/src/main/java/top/yvyan/guettable/activity/LoginActivity.java index b6abd18a8bacf6af1c17054d8fd11b6c550f761b..90ca1894f71d7a85a0c657c8530c92f918fb74de 100644 --- a/app/src/main/java/top/yvyan/guettable/activity/LoginActivity.java +++ b/app/src/main/java/top/yvyan/guettable/activity/LoginActivity.java @@ -127,14 +127,14 @@ public class LoginActivity extends Activity implements View.OnClickListener { } /** - * 验证智慧校园密码 OTP Version + * 验证智慧校园密码 SMSCode Version */ - private void testCASWithOTP(String OTP, String CASCookie, TokenData tokenData) { + private void testCASWithSMSCode(String SMSCode, String CASCookie, TokenData tokenData) { String account = etAccount.getText().toString(); String pwd = etPwd.getText().toString(); new Thread(() -> { runOnUiThread(() -> button.setText("正在认证-手机验证码")); - String MultiFactorAuth = StaticService.VerifyPhoneOTP(this, OTP, CASCookie); + String MultiFactorAuth = StaticService.reAuth_SMSCode(this, SMSCode, CASCookie); if (MultiFactorAuth.contains("ERROR")) { if (MultiFactorAuth.equals("ERROR1")) { showErrorToast(-3); @@ -167,7 +167,26 @@ public class LoginActivity extends Activity implements View.OnClickListener { if (CasCookie.contains("ERROR5")) { tokenData.setTGTToken(CasCookie.substring(CasCookie.indexOf(";") + 1)); tokenData.setBkjwCookie(null); - bypass2FA(account, password, CasCookie.substring(CasCookie.indexOf(";") + 1), tokenData); + String phoneNumber = StaticService.reAuth_sendSMSCode(this, account,CasCookie.substring(CasCookie.indexOf(";")+1)); + if (!phoneNumber.contains("ERROR")) { + runOnUiThread(() -> { + button.setText("正在二步验证"); + showSMSCodeDialog(phoneNumber,CasCookie.substring(CasCookie.indexOf(";")+1),tokenData); + }); + } else { + if (phoneNumber.equals("ERROR1")) { + showErrorToast(-4); + } else if (phoneNumber.equals("ERROR2")) { + showErrorToast(-2); + } else if(phoneNumber.contains("ERROR3")) { + runOnUiThread(() -> { + setEnClick(); + ToastUtil.showToast(this, getResources().getString(R.string.login_fail_SMSCodeSend)+phoneNumber.substring(7)); + }); + } else { + showErrorToast(-8); + } + } } else { tokenData.setTGTToken(CasCookie); tokenData.setBkjwCookie(null); @@ -187,17 +206,17 @@ public class LoginActivity extends Activity implements View.OnClickListener { } /** - * 跳过二步认证 + * 二步认证 - 密码 * * @param account 学号 * @param password 密码 * @param CASCookie CAS Cookie * @param tokenData tokenData */ - private void bypass2FA(String account, String password, String CASCookie, TokenData tokenData) { + private void reAuth_Password(String account, String password, String CASCookie, TokenData tokenData) { try { - runOnUiThread(() -> button.setText("正在尝试绕过二步验证")); - String MultiFactorAuth = StaticService.bypass2FA(this, password, CASCookie); + runOnUiThread(() -> button.setText("正在二步验证")); + String MultiFactorAuth = StaticService.reAuth_Password(this, password, CASCookie); if (MultiFactorAuth.contains("ERROR")) { if (MultiFactorAuth.equals("ERROR1")) { showErrorToast(-4); @@ -220,7 +239,7 @@ public class LoginActivity extends Activity implements View.OnClickListener { /** * 显示手机验证码2FA */ - private void showPhoneOtpDialog(String phoneNumber, String CasCookie, TokenData tokenData) { + private void showSMSCodeDialog(String phoneNumber, String CasCookie, TokenData tokenData) { try { AlertDialog dialog; AlertDialog.Builder builder = new AlertDialog.Builder(this); @@ -231,17 +250,17 @@ public class LoginActivity extends Activity implements View.OnClickListener { dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); Window window = dialog.getWindow(); - window.setContentView(R.layout.login_phoneotp); + window.setContentView(R.layout.login_smscode); TextView phoneNumberView = window .findViewById(R.id.et_phone); phoneNumberView.setText(phoneNumber); Button buttonYes = window.findViewById(R.id.btn_text_yes); buttonYes.setOnClickListener(view -> { - TextView phoneOTP = window - .findViewById(R.id.et_phoneotp); - String OTP = phoneOTP.getText().toString(); + TextView SMSCode = window + .findViewById(R.id.et_smscode); + String SMSCodeOTP = SMSCode.getText().toString(); + testCASWithSMSCode(SMSCodeOTP, CasCookie, tokenData); dialog.dismiss(); - testCASWithOTP(OTP, CasCookie, tokenData); }); } catch (Exception ignore) { } diff --git a/app/src/main/java/top/yvyan/guettable/data/TokenData.java b/app/src/main/java/top/yvyan/guettable/data/TokenData.java index 272896aeeb9723ff84e0459175d6ec314a70a75f..100619f35bb69c14cd6f337fcccc9f77b53d2fc3 100644 --- a/app/src/main/java/top/yvyan/guettable/data/TokenData.java +++ b/app/src/main/java/top/yvyan/guettable/data/TokenData.java @@ -1,18 +1,33 @@ package top.yvyan.guettable.data; import android.annotation.SuppressLint; +import android.app.Activity; import android.content.Context; +import android.content.ContextWrapper; import android.content.SharedPreferences; +import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; +import android.view.Window; +import android.view.WindowManager; +import android.widget.Button; +import android.widget.TextView; + +import java.lang.reflect.*; + +import androidx.appcompat.app.AlertDialog; import top.yvyan.guettable.R; import top.yvyan.guettable.service.fetch.Net; import top.yvyan.guettable.service.fetch.StaticService; +import top.yvyan.guettable.util.ToastUtil; public class TokenData { @SuppressLint("StaticFieldLeak") private static TokenData tokenData; private final SharedPreferences.Editor editor; - private final Context context; + private Context context; + + private Object Caller; private static final String SHP_NAME = "tokenData"; @@ -60,7 +75,6 @@ public class TokenData { */ public String getVpnToken() { forceVPN = true; - refresh(); //isVPN = Net.testNet(context) != 0; return VPNToken; } @@ -83,6 +97,17 @@ public class TokenData { if (tokenData == null) { tokenData = new TokenData(context); } + tokenData.context = context; // Update Context + tokenData.Caller = null; + return tokenData; + } + + public static TokenData newInstance(Context context, Object Caller) { + if (tokenData == null) { + tokenData = new TokenData(context); + } + tokenData.context = context; // Update Context + tokenData.Caller = Caller; return tokenData; } @@ -176,14 +201,31 @@ public class TokenData { * @return 操作结果 */ public int refreshTGT() { - String TGTTokenStr = StaticService.SSOLogin(context, accountData.getUsername(), accountData.getPwd(),TGTToken, MFACookie); + String TGTTokenStr = StaticService.SSOLogin(context, accountData.getUsername(), accountData.getPwd(), TGTToken, MFACookie); if (TGTTokenStr.equals("ERROR2") || TGTTokenStr.equals("ERROR0")) { return -2; } if (TGTTokenStr.contains("TGT-")) { if (TGTTokenStr.contains("ERROR5")) { - setTGTToken(TGTTokenStr.substring(TGTTokenStr.indexOf(";") + 1)); - return bypass2FA(accountData.getPwd(), TGTTokenStr.substring(TGTTokenStr.indexOf(";") + 1)); + String CASCookie = TGTTokenStr.substring(TGTTokenStr.indexOf(";") + 1); + setTGTToken(CASCookie); + Activity activity = this.getActivity(context); + if (activity == null) return -3; + String phoneNumber = StaticService.reAuth_sendSMSCode(context, accountData.getUsername(), CASCookie); + if (!phoneNumber.contains("ERROR")) { + reAuth_showSMSCodeDialog(activity, phoneNumber, CASCookie); + } else { + if (phoneNumber.contains("ERROR3")) { + activity.runOnUiThread(() -> { + ToastUtil.showToast(context, context.getResources().getString(R.string.login_fail_SMSCodeSend) + phoneNumber.substring(7)); + }); + } else { + activity.runOnUiThread(() -> { + ToastUtil.showToast(context, context.getResources().getString(R.string.login_fail_SMSCodeSend) + "未知错误"); + }); + } + } + return -3; } else { setTGTToken(TGTTokenStr); } @@ -193,12 +235,96 @@ public class TokenData { } } + public Activity getActivity(Context context) { + if (context == null) { + return null; + } else if (context instanceof ContextWrapper) { + if (context instanceof Activity) { + return (Activity) context; + } else { + return getActivity(((ContextWrapper) context).getBaseContext()); + } + } + + return null; + } + + private void reAuth_showSMSCodeDialog(Activity activity, String phoneNumber, String CasCookie) { + activity.runOnUiThread(() -> { + try { + AlertDialog dialog; + AlertDialog.Builder builder = new AlertDialog.Builder(activity); + dialog = builder.create(); + dialog.show(); + dialog.setCanceledOnTouchOutside(false); + dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM); + dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); + dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); + Window window = dialog.getWindow(); + window.setContentView(R.layout.login_smscode); + TextView phoneNumberView = window + .findViewById(R.id.et_phone); + phoneNumberView.setText(phoneNumber); + Button buttonYes = window.findViewById(R.id.btn_text_yes); + Button buttonCancel = window.findViewById(R.id.btn_text_cancel); + buttonCancel.setOnClickListener(view -> { + dialog.cancel(); + }); + buttonYes.setOnClickListener(view -> { + TextView SMSCode = window + .findViewById(R.id.et_smscode); + String SMSCodeOTP = SMSCode.getText().toString(); + buttonYes.setText("正在登录"); + buttonYes.setEnabled(false); + new Thread(() -> { + int State = reAuth_SMSCode(SMSCodeOTP, CasCookie); + activity.runOnUiThread(() -> { + if (State == 0) { + dialog.dismiss(); + } else { + buttonYes.setText("登录"); + buttonYes.setEnabled(true); + } + ToastUtil.showToast(activity, State == 0 ? "验证成功" : "验证码有误"); + }); + }).start(); + }); + } catch (Exception ignore) { + + } + }); + } + + private int reAuth_SMSCode(String SMSCode, String CASCookie) { + try { + String MultiFactorAuth = StaticService.reAuth_SMSCode(context, SMSCode, CASCookie); + if (MultiFactorAuth.contains("ERROR")) { + return -1; + } else { + setMFACookie(MultiFactorAuth); + if (Caller != null) { + try { + // 反射尝试调用Update方法 (如果有) + Class ContextClass = Caller.getClass(); + Method Update = ContextClass.getMethod("update"); + Update.invoke(Caller); + } catch (Exception ignore) { + + } + } + return 0; + } + } catch (Exception ignore) { + return -1; + } + } + /** * bypass 2FA */ - private int bypass2FA(String password, String CASCookie) { + private int reAuth_Password(String password, String CASCookie) { try { - String MultiFactorAuth = StaticService.bypass2FA(context, password, CASCookie); + String MultiFactorAuth = StaticService.reAuth_Password(context, password, CASCookie); if (MultiFactorAuth.contains("ERROR")) { return -1; } else { @@ -215,7 +341,7 @@ public class TokenData { } public String getCASCookie() { - return (MFACookie != null ? MFACookie : "") + (TGTToken != null ? ((MFACookie!=null ? "; " : "")+TGTToken) : ""); + return (MFACookie != null ? MFACookie : "") + (TGTToken != null ? ((MFACookie != null ? "; " : "") + TGTToken) : ""); } public String getTGTToken() { diff --git a/app/src/main/java/top/yvyan/guettable/moreFun/BaseFuncActivity.java b/app/src/main/java/top/yvyan/guettable/moreFun/BaseFuncActivity.java index bc34d570464441052c51e202af9860803f0f2bcd..9ec51ad5dccf7f4e861fd91322550d09d04b1b80 100644 --- a/app/src/main/java/top/yvyan/guettable/moreFun/BaseFuncActivity.java +++ b/app/src/main/java/top/yvyan/guettable/moreFun/BaseFuncActivity.java @@ -23,6 +23,10 @@ import top.yvyan.guettable.util.BackgroundUtil; public abstract class BaseFuncActivity extends AppCompatActivity implements IMoreFun { @SuppressLint("NonConstantResourceId") + + protected boolean update = true; + protected int stateNum = -1; + @SuppressLint("NonConstantResourceId") @BindView(R.id.state) TextView state; @SuppressLint("NonConstantResourceId") @@ -34,9 +38,6 @@ public abstract class BaseFuncActivity extends AppCompatActivity implements IMor @SuppressLint("NonConstantResourceId") @BindView(R.id.func_base_constraintLayout) ConstraintLayout header; - @SuppressLint("NonConstantResourceId") - - protected boolean update = true; @Override protected void onCreate(Bundle savedInstanceState) { @@ -47,6 +48,7 @@ public abstract class BaseFuncActivity extends AppCompatActivity implements IMor ButterKnife.bind(this); more.setVisibility(View.GONE); more.setOnClickListener(this::showPopMenu); + state.setOnClickListener(this::stateOnClick); init(); header.getBackground().setAlpha(255); BackgroundUtil.setFullAlphaStatus(this); @@ -111,12 +113,21 @@ public abstract class BaseFuncActivity extends AppCompatActivity implements IMor @Override public void updateView(String hint, int stateNum) { + this.stateNum = stateNum; state.setText(hint); if (stateNum == 5 && update) { showContent(); } } + protected void stateOnClick(View view) { + if (this.stateNum != 5) { + if (this.stateNum == -3) { + this.init(); // 调用init方法重新获取验证码 + } + } + } + /** * 子类init (不包含设置内容视图) */ diff --git a/app/src/main/java/top/yvyan/guettable/service/AutoUpdate.java b/app/src/main/java/top/yvyan/guettable/service/AutoUpdate.java index e91f570bbb04e09e7118b95e33b1739fe2a0701d..91316266a5de12f3002eb4d9bd8d6893e5a82432 100644 --- a/app/src/main/java/top/yvyan/guettable/service/AutoUpdate.java +++ b/app/src/main/java/top/yvyan/guettable/service/AutoUpdate.java @@ -40,7 +40,7 @@ public class AutoUpdate { this.activity = fragment.getActivity(); accountData = AccountData.newInstance(activity); generalData = GeneralData.newInstance(activity); - tokenData = TokenData.newInstance(activity); + tokenData = TokenData.newInstance(activity,this); settingData = SettingData.newInstance(activity); init(); } @@ -72,8 +72,8 @@ public class AutoUpdate { * 启动同步 */ public void update() { - // 判断状态是否符合;合适的状态:就绪 网络错误 同步成功(点击同步) - if (state == 0 || state == -2 || state == 5) { + // 判断状态是否符合;合适的状态:就绪 登录失效 网络错误 同步成功(点击同步) + if (state == 0 || state == -2 || state == -3 || state == 5) { update_thread(); } } @@ -102,6 +102,9 @@ public class AutoUpdate { case -2: text = "网络错误"; break; + case -3: + text = "登录失效(点击重试)"; + break; case 91: text = "尝试同步理论课"; break; diff --git a/app/src/main/java/top/yvyan/guettable/service/CommFunc.java b/app/src/main/java/top/yvyan/guettable/service/CommFunc.java index f6fa2cfb20ad01ef399357a57bdb1396f16d5f16..7db6624cd080a0b17020216b7c1de85dd87c1611 100644 --- a/app/src/main/java/top/yvyan/guettable/service/CommFunc.java +++ b/app/src/main/java/top/yvyan/guettable/service/CommFunc.java @@ -106,7 +106,16 @@ public class CommFunc { final AlertDialog[] dialog = new AlertDialog[1]; activity.runOnUiThread(() -> dialog[0] = DialogUtil.setTextDialog(activity, "自动登录中...(最长需要15s)", "跳过", iDialogService, true)); - tokenData.refresh(); + int LoginState = tokenData.refresh(); + if (LoginState == -3) { + activity.runOnUiThread(() -> { + if (dialog[0] != null && dialog[0].isShowing()) { + dialog[0].dismiss(); + } + ToastUtil.showToast(activity, "登录状态丢失,请输入验证码后稍后重试"); + }); + return; + } if (!noLogin[0]) { activity.runOnUiThread(() -> { if (dialog[0] != null && dialog[0].isShowing()) { @@ -151,7 +160,17 @@ public class CommFunc { final AlertDialog[] dialog = new AlertDialog[1]; activity.runOnUiThread(() -> dialog[0] = DialogUtil.setTextDialog(activity, "自动登录中...(最长需要15s)", "跳过", iDialogService, true)); - tokenData.refresh(); + int LoginState = tokenData.refresh(); + if (LoginState == -3) { + activity.runOnUiThread(() -> { + if (dialog[0] != null && dialog[0].isShowing()) { + dialog[0].dismiss(); + } + ToastUtil.showToast(activity, "登录状态丢失,请输入验证码后稍后重试"); + }); + return; + } + if (TokenData.isVPN()) { tokenData.setVPNCASCookie(); } @@ -204,7 +223,16 @@ public class CommFunc { }; final AlertDialog[] dialog = new AlertDialog[1]; activity.runOnUiThread(() -> dialog[0] = DialogUtil.setTextDialog(activity, "自动建立连接中...(最长需要15s)", "跳过", iDialogService, true)); - + int LoginState = tokenData.refresh(); + if (LoginState == -3) { + activity.runOnUiThread(() -> { + if (dialog[0] != null && dialog[0].isShowing()) { + dialog[0].dismiss(); + } + ToastUtil.showToast(activity, "登录状态丢失,请输入验证码后稍后重试"); + }); + return; + } String token = tokenData.getVpnToken(); tokenData.setVPNCASCookie(); if (!noLogin[0]) { @@ -272,7 +300,16 @@ public class CommFunc { }; final AlertDialog[] dialog = new AlertDialog[1]; activity.runOnUiThread(() -> dialog[0] = DialogUtil.setTextDialog(activity, "自动建立连接中...(最长需要15s)", "跳过", iDialogService, true)); - + int LoginState = tokenData.refresh(); + if (LoginState == -3) { + activity.runOnUiThread(() -> { + if (dialog[0] != null && dialog[0].isShowing()) { + dialog[0].dismiss(); + } + ToastUtil.showToast(activity, "登录状态丢失,请输入验证码后稍后重试"); + }); + return; + } String token = tokenData.getVpnToken(); tokenData.setVPNCASCookie(); if (!noLogin[0]) { diff --git a/app/src/main/java/top/yvyan/guettable/service/MoreFunService.java b/app/src/main/java/top/yvyan/guettable/service/MoreFunService.java index 62a69f88e992565092a88be4a06929069e3e4e6a..4d615af24040b7ef3b65e2b953fcc2164d071fd0 100644 --- a/app/src/main/java/top/yvyan/guettable/service/MoreFunService.java +++ b/app/src/main/java/top/yvyan/guettable/service/MoreFunService.java @@ -18,34 +18,34 @@ public class MoreFunService { this.activity = activity; this.iMoreFun = iMoreFun; accountData = AccountData.newInstance(activity); - tokenData = TokenData.newInstance(activity); + tokenData = TokenData.newInstance(activity,this); } public void update() { new Thread(() -> { try { if (accountData.getIsLogin()) { - setView(91); //显示:尝试同步 + updateView(91); //显示:尝试同步 int state; state = iMoreFun.updateData(tokenData.getCookie()); if (state == 5 || state == -2) { //同步成功或网络错误 - setView(state); + updateView(state); return; } - setView(92); //显示:正在登录 + updateView(92); //显示:正在登录 state = tokenData.refresh(); if (state == -2) { state = tokenData.refresh(); } if (state != 0) { - setView(state); + updateView(state); return; } - setView(93); //显示:正在同步 + updateView(93); //显示:正在同步 state = iMoreFun.updateData(tokenData.getCookie()); - setView(state); + updateView(state); } else { - setView(2); + updateView(2); } } catch (Exception e) { UMCrash.generateCustomLog(e, "MoreFunService"); @@ -69,7 +69,7 @@ public class MoreFunService { * 92 : 正在登录 * 93 : 正在同步 */ - private void setView(int state) { + private void updateView(int state) { String hint; switch (state) { case 2: @@ -81,6 +81,9 @@ public class MoreFunService { case -2: hint = "网络错误"; break; + case -3: + hint = "登录失效(点击重试)"; + break; case 91: hint = "尝试同步"; break; diff --git a/app/src/main/java/top/yvyan/guettable/service/fetch/Net.java b/app/src/main/java/top/yvyan/guettable/service/fetch/Net.java index b83d26398a41c9556d2678ca1709017fb74ff7ab..1d9518f8bd8d8cd1113f3cfddcb8fb6981825da9 100644 --- a/app/src/main/java/top/yvyan/guettable/service/fetch/Net.java +++ b/app/src/main/java/top/yvyan/guettable/service/fetch/Net.java @@ -159,10 +159,10 @@ public class Net { * @param account account * @return Response */ - public static HttpConnectionAndCode sendPhoneOTP(Context context, String account, String CASCookie) { + public static HttpConnectionAndCode reAuth_sendSMSCode(Context context, String account, String CASCookie) { Resources resources = context.getResources(); return Post.post( - resources.getString(R.string.url_SendPhoneOTP), + resources.getString(R.string.url_SendSMSCode), null, resources.getString(R.string.user_agent), resources.getString(R.string.SSO_referer), @@ -184,7 +184,7 @@ public class Net { * @param OTP OTP * @return Response */ - public static HttpConnectionAndCode verifyPhoneOTP(Context context, String OTP, String CASCookie) { + public static HttpConnectionAndCode reAuth_SMSCode(Context context, String OTP, String CASCookie) { Resources resources = context.getResources(); return Post.post( resources.getString(R.string.url_ReAuth), @@ -208,7 +208,7 @@ public class Net { * @param CASCookie CAS Cookie * @return Response */ - public static HttpConnectionAndCode bypass2FA(Context context, String password, String CASCookie) { + public static HttpConnectionAndCode reAuth_Password(Context context, String password, String CASCookie) { Resources resources = context.getResources(); try { HttpConnectionAndCode MFAParams = Get.get( diff --git a/app/src/main/java/top/yvyan/guettable/service/fetch/StaticService.java b/app/src/main/java/top/yvyan/guettable/service/fetch/StaticService.java index 72126655822b6d14fb8641ba8f6ffc56071838fb..9684425bb3d112a004dcefbf1463d379d2305d6b 100644 --- a/app/src/main/java/top/yvyan/guettable/service/fetch/StaticService.java +++ b/app/src/main/java/top/yvyan/guettable/service/fetch/StaticService.java @@ -48,8 +48,8 @@ public class StaticService { * ERROR2 : 需要使用外网网址进行访问 * ERROR3 : 验证码发送CD */ - public static String SendPhoneOTP(Context context, String account, String CASCookie) { - HttpConnectionAndCode response = Net.sendPhoneOTP(context, account, CASCookie); + public static String reAuth_sendSMSCode(Context context, String account, String CASCookie) { + HttpConnectionAndCode response = Net.reAuth_sendSMSCode(context, account, CASCookie); if (response.code != 0) { if (response.code == -5) { return "ERROR2"; @@ -68,8 +68,8 @@ public class StaticService { return "ERROR0"; } - public static String bypass2FA(Context context, String Password, String CASCookie) { - HttpConnectionAndCode response = Net.bypass2FA(context, Password, CASCookie); + public static String reAuth_Password(Context context, String Password, String CASCookie) { + HttpConnectionAndCode response = Net.reAuth_Password(context, Password, CASCookie); if (response.code != 0) { if (response.code == -5) { return "ERROR2"; @@ -88,14 +88,14 @@ public class StaticService { * * @param context context * @param CASCookie CAS Cookie - * @param OTP OTP手机验证码 + * @param SMSCode OTP手机验证码 * @return 多因素身份验证令牌Cookie * ERROR0 : 网络错误 * ERROR1 : 验证码错误 * ERROR2 : 需要使用外网网址进行访问 */ - public static String VerifyPhoneOTP(Context context, String OTP, String CASCookie) { - HttpConnectionAndCode response = Net.verifyPhoneOTP(context, OTP, CASCookie); + public static String reAuth_SMSCode(Context context, String SMSCode, String CASCookie) { + HttpConnectionAndCode response = Net.reAuth_SMSCode(context, SMSCode, CASCookie); if (response.code != 0) { if (response.code == -5) { return "ERROR2"; diff --git a/app/src/main/res/layout/activity_about.xml b/app/src/main/res/layout/activity_about.xml index ad01191d6e003393f16374dcd22b825fb624fd65..e20cfd2eff7b33ecf46ce1c076aaf293d758d573 100644 --- a/app/src/main/res/layout/activity_about.xml +++ b/app/src/main/res/layout/activity_about.xml @@ -443,6 +443,44 @@ android:layout_height="0.1dp" android:background="@color/xui_config_color_gray_9" /> + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/login_phoneotp.xml b/app/src/main/res/layout/login_smscode.xml similarity index 88% rename from app/src/main/res/layout/login_phoneotp.xml rename to app/src/main/res/layout/login_smscode.xml index ddf08e09df91c16ff2add6c2980efe3ad1a6e0a7..4fd9ef284f79a19409644f5671e58ab2152e6ec2 100644 --- a/app/src/main/res/layout/login_phoneotp.xml +++ b/app/src/main/res/layout/login_smscode.xml @@ -19,7 +19,7 @@ android:layout_height="wrap_content" android:layout_gravity="center" android:layout_margin="8dp" - android:text="@string/login_2fa_phoneotp" + android:text="@string/login_2fa_smscode" android:textSize="20sp" /> +