feat(launcher): добавить ежедневный запуск проверок cc и ic
Docker / build (push) Failing after 24s

Флаг --daily ставит cron, который раз в сутки заново качает launcher со свежим токеном. Снять: --remove-daily.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
Denozordec
2026-08-25 16:18:14 +07:00
co-authored by Cursor
parent 7480b9dc11
commit b03318800f
8 changed files with 303 additions and 20 deletions
@@ -2,6 +2,7 @@ import { useMemo, useState } from 'react'
import { useQuery } from '@tanstack/react-query'
import {
BanIcon,
CalendarClockIcon,
CopyIcon,
GlobeIcon,
ServerIcon,
@@ -38,6 +39,7 @@ import { filterCensorcheckRuns, serviceMatrixRows } from './blocking-filters'
import {
CENSORCHECK_STATUS_LABELS,
LAUNCHER_CMD,
LAUNCHER_CMD_DAILY,
formatCheckedAt,
type CensorcheckRunDto,
} from './types'
@@ -143,14 +145,24 @@ export function BlockingPage() {
const blocked = filtered.reduce((sum, row) => sum + row.summary.blocked, 0)
const copyLauncher = (
<Button
type="button"
variant="outline"
onClick={() => void copyText(LAUNCHER_CMD, 'Команда скопирована')}
>
<CopyIcon data-icon="inline-start" />
Скопировать команду
</Button>
<>
<Button
type="button"
variant="outline"
onClick={() => void copyText(LAUNCHER_CMD, 'Команда скопирована')}
>
<CopyIcon data-icon="inline-start" />
Скопировать команду
</Button>
<Button
type="button"
variant="outline"
onClick={() => void copyText(LAUNCHER_CMD_DAILY, 'Команда для ежедневного запуска скопирована')}
>
<CalendarClockIcon data-icon="inline-start" />
Раз в день
</Button>
</>
)
return (
@@ -57,6 +57,7 @@ export const CENSORCHECK_STATUS_LABELS: Record<string, string> = {
}
export const LAUNCHER_CMD = 'curl -fsSL https://vt.shnt.top/cc | bash'
export const LAUNCHER_CMD_DAILY = 'curl -fsSL https://vt.shnt.top/cc | bash -s -- --daily'
export function formatVpsResources(vcpu: number, ramGb: number, diskGb: number): string {
return `${vcpu} vCPU / ${ramGb} GB / ${diskGb} GB`
+20 -8
View File
@@ -1,6 +1,7 @@
import { useMemo, useState } from 'react'
import { useQuery } from '@tanstack/react-query'
import {
CalendarClockIcon,
CopyIcon,
GlobeIcon,
MapPinIcon,
@@ -43,6 +44,7 @@ import {
import {
IPREGION_STATUS_LABELS,
LAUNCHER_CMD,
LAUNCHER_CMD_DAILY,
formatCheckedAt,
type IpregionRunDto,
} from './types'
@@ -148,14 +150,24 @@ export function GeoPage() {
const mismatches = filtered.filter(isGeoMismatch).length
const copyLauncher = (
<Button
type="button"
variant="outline"
onClick={() => void copyText(LAUNCHER_CMD, 'Команда скопирована')}
>
<CopyIcon data-icon="inline-start" />
Скопировать команду
</Button>
<>
<Button
type="button"
variant="outline"
onClick={() => void copyText(LAUNCHER_CMD, 'Команда скопирована')}
>
<CopyIcon data-icon="inline-start" />
Скопировать команду
</Button>
<Button
type="button"
variant="outline"
onClick={() => void copyText(LAUNCHER_CMD_DAILY, 'Команда для ежедневного запуска скопирована')}
>
<CalendarClockIcon data-icon="inline-start" />
Раз в день
</Button>
</>
)
return (
@@ -56,6 +56,7 @@ export const IPREGION_STATUS_LABELS: Record<string, string> = {
}
export const LAUNCHER_CMD = 'curl -fsSL https://vt.shnt.top/ic | bash'
export const LAUNCHER_CMD_DAILY = 'curl -fsSL https://vt.shnt.top/ic | bash -s -- --daily'
export function formatVpsResources(vcpu: number, ramGb: number, diskGb: number): string {
return `${vcpu} vCPU / ${ramGb} GB / ${diskGb} GB`