diff --git a/tui/client/client.go b/tui/client/client.go index 66a258b..ec540fa 100644 --- a/tui/client/client.go +++ b/tui/client/client.go @@ -193,6 +193,16 @@ func (c *Client) DelFToken(deviceID, category string) (err error) { return } +func (c *Client) CheckFToken(deviceID string) (has bool) { + res, err := httplib.Get(c.host+"/checkFToken").Header("sign", sign.Sign(deviceID)).String() + if err != nil { + fmt.Println(err) + return + } + has = gjson.Get(res, "has").Bool() + return +} + func (c *Client) UpExclusiveStatus(exclusiveUsed, exclusiveTotal int64, exclusiveErr, exclusiveToken, deviceID string) { body, _ := json.Marshal(map[string]interface{}{ "exclusiveUsed": exclusiveUsed, diff --git a/tui/locales/en.ini b/tui/locales/en.ini index 0dec01a..9627f39 100644 --- a/tui/locales/en.ini +++ b/tui/locales/en.ini @@ -56,5 +56,8 @@ Cursor目录权限错误: Cursor directory permission error 购买成功,将在重启 cursor-vip 后生效: Purchase successful, will take effect after restart cursor-vip 订阅时长会在验证通过后增加对应的天数: The subscription duration will increase the corresponding number of days after the verification is passed 免付刷新次数: Free refresh times +抱歉,模式三暂无新账号,请稍后再试: Sorry, there are no new accounts in mod 3, please try again later +模式三暂无新账号,将自动切换到模式二: There are no new accounts in mod 3, and it will automatically switch to mod 2 + diff --git a/tui/locales/es.ini b/tui/locales/es.ini index 7f2f836..464ce55 100644 --- a/tui/locales/es.ini +++ b/tui/locales/es.ini @@ -54,4 +54,5 @@ Cursor目录权限错误: Error de permiso de directorio de Cursor 购买成功,将在重启 cursor-vip 后生效: Compra exitosa, se aplicará después de reiniciar cursor-vip 订阅时长会在验证通过后增加对应的天数: La duración de la suscripción aumentará el número de días correspondiente después de que se apruebe la verificación 免付刷新次数: Número de veces de actualización gratuita - +抱歉,模式三暂无新账号,请稍后再试: Lo siento, no hay cuentas nuevas en el mod 3, inténtelo de nuevo más tarde +模式三暂无新账号,将自动切换到模式二: No hay cuentas nuevas en el mod 3, se cambiará automáticamente al mod 2 diff --git a/tui/locales/hu.ini b/tui/locales/hu.ini index 663edd1..2e49e8d 100644 --- a/tui/locales/hu.ini +++ b/tui/locales/hu.ini @@ -54,4 +54,5 @@ Cursor目录权限错误: Cursor könyvtárjogosultsági hiba 购买成功,将在重启 cursor-vip 后生效: Sikeres vásárlás, az újraindítás után lép életbe 订阅时长会在验证通过后增加对应的天数: Az előfizetési idő a jóváhagyás után megfelelő napokkal nő 免付刷新次数: Ingyenes frissítési idők - +抱歉,模式三暂无新账号,请稍后再试: Sajnáljuk, nincsenek új fiókok a 3. módban, kérjük, próbálja újra később +模式三暂无新账号,将自动切换到模式二: Nincsenek új fiókok a 3. módban, automatikusan átvált a 2. módba diff --git a/tui/locales/nl.ini b/tui/locales/nl.ini index 13270bf..79d4a27 100644 --- a/tui/locales/nl.ini +++ b/tui/locales/nl.ini @@ -54,3 +54,5 @@ Cursor目录权限错误: Cursor-mapbevoegdheidsfout 购买成功,将在重启 cursor-vip 后生效: Aankoop succesvol, wordt van kracht na het opnieuw opstarten van cursor-vip 订阅时长会在验证通过后增加对应的天数: De abonnementsduur wordt verhoogd met het overeenkomstige aantal dagen nadat de verificatie is geslaagd 免付刷新次数: Gratis vernieuwingskansen +抱歉,模式三暂无新账号,请稍后再试: Sorry, er zijn geen nieuwe accounts in mod 3, probeer het later opnieuw +模式三暂无新账号,将自动切换到模式二: Er zijn geen nieuwe accounts in mod 3, het zal automatisch overschakelen naar mod 2 diff --git a/tui/locales/ru.ini b/tui/locales/ru.ini index c983330..80a1077 100644 --- a/tui/locales/ru.ini +++ b/tui/locales/ru.ini @@ -54,3 +54,5 @@ Cursor目录权限错误: Ошибка разрешений каталога Cur 购买成功,将在重启 cursor-vip 后生效: Покупка успешна, вступит в силу после перезапуска cursor-vip 订阅时长会在验证通过后增加对应的天数: Продолжительность подписки увеличится на соответствующее количество дней после прохождения проверки 免付刷新次数: Бесплатные возможности обновления +抱歉,模式三暂无新账号,请稍后再试: Извините, в моде 3 нет новых учетных записей, попробуйте позже +模式三暂无新账号,将自动切换到模式二: В моде 3 нет новых учетных записей, она автоматически переключится на мод 2 diff --git a/tui/locales/tr.ini b/tui/locales/tr.ini index 37c14b7..44e5ce2 100644 --- a/tui/locales/tr.ini +++ b/tui/locales/tr.ini @@ -54,3 +54,5 @@ Cursor目录权限错误: Cursor dizin izni hatası 购买成功,将在重启 cursor-vip 后生效: Satın alma başarılı, yeniden başlatma sonrasında geçerli olacak 订阅时长会在验证通过后增加对应的天数: Doğrulama yapıldıktan sonra abonelik süresi ilgili gün sayısını artıracaktır 免付刷新次数: Ücretsiz yenileme sayısı +抱歉,模式三暂无新账号,请稍后再试: Üzgünüz, mod 3'te yeni hesap yok, lütfen daha sonra tekrar deneyin +模式三暂无新账号,将自动切换到模式二: Mod 3'te yeni hesap yok ve otomatik olarak mod 2'ye geçecektir diff --git a/tui/params/params.go b/tui/params/params.go index 3178850..900022f 100644 --- a/tui/params/params.go +++ b/tui/params/params.go @@ -1,6 +1,6 @@ package params -var Version = 253 +var Version = 257 var Hosts = []string{"https://cursor.jeter.eu.org", "http://129.154.205.7:7193"} @@ -14,9 +14,11 @@ var Green = "\033[32m%s\033[0m\n" var Yellow = "\033[33m%s\033[0m\n" var HGreen = "\033[1;32m%s\033[0m" var DGreen = "\033[4;32m%s\033[0m\n" -var Red = "\033[31m%s\033[0m\n" + +// var Red = "\033[31m%s\033[0m\n" +var Red = "\033[1;31m%s\033[0m\n" var DefaultColor = "%s" var M3DaysRemainingOnTrial = "..." var Product = []string{"cursor IDE"} -var IsOnlyMod2 = true +var IsOnlyMod2 = false diff --git a/tui/shortcut/shortcut.go b/tui/shortcut/shortcut.go index beb252b..b6bdcaf 100644 --- a/tui/shortcut/shortcut.go +++ b/tui/shortcut/shortcut.go @@ -114,6 +114,10 @@ func Do() { keyBuffer = nil case strings.HasSuffix(combination, "u3d"): + if !client.Cli.CheckFToken(params.DeviceID) { + _, _ = fmt.Fprintf(params.ColorOut, params.Yellow, params.Trr.Tr("抱歉,模式三暂无新账号,请稍后再试")) + return + } if params.M3c > "0" { if err = client.Cli.DelFToken(params.DeviceID, "u3"); err != nil { return @@ -130,6 +134,10 @@ func Do() { keyBuffer = nil case strings.HasSuffix(combination, "u3t"): + if !client.Cli.CheckFToken(params.DeviceID) { + _, _ = fmt.Fprintf(params.ColorOut, params.Yellow, params.Trr.Tr("抱歉,模式三暂无新账号,请稍后再试")) + return + } if params.M3c > "0" { if err = client.Cli.DelFToken(params.DeviceID, "u3"); err != nil { return @@ -146,6 +154,10 @@ func Do() { keyBuffer = nil case strings.HasSuffix(combination, "u3h"): + if !client.Cli.CheckFToken(params.DeviceID) { + _, _ = fmt.Fprintf(params.ColorOut, params.Yellow, params.Trr.Tr("抱歉,模式三暂无新账号,请稍后再试")) + return + } if params.M3c > "0" { if err = client.Cli.DelFToken(params.DeviceID, "u3"); err != nil { return diff --git a/tui/tool/setProxy_linux.go b/tui/tool/setProxy_linux.go index 334197d..e552e5f 100644 --- a/tui/tool/setProxy_linux.go +++ b/tui/tool/setProxy_linux.go @@ -4,6 +4,8 @@ package tool import "fmt" +import "os" +import "syscall" func SetProxy(server string, port string) { fmt.Println("Set HTTP and HTTPS proxy manually: ", server+":"+port) @@ -12,3 +14,27 @@ func SetProxy(server string, port string) { func UnSetProxy() { fmt.Println("UnSet HTTP and HTTPS proxy manually: ") } + +// CheckIfChownRequired 检查是否需要执行 chown 操作 +func CheckIfChownRequired(filePath string) bool { + // 获取文件信息 + fileInfo, err := os.Stat(filePath) + if err != nil { + return false + } + // 获取文件的UID + stat, ok := fileInfo.Sys().(*syscall.Stat_t) + if !ok { + return false + } + // 获取当前用户的UID + currentUID := os.Getuid() + // 比较文件UID和当前用户UID + if int(stat.Uid) != currentUID { + return true + } + return false +} +func MacOSIsSIPDisable() bool { + return true +} diff --git a/tui/tool/setProxy_mac.go b/tui/tool/setProxy_mac.go index 0ba819f..44835b6 100644 --- a/tui/tool/setProxy_mac.go +++ b/tui/tool/setProxy_mac.go @@ -5,7 +5,9 @@ package tool import ( "log" + "os" "os/exec" + "syscall" ) func SetProxy(server string, port string) { @@ -39,3 +41,38 @@ func UnSetProxy() { log.Fatalf("Failed to unset HTTPS proxy: %v", err) } } + +// CheckIfChownRequired 检查是否需要执行 chown 操作 +func CheckIfChownRequired(filePath string) bool { + // 获取文件信息 + fileInfo, err := os.Stat(filePath) + if err != nil { + return false + } + // 获取文件的UID + stat, ok := fileInfo.Sys().(*syscall.Stat_t) + if !ok { + return false + } + // 获取当前用户的UID + currentUID := os.Getuid() + // 比较文件UID和当前用户UID + if int(stat.Uid) != currentUID { + return true + } + return false +} + +func MacOSIsSIPDisable() bool { + // 执行 csrutil status 命令,检查 SIP 状态 + // 如果 SIP 状态为已禁用,则返回 true + // 否则返回 false + res, err := exec.Command("csrutil", "status").Output() + if err != nil { + return false + } + if string(res) == "System Integrity Protection status: disabled.\n" { + return true + } + return false +} diff --git a/tui/tool/setProxy_win.go b/tui/tool/setProxy_win.go index b4e00db..9397b6a 100644 --- a/tui/tool/setProxy_win.go +++ b/tui/tool/setProxy_win.go @@ -38,3 +38,11 @@ func UnSetProxy() { log.Fatal(err) } } + +// CheckIfChownRequired 检查是否需要执行 chown 操作 +func CheckIfChownRequired(filePath string) bool { + return false +} +func MacOSIsSIPDisable() bool { + return true +} diff --git a/tui/tui.go b/tui/tui.go index 590ea0d..d4d1b13 100644 --- a/tui/tui.go +++ b/tui/tui.go @@ -102,12 +102,12 @@ func Run() (productSelected string, modelIndexSelected int) { // 快捷键 _, _ = fmt.Fprintf(params.ColorOut, params.Green, params.Trr.Tr("Switch to English:Press 'sen' on keyboard in turn")) modelIndexSelected = int(params.Mode) - if !params.IsOnlyMod2 { - _, _ = fmt.Fprintf(params.ColorOut, params.Green, params.Trr.Tr("切换模式依次按键盘")+": sm1/sm2/sm3/sm4") - } + //if !params.IsOnlyMod2 { + // _, _ = fmt.Fprintf(params.ColorOut, params.Green, params.Trr.Tr("切换模式依次按键盘")+": sm1/sm2/sm3/sm4") + //} // 试用账号 if params.Mode == 3 { - _, _ = fmt.Fprintf(params.ColorOut, params.Green, params.Trr.Tr("查询账号自动刷新剩余天数:依次按键盘 q3d")) + //_, _ = fmt.Fprintf(params.ColorOut, params.Green, params.Trr.Tr("查询账号自动刷新剩余天数:依次按键盘 q3d")) _, _ = fmt.Fprintf(params.ColorOut, params.Green, params.Trr.Tr("小额付费刷新账号:依次按键盘 u3d")) _, _ = fmt.Fprintf(params.ColorOut, params.Green, "10x"+params.Trr.Tr("小额付费刷新账号:依次按键盘 u3t")) _, _ = fmt.Fprintf(params.ColorOut, params.Green, "100x"+params.Trr.Tr("小额付费刷新账号:依次按键盘 u3h"))