cursor-vip update

This commit is contained in:
kingparks@jeter.eu.org
2025-04-10 23:21:11 +08:00
parent 23bb3ef6cf
commit 5f01df284f
13 changed files with 115 additions and 9 deletions

View File

@@ -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,

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -54,3 +54,5 @@ Cursor目录权限错误: Ошибка разрешений каталога Cur
购买成功,将在重启 cursor-vip 后生效: Покупка успешна, вступит в силу после перезапуска cursor-vip
订阅时长会在验证通过后增加对应的天数: Продолжительность подписки увеличится на соответствующее количество дней после прохождения проверки
免付刷新次数: Бесплатные возможности обновления
抱歉,模式三暂无新账号,请稍后再试: Извините, в моде 3 нет новых учетных записей, попробуйте позже
模式三暂无新账号,将自动切换到模式二: В моде 3 нет новых учетных записей, она автоматически переключится на мод 2

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -38,3 +38,11 @@ func UnSetProxy() {
log.Fatal(err)
}
}
// CheckIfChownRequired 检查是否需要执行 chown 操作
func CheckIfChownRequired(filePath string) bool {
return false
}
func MacOSIsSIPDisable() bool {
return true
}

View File

@@ -102,12 +102,12 @@ func Run() (productSelected string, modelIndexSelected int) {
// 快捷键
_, _ = fmt.Fprintf(params.ColorOut, params.Green, params.Trr.Tr("Switch to EnglishPress '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"))