Not in the top 1,000 by GitHub stars

ikuaidev/ikuai-cli

CLI tool for managing iKuai routers — network, VPN, firewall, users, QoS and more from the terminal. AI-agent ready.

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → c5fdb9d110d2

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit c5fdb9d110d27aa2fef4c083fa2057f06b4b7b3c

148GitHub stars
7stars in 7 days
1skill in this repository
0commits in 30 days

Heat

5.2
  • Star growth, last 7 daysNot available
  • Star growth, last 24 hoursNot available
  • Rank movement, last 7 daysNot available
  • Commits, last 30 daysNot available
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekNot available

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Oct 25, 2026Nov 6, 2026148

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

ikuai-cli

When your agent uses it

CLI for managing iKuai routers via local v4.0 API. Use when the user asks to check router status, configure network/DNS/DHCP/VPN/firewall, manage users, view logs, or automate any iKuai router operation.

What it loads into context

Frontmatter

64 tokens

Always available to the agent

SKILL.md

961 tokens

When the skill is activated

Reference documents

25,270 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. When to Use
  2. Prerequisites
  3. Output Modes
  4. Domain Skills
  5. Command Shape
  6. Error Handling

Scripts executed separately

  • Makefile
  • cmd/ikuai-cli/main.go
  • examples/quickstart.sh
  • examples/read-only.sh
  • internal/api/client.go
  • internal/api/client_test.go
  • internal/buildinfo/buildinfo.go
  • internal/cliapp/confirm.go
  • internal/cliapp/errors.go
  • internal/cliapp/helpers.go
  • internal/cliapp/helpers_test.go
  • internal/cliapp/runtime.go
  • internal/cliapp/runtime_test.go
  • internal/cmd/advanced/behavior_test.go
  • internal/cmd/advanced/command.go
  • internal/cmd/auth/command.go
  • internal/cmd/auth/command_test.go
  • internal/cmd/authserver/behavior_test.go
  • internal/cmd/authserver/command.go
  • internal/cmd/completion/command.go
  • internal/cmd/log/behavior_test.go
  • internal/cmd/log/command.go
  • internal/cmd/monitor/command.go
  • internal/cmd/monitor/command_test.go
  • internal/cmd/network/behavior_test.go
  • internal/cmd/network/command.go
  • internal/cmd/network/command_test.go
  • internal/cmd/objects/behavior_test.go
  • internal/cmd/objects/command.go
  • internal/cmd/qos/behavior_test.go
  • internal/cmd/qos/command.go
  • internal/cmd/repl.go
  • internal/cmd/repl_test.go
  • internal/cmd/root.go
  • internal/cmd/root_test.go
  • internal/cmd/routing/behavior_test.go
  • internal/cmd/routing/command.go
  • internal/cmd/security/behavior_test.go
  • internal/cmd/security/command.go
  • internal/cmd/system/behavior_test.go
  • internal/cmd/system/command.go
  • internal/cmd/system/command_test.go
  • internal/cmd/users/behavior_test.go
  • internal/cmd/users/command.go
  • internal/cmd/version/command.go
  • internal/cmd/version/command_test.go
  • internal/cmd/vpn/behavior_test.go
  • internal/cmd/vpn/command.go
  • internal/cmd/wireless/behavior_test.go
  • internal/cmd/wireless/command.go
  • internal/output/printer.go
  • internal/output/printer_test.go
  • internal/output/table.go
  • internal/session/session.go
  • internal/session/session_test.go
  • internal/ssh/console.go
  • scripts/install.sh
  • scripts/smoke.sh

Files

  • .github/ISSUE_TEMPLATE/bug_report.mddoc564 bytes
  • .github/ISSUE_TEMPLATE/config.ymlasset208 bytes
  • .github/ISSUE_TEMPLATE/feature_request.mddoc508 bytes
  • .github/dependabot.ymlasset363 bytes
  • .github/pull_request_template.mddoc277 bytes
  • .github/workflows/ci.ymlasset848 bytes
  • .github/workflows/codeql.ymlasset923 bytes
  • .github/workflows/release.ymlasset916 bytes
  • .gitignoreasset195 bytes
  • .golangci.ymlasset219 bytes
  • .goreleaser.ymlasset1,036 bytes
  • CODE_OF_CONDUCT.mddoc2,590 bytes
  • CONTRIBUTING.mddoc819 bytes
  • LICENSEasset1,079 bytes
  • Makefileruns1,560 bytes
  • README.mddoc8,202 bytes
  • README_CN.mddoc8,189 bytes
  • SECURITY.mddoc612 bytes
  • SKILL.mdcore3,332 bytes
  • SKILL.mdcore3,332 bytes
  • cmd/ikuai-cli/main.goruns98 bytes
  • docs/cli-reference.mddoc17,614 bytes
  • docs/commands/output.mddoc1,728 bytes
  • docs/compatibility.mddoc4,434 bytes
  • docs/examples/README.mddoc1,545 bytes
  • docs/examples/auth-status.compact.jsonasset75 bytes
  • docs/examples/auth-status.pretty.jsonasset88 bytes
  • docs/examples/monitor-system.pretty.jsonasset20 bytes
  • docs/examples/system-set-response.compact.jsonasset20 bytes
  • docs/examples/users-accounts-list.compact.jsonasset101 bytes
  • docs/examples/version.compact.jsonasset88 bytes
  • docs/images/token-step1.pngasset208,392 bytes
  • docs/install.mddoc1,973 bytes
  • docs/releasing.mddoc911 bytes
  • examples/quickstart.shruns205 bytes
  • examples/read-only.shruns220 bytes
  • go.modasset382 bytes
  • go.sumasset1,985 bytes
  • internal/api/client.goruns8,931 bytes
  • internal/api/client_test.goruns10,516 bytes
  • internal/buildinfo/buildinfo.goruns83 bytes
  • internal/cliapp/confirm.goruns895 bytes
  • internal/cliapp/errors.goruns708 bytes
  • internal/cliapp/helpers.goruns6,961 bytes
  • internal/cliapp/helpers_test.goruns8,649 bytes
  • internal/cliapp/runtime.goruns3,551 bytes
  • internal/cliapp/runtime_test.goruns5,114 bytes
  • internal/cmd/advanced/behavior_test.goruns7,293 bytes
  • internal/cmd/advanced/command.goruns22,260 bytes
  • internal/cmd/auth/command.goruns3,439 bytes
  • internal/cmd/auth/command_test.goruns6,892 bytes
  • internal/cmd/authserver/behavior_test.goruns4,689 bytes
  • internal/cmd/authserver/command.goruns912 bytes
  • internal/cmd/completion/command.goruns1,504 bytes
  • internal/cmd/log/behavior_test.goruns13,151 bytes
  • internal/cmd/log/command.goruns5,112 bytes
  • internal/cmd/monitor/command.goruns23,176 bytes
  • internal/cmd/monitor/command_test.goruns24,782 bytes
  • internal/cmd/network/behavior_test.goruns7,895 bytes
  • internal/cmd/network/command.goruns65,799 bytes
  • internal/cmd/network/command_test.goruns3,279 bytes
  • internal/cmd/objects/behavior_test.goruns6,255 bytes
  • internal/cmd/objects/command.goruns8,310 bytes
  • internal/cmd/qos/behavior_test.goruns7,203 bytes
  • internal/cmd/qos/command.goruns10,854 bytes
  • internal/cmd/repl.goruns8,956 bytes
  • internal/cmd/repl_test.goruns7,763 bytes
  • internal/cmd/root.goruns9,408 bytes
  • internal/cmd/root_test.goruns11,430 bytes
  • internal/cmd/routing/behavior_test.goruns11,049 bytes
  • internal/cmd/routing/command.goruns19,120 bytes
  • internal/cmd/security/behavior_test.goruns8,038 bytes
  • internal/cmd/security/command.goruns27,822 bytes
  • internal/cmd/system/behavior_test.goruns7,569 bytes
  • internal/cmd/system/command.goruns33,136 bytes
  • internal/cmd/system/command_test.goruns3,760 bytes
  • internal/cmd/users/behavior_test.goruns9,051 bytes
  • internal/cmd/users/command.goruns16,182 bytes
  • internal/cmd/version/command.goruns1,216 bytes
  • internal/cmd/version/command_test.goruns2,182 bytes
  • internal/cmd/vpn/behavior_test.goruns5,471 bytes
  • internal/cmd/vpn/command.goruns32,022 bytes
  • internal/cmd/wireless/behavior_test.goruns5,694 bytes
  • internal/cmd/wireless/command.goruns15,432 bytes
  • internal/output/printer.goruns5,152 bytes
  • internal/output/printer_test.goruns27,958 bytes
  • internal/output/table.goruns17,403 bytes
  • internal/session/session.goruns3,922 bytes
  • internal/session/session_test.goruns4,749 bytes
  • internal/ssh/console.goruns4,104 bytes
  • scripts/install.shruns3,303 bytes
  • scripts/smoke.shruns126 bytes
  • skills/advanced.mddoc1,875 bytes
  • skills/auth-server.mddoc260 bytes
  • skills/auth.mddoc220 bytes
  • skills/batch.mddoc2,119 bytes
  • skills/completion.mddoc587 bytes
  • skills/log.mddoc971 bytes
  • skills/monitor.mddoc6,077 bytes
  • skills/network.mddoc5,029 bytes
  • skills/objects.mddoc1,622 bytes
  • skills/qos.mddoc1,165 bytes
  • skills/routing.mddoc3,241 bytes
  • skills/security.mddoc6,730 bytes
  • skills/system.mddoc3,583 bytes
  • skills/users.mddoc1,331 bytes
  • skills/version.mddoc467 bytes
  • skills/vpn.mddoc4,622 bytes
  • skills/wireless.mddoc1,305 bytes
Read SKILL.md

# ikuai-cli — AI Agent Skill

Go CLI for managing iKuai routers through the local v4.0 HTTP API.

## When to Use

- Router status, CPU, memory, uptime, traffic
- Network: DNS, DHCP, VLAN, NAT, PPPoE, VPN
- Users: online sessions, kick, auth accounts
- Security: ACL, MAC filter, URL filter, domain blacklist
- System: logs, schedules, remote access, VRRP

## Prerequisites
View the complete source on GitHub

Skills included

  • ikuai-cli

Repository facts

License
MIT
Created
Apr 10, 2026
Last pushed
Sep 14, 2026
Forks
12
Open issues
5
Project activity
Active

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 6, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 1 note
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 722 signals by file

.github/ISSUE_TEMPLATE/config.yml

  • Network accessline 2
    contact_links:   - name: Questions and usage help     url: https://github.com/ikuaidev/ikuai-cli/discussions
  • Network accessline 3
    - name: Questions and usage help     url: https://github.com/ikuaidev/ikuai-cli/discussions     about: Use Discussions for general questions and support requests.
  • Network accessline 4
    url: https://github.com/ikuaidev/ikuai-cli/discussions

CODE_OF_CONDUCT.md

  • Network accessline 47
    Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project maintainers via [GitHub Discussions](https://github.com/ikuaidev/ikuai-cli/discussions) (private
  • Network accessline 48
    reported by contacting the project maintainers via [GitHub Discussions](https://github.com/ikuaidev/ikuai-cli/discussions) (private message to a maintainer) or by opening a confidential contact through GitHub's
  • Network accessline 49
    [GitHub Discussions](https://github.com/ikuaidev/ikuai-cli/discussions) (private
  • Network accessline 56
    This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.1, available at [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
  • Network accessline 58
    [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
  • Network accessline 60
    [homepage]: https://www.contributor-covenant.org
  • Network accessline 61
    [v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html

CONTRIBUTING.md

  • Network accessline 7
    - Go 1.21+ - [golangci-lint](https://golangci-lint.run/usage/install/) v2.x
  • Network accessline 8
    - [golangci-lint](https://golangci-lint.run/usage/install/) v2.x
  • Network accessline 14
    git clone https://github.com/ikuaidev/ikuai-cli.git

Makefile

  • Executable scriptline 1
    Executable file
  • Dangerous shell operationline 47
    rm -rf $(DIST) $(BINARY)

README.md

  • Network accessline 3
    [![CI](https://github.com/ikuaidev/ikuai-cli/actions/workflows/ci.yml/badge.svg)](https://github.com/ikuaidev/ikuai-cli/actions/workflows/ci.yml)
  • Network accessline 4
    [![Release](https://img.shields.io/github/v/release/ikuaidev/ikuai-cli)](https://github.com/ikuaidev/ikuai-cli/releases)
  • Network accessline 5
    [![Go Version](https://img.shields.io/github/go-mod/go-version/ikuaidev/ikuai-cli)](go.mod)
  • Network accessline 6
    [![Go Report Card](https://goreportcard.com/badge/github.com/ikuaidev/ikuai-cli)](https://goreportcard.com/report/github.com/ikuaidev/ikuai-cli)
  • Network accessline 7
    [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
  • Dangerous shell operationline 18
    curl -fsSL https://raw.githubusercontent.com/ikuaidev/ikuai-cli/main/scripts/install.sh | sh
  • Network accessline 18
    curl -fsSL https://raw.githubusercontent.com/ikuaidev/ikuai-cli/main/scripts/install.sh | sh
  • Network accessline 30
    **Pre-built binary:** download from [GitHub Releases](https://github.com/ikuaidev/ikuai-cli/releases).
  • Network accessline 33
    VERSION=0.1.0 ARCH=linux_amd64 # ARM32 Linux uses ARCH=linux_armv7 curl -fsSL "https://github.com/ikuaidev/ikuai-cli/releases/download/v${VERSION}/ikuai-cli_${ARCH}.tar.gz" -o ikuai-cli.tar.gz
  • Network accessline 34
    # ARM32 Linux uses ARCH=linux_armv7 curl -fsSL "https://github.com/ikuaidev/ikuai-cli/releases/download/v${VERSION}/ikuai-cli_${ARCH}.tar.gz" -o ikuai-cli.tar.gz curl -fsSL "https://github.com/ikuaidev/ikuai-cli/releases/download/v${VERSION
  • Network accessline 35
    curl -fsSL "https://github.com/ikuaidev/ikuai-cli/releases/download/v${VERSION}/ikuai-cli_${ARCH}.tar.gz" -o ikuai-cli.tar.gz
  • Network accessline 36
    curl -fsSL "https://github.com/ikuaidev/ikuai-cli/releases/download/v${VERSION}/checksums.txt" -o checksums.txt
  • Dangerous shell operationline 39
    sudo mv ikuai-cli /usr/local/bin/
  • Network accessline 42
    Windows: download `ikuai-cli_windows_amd64.zip` from [Releases](https://github.com/ikuaidev/ikuai-cli/releases).
  • Network accessline 47
    git clone https://github.com/ikuaidev/ikuai-cli.git
  • Network accessline 77
    export IKUAI_CLI_BASE_URL=https://192.168.1.1
  • Access to secretsline 78
    [Credential-related source omitted]
  • Network accessline 85
    ikuai-cli auth set-url https://192.168.1.1
  • Access to secretsline 155
    [Credential-related source omitted]
  • Network accessline 176
    **[Skills CLI](https://github.com/vercel-labs/skills) (Recommended):**
  • Network accessline 191
    mkdir -p .agents/skills git clone https://github.com/ikuaidev/ikuai-cli.git .agents/skills/ikuai-cli
  • Network accessline 192
    git clone https://github.com/ikuaidev/ikuai-cli.git .agents/skills/ikuai-cli
  • Network accessline 209
    git clone https://github.com/ikuaidev/ikuai-cli.git
  • Network accessline 226
    - [Issues](https://github.com/ikuaidev/ikuai-cli/issues) — bug reports and feature requests

README_CN.md

  • Network accessline 3
    [![CI](https://github.com/ikuaidev/ikuai-cli/actions/workflows/ci.yml/badge.svg)](https://github.com/ikuaidev/ikuai-cli/actions/workflows/ci.yml)
  • Network accessline 4
    [![Release](https://img.shields.io/github/v/release/ikuaidev/ikuai-cli)](https://github.com/ikuaidev/ikuai-cli/releases)
  • Network accessline 5
    [![Go Version](https://img.shields.io/github/go-mod/go-version/ikuaidev/ikuai-cli)](go.mod)
  • Network accessline 6
    [![Go Report Card](https://goreportcard.com/badge/github.com/ikuaidev/ikuai-cli)](https://goreportcard.com/report/github.com/ikuaidev/ikuai-cli)
  • Network accessline 7
    [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
  • Dangerous shell operationline 18
    curl -fsSL https://raw.githubusercontent.com/ikuaidev/ikuai-cli/main/scripts/install.sh | sh
  • Network accessline 18
    curl -fsSL https://raw.githubusercontent.com/ikuaidev/ikuai-cli/main/scripts/install.sh | sh
  • Network accessline 30
    **预编译二进制:** 从 [Releases 页面](https://github.com/ikuaidev/ikuai-cli/releases) 下载。
  • Network accessline 33
    VERSION=0.1.0 ARCH=linux_amd64 # ARM32 Linux 使用 ARCH=linux_armv7 curl -fsSL "https://github.com/ikuaidev/ikuai-cli/releases/download/v${VERSION}/ikuai-cli_${ARCH}.tar.gz" -o ikuai-cli.tar.gz
  • Network accessline 34
    # ARM32 Linux 使用 ARCH=linux_armv7 curl -fsSL "https://github.com/ikuaidev/ikuai-cli/releases/download/v${VERSION}/ikuai-cli_${ARCH}.tar.gz" -o ikuai-cli.tar.gz curl -fsSL "https://github.com/ikuaidev/ikuai-cli/releases/download/v${VERSION}/
  • Network accessline 35
    curl -fsSL "https://github.com/ikuaidev/ikuai-cli/releases/download/v${VERSION}/ikuai-cli_${ARCH}.tar.gz" -o ikuai-cli.tar.gz
  • Network accessline 36
    curl -fsSL "https://github.com/ikuaidev/ikuai-cli/releases/download/v${VERSION}/checksums.txt" -o checksums.txt
  • Dangerous shell operationline 39
    sudo mv ikuai-cli /usr/local/bin/
  • Network accessline 42
    Windows:从 [Releases](https://github.com/ikuaidev/ikuai-cli/releases) 下载 `ikuai-cli_windows_amd64.zip`。
  • Network accessline 47
    git clone https://github.com/ikuaidev/ikuai-cli.git
  • Network accessline 77
    export IKUAI_CLI_BASE_URL=https://192.168.1.1
  • Access to secretsline 78
    [Credential-related source omitted]
  • Network accessline 85
    ikuai-cli auth set-url https://192.168.1.1
  • Network accessline 176
    **[Skills CLI](https://github.com/vercel-labs/skills)(推荐):**
  • Network accessline 191
    mkdir -p .agents/skills git clone https://github.com/ikuaidev/ikuai-cli.git .agents/skills/ikuai-cli
  • Network accessline 192
    git clone https://github.com/ikuaidev/ikuai-cli.git .agents/skills/ikuai-cli
  • Network accessline 209
    git clone https://github.com/ikuaidev/ikuai-cli.git
  • Network accessline 226
    - [Issues](https://github.com/ikuaidev/ikuai-cli/issues) — Bug 报告与功能建议

SECURITY.md

  • Network accessline 7
    Report via [GitHub Security Advisories](https://github.com/ikuaidev/ikuai-cli/security/advisories/new).

SKILL.md

  • Network accessline 24
    # Session (persistent) ikuai-cli auth set-url https://192.168.1.1
  • Network accessline 25
    ikuai-cli auth set-url https://192.168.1.1
  • Network accessline 28
    # OR environment variables (ephemeral) export IKUAI_CLI_BASE_URL=https://192.168.1.1
  • Network accessline 29
    export IKUAI_CLI_BASE_URL=https://192.168.1.1
  • Access to secretsline 30
    [Credential-related source omitted]

cmd/ikuai-cli/main.go

  • Executable scriptline 1
    Executable file

docs/cli-reference.md

  • Network accessline 51
    ikuai-cli auth set-url https://192.168.1.1

docs/examples/auth-status.compact.json

  • Network accessline 1
    {"authenticated":true,"base_url":"https://192.168.1.1","username":"admin"}

docs/examples/auth-status.pretty.json

  • Network accessline 1
    {   "authenticated": true,   "base_url": "https://192.168.1.1",
  • Network accessline 2
    "authenticated": true,   "base_url": "https://192.168.1.1",   "username": "admin"
  • Network accessline 3
    "base_url": "https://192.168.1.1",

docs/install.md

  • Network accessline 5
    Download a prebuilt binary from the [Releases page](https://github.com/ikuaidev/ikuai-cli/releases).
  • Network accessline 15
    curl -fsSL "https://github.com/ikuaidev/ikuai-cli/releases/download/v${VERSION}/ikuai-cli_${ARCH}.tar.gz" \
  • Network accessline 18
    # Verify checksum curl -fsSL "https://github.com/ikuaidev/ikuai-cli/releases/download/v${VERSION}/checksums.txt" \
  • Network accessline 19
    curl -fsSL "https://github.com/ikuaidev/ikuai-cli/releases/download/v${VERSION}/checksums.txt" \
  • Dangerous shell operationline 28
    sudo mv ikuai-cli /usr/local/bin/
  • Network accessline 34
    Download `ikuai-cli_windows_amd64.zip` from the [Releases page](https://github.com/ikuaidev/ikuai-cli/releases),
  • Network accessline 48
    git clone https://github.com/ikuaidev/ikuai-cli.git

examples/quickstart.sh

  • Executable scriptline 1
    #!/usr/bin/env sh
  • Network accessline 4
    ikuai-cli auth set-url https://192.168.1.1

examples/read-only.sh

  • Executable scriptline 1
    #!/usr/bin/env sh

internal/api/client.go

  • Executable scriptline 1
    Executable file
  • Network accessline 76
    RawMode bool // When true, check() returns the full envelope; otherwise only data. 	DryRun  bool // When true, write methods (Post/Put/Patch/Delete) print the request and return without executing. 	http    *http.Client
  • Network accessline 77
    DryRun  bool // When true, write methods (Post/Put/Patch/Delete) print the request and return without executing. 	http    *http.Client }
  • Network accessline 78
    http    *http.Client
  • Network accessline 82
    func New(baseURL, token string) *Client { 	return NewWithHTTPClient(baseURL, token, &http.Client{
  • Network accessline 83
    return NewWithHTTPClient(baseURL, token, &http.Client{
  • Network accessline 91
    // NewWithHTTPClient creates a Client with a custom http.Client.
  • Network accessline 92
    func NewWithHTTPClient(baseURL, token string, httpClient *http.Client) *Client {

internal/api/client_test.go

  • Executable scriptline 1
    Executable file
  • Network accessline 24
    func TestCheckReturnsDataFieldOnly(t *testing.T) { 	client := New("https://192.168.1.1", "")
  • Network accessline 25
    client := New("https://192.168.1.1", "")
  • Network accessline 36
    func TestCheckRawModeReturnsFullEnvelope(t *testing.T) { 	client := New("https://192.168.1.1", "")
  • Network accessline 37
    client := New("https://192.168.1.1", "")
  • Network accessline 51
    func TestCheckReturnsNullDataSynthesizesMessage(t *testing.T) { 	client := New("https://192.168.1.1", "")
  • Network accessline 52
    client := New("https://192.168.1.1", "")
  • Network accessline 63
    func TestCheckReturnsAbsentDataSynthesizesMessage(t *testing.T) { 	client := New("https://192.168.1.1", "")
  • Network accessline 64
    client := New("https://192.168.1.1", "")
  • Network accessline 75
    func TestCheckNormalizesNilToNull(t *testing.T) { 	client := New("https://192.168.1.1", "")
  • Network accessline 76
    client := New("https://192.168.1.1", "")
  • Network accessline 86
    func TestCheckErrorWithHint3001(t *testing.T) { 	client := New("https://192.168.1.1", "")
  • Network accessline 87
    client := New("https://192.168.1.1", "")
  • Network accessline 104
    func TestCheckErrorWithHint3007(t *testing.T) { 	client := New("https://192.168.1.1", "")
  • Network accessline 105
    client := New("https://192.168.1.1", "")
  • Network accessline 116
    func TestCheckErrorUnknownCode(t *testing.T) { 	client := New("https://192.168.1.1", "")
  • Network accessline 117
    client := New("https://192.168.1.1", "")
  • Network accessline 128
    func TestCheckErrorWithHint1008(t *testing.T) { 	client := New("https://192.168.1.1", "")
  • Network accessline 129
    client := New("https://192.168.1.1", "")
  • Network accessline 140
    func TestCheckCode20000IsSuccess(t *testing.T) { 	client := New("https://192.168.1.1", "")
  • Network accessline 141
    client := New("https://192.168.1.1", "")
  • Network accessline 152
    func TestCheckNonJSONResponse(t *testing.T) { 	client := New("https://192.168.1.1", "")
  • Network accessline 153
    client := New("https://192.168.1.1", "")
  • Network accessline 163
    func TestCheckEmptyMessageFallsBackToBody(t *testing.T) { 	client := New("https://192.168.1.1", "")
  • Network accessline 164
    client := New("https://192.168.1.1", "")
  • Network accessline 178
    input := `{"code":0,"message":"set to nil","data":{"comment":"nil value"}}` 	client := New("https://192.168.1.1", "")
  • Network accessline 179
    client := New("https://192.168.1.1", "")
  • Network accessline 190
    func TestCheckReturnsResultsWhenDataAbsent(t *testing.T) { 	client := New("https://192.168.1.1", "")
  • Network accessline 191
    client := New("https://192.168.1.1", "")
  • Network accessline 202
    func TestCheckPrefersDataOverResults(t *testing.T) { 	client := New("https://192.168.1.1", "")
  • Network accessline 203
    client := New("https://192.168.1.1", "")
  • Network accessline 214
    func TestCheckRowIDReturned(t *testing.T) { 	client := New("https://192.168.1.1", "")
  • Network accessline 215
    client := New("https://192.168.1.1", "")
  • Network accessline 226
    func TestCheckRowIDWithoutCode(t *testing.T) { 	client := New("https://192.168.1.1", "")
  • Network accessline 227
    client := New("https://192.168.1.1", "")
  • Network accessline 238
    func TestCheckDataTakesPriorityOverRowID(t *testing.T) { 	client := New("https://192.168.1.1", "")
  • Network accessline 239
    client := New("https://192.168.1.1", "")
  • Network accessline 250
    func TestCheckResultsTakesPriorityOverRowID(t *testing.T) { 	client := New("https://192.168.1.1", "")
  • Network accessline 251
    client := New("https://192.168.1.1", "")
  • Network accessline 262
    func TestCheckRowIDAsString(t *testing.T) { 	client := New("https://192.168.1.1", "")
  • Network accessline 263
    client := New("https://192.168.1.1", "")
  • Network accessline 277
    func TestCheckRowIDRawModeReturnsFullBody(t *testing.T) { 	client := New("https://192.168.1.1", "")
  • Network accessline 278
    client := New("https://192.168.1.1", "")
  • Network accessline 289
    func TestCheckHTTP400(t *testing.T) { 	client := New("https://192.168.1.1", "")
  • Network accessline 290
    client := New("https://192.168.1.1", "")
  • Network accessline 297
    func TestDryRunPostReturnsSyntheticJSON(t *testing.T) { 	client := New("https://192.168.1.1", "tok")
  • Network accessline 298
    client := New("https://192.168.1.1", "tok")
  • Network accessline 316
    func TestDryRunDeleteOmitsBody(t *testing.T) { 	client := New("https://192.168.1.1", "tok")
  • Network accessline 317
    client := New("https://192.168.1.1", "tok")
  • Network accessline 332
    func TestDryRunGetReturnsSyntheticJSON(t *testing.T) { 	client := New("https://192.168.1.1", "tok")
  • Network accessline 333
    client := New("https://192.168.1.1", "tok")

internal/buildinfo/buildinfo.go

  • Executable scriptline 1
    Executable file

internal/cliapp/confirm.go

  • Executable scriptline 1
    Executable file

internal/cliapp/errors.go

  • Executable scriptline 1
    Executable file

internal/cliapp/helpers.go

  • Executable scriptline 1
    Executable file

internal/cliapp/helpers_test.go

  • Executable scriptline 1
    Executable file

internal/cliapp/runtime.go

  • Executable scriptline 1
    Executable file
  • Access to secretsline 69
    [Credential-related source omitted]
  • Access to secretsline 73
    [Credential-related source omitted]
  • Network accessline 86
    func (r *Runtime) RequireURL() error { 	if r.Session == nil || r.Session.BaseURL == "" { 		return &AuthError{Message: "no URL configured. Run: ikuai-cli auth set-url https://192.168.1.1"}
  • Network accessline 87
    if r.Session == nil || r.Session.BaseURL == "" { 		return &AuthError{Message: "no URL configured. Run: ikuai-cli auth set-url https://192.168.1.1"} 	}
  • Network accessline 88
    return &AuthError{Message: "no URL configured. Run: ikuai-cli auth set-url https://192.168.1.1"}

internal/cliapp/runtime_test.go

  • Executable scriptline 1
    Executable file
  • Network accessline 13
    sf := filepath.Join(t.TempDir(), "config.json") 	t.Setenv("IKUAI_CLI_CONFIG_FILE", sf) 	t.Setenv("IKUAI_CLI_BASE_URL", "https://env-router")
  • Network accessline 14
    t.Setenv("IKUAI_CLI_CONFIG_FILE", sf) 	t.Setenv("IKUAI_CLI_BASE_URL", "https://env-router") 	t.Setenv("IKUAI_CLI_TOKEN", "env-token")
  • Network accessline 15
    t.Setenv("IKUAI_CLI_BASE_URL", "https://env-router")
  • Network accessline 18
    if err := session.SaveLogin("https://session-router", "session-token"); err != nil {
  • Network accessline 27
    if r.Session.BaseURL != "https://session-router" {
  • Network accessline 39
    sf := filepath.Join(t.TempDir(), "config.json") 	t.Setenv("IKUAI_CLI_CONFIG_FILE", sf) 	t.Setenv("IKUAI_CLI_BASE_URL", "https://env-router/")
  • Network accessline 40
    t.Setenv("IKUAI_CLI_CONFIG_FILE", sf) 	t.Setenv("IKUAI_CLI_BASE_URL", "https://env-router/") 	t.Setenv("IKUAI_CLI_TOKEN", "env-token")
  • Network accessline 41
    t.Setenv("IKUAI_CLI_BASE_URL", "https://env-router/")
  • Network accessline 49
    if r.Session.BaseURL != "https://env-router" {
  • Network accessline 64
    sf := filepath.Join(t.TempDir(), "config.json") 	t.Setenv("IKUAI_CLI_CONFIG_FILE", sf) 	t.Setenv("IKUAI_CLI_BASE_URL", "https://env-router")
  • Network accessline 65
    t.Setenv("IKUAI_CLI_CONFIG_FILE", sf) 	t.Setenv("IKUAI_CLI_BASE_URL", "https://env-router") 	t.Setenv("IKUAI_CLI_TOKEN", "env-token")
  • Network accessline 66
    t.Setenv("IKUAI_CLI_BASE_URL", "https://env-router")
  • Network accessline 113
    t.Setenv("IKUAI_CLI_BASE_URL", "https://env-router")
  • Network accessline 142
    sf := filepath.Join(t.TempDir(), "config.json") 	t.Setenv("IKUAI_CLI_CONFIG_FILE", sf) 	t.Setenv("IKUAI_CLI_BASE_URL", "https://env-router")
  • Network accessline 143
    t.Setenv("IKUAI_CLI_CONFIG_FILE", sf) 	t.Setenv("IKUAI_CLI_BASE_URL", "https://env-router") 	t.Setenv("IKUAI_CLI_TOKEN", "env-token")
  • Network accessline 144
    t.Setenv("IKUAI_CLI_BASE_URL", "https://env-router")
  • Network accessline 148
    if err := session.SaveBaseURL("https://session-router"); err != nil {
  • Network accessline 159
    t.Errorf("CredSource = %q, want %q", r.CredSource, "env") 	} 	if r.Session.BaseURL != "https://env-router" {
  • Network accessline 160
    } 	if r.Session.BaseURL != "https://env-router" { 		t.Errorf("BaseURL = %q, want env value", r.Session.BaseURL)
  • Network accessline 161
    if r.Session.BaseURL != "https://env-router" {

internal/cmd/advanced/behavior_test.go

  • Executable scriptline 1
    Executable file
  • Network accessline 20
    [Credential-related source omitted]
  • Network accessline 21
    [Credential-related source omitted]
  • Network accessline 22
    [Credential-related source omitted]
  • Network accessline 23
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 77
    [Credential-related source omitted]
  • Network accessline 78
    [Credential-related source omitted]
  • Network accessline 79
    [Credential-related source omitted]
  • Network accessline 80
    seenList := false 	app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{ 		Transport: roundTripFunc(func(req *http.Request) (*http.Response, error) {
  • Network accessline 81
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 135
    [Credential-related source omitted]
  • Network accessline 136
    [Credential-related source omitted]
  • Network accessline 137
    [Credential-related source omitted]
  • Network accessline 138
    seenGet := false 	app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{ 		Transport: roundTripFunc(func(req *http.Request) (*http.Response, error) {
  • Network accessline 139
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 141
    if req.Method == http.MethodGet { 				seenGet = true 				if req.URL.String() != "https://router.local/api/v4.0/advanced-service/snmpd-config" {
  • Network accessline 142
    seenGet = true 				if req.URL.String() != "https://router.local/api/v4.0/advanced-service/snmpd-config" { 					t.Fatalf("GET URL = %q", req.URL.String())
  • Network accessline 143
    if req.URL.String() != "https://router.local/api/v4.0/advanced-service/snmpd-config" {
  • Network accessline 149
    t.Fatalf("method = %q, want %q", req.Method, http.MethodPut) 			} 			if req.URL.String() != "https://router.local/api/v4.0/advanced-service/snmpd-config" {
  • Network accessline 150
    } 			if req.URL.String() != "https://router.local/api/v4.0/advanced-service/snmpd-config" { 				t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/advanced-service/snmpd-config")
  • Network accessline 151
    if req.URL.String() != "https://router.local/api/v4.0/advanced-service/snmpd-config" {
  • Network accessline 152
    t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/advanced-service/snmpd-config")

internal/cmd/advanced/command.go

  • Executable scriptline 1
    Executable file
  • Instruction override signalline 390
    c.Aliases = []string{"rm"} 	} 	c.Flags().BoolP("yes", "y", false, "Skip confirmation prompt")
  • Instruction override signalline 391
    } 	c.Flags().BoolP("yes", "y", false, "Skip confirmation prompt") 	return c
  • Instruction override signalline 392
    c.Flags().BoolP("yes", "y", false, "Skip confirmation prompt")

internal/cmd/auth/command.go

  • Executable scriptline 1
    Executable file
  • Network accessline 21
    Short: "Authentication", 		Long:  `Manage authentication credentials for the iKuai router API.`, 		Example: `  ikuai-cli auth set-url https://192.168.1.1
  • Network accessline 22
    Long:  `Manage authentication credentials for the iKuai router API.`, 		Example: `  ikuai-cli auth set-url https://192.168.1.1   ikuai-cli auth set-token MGFjYzg1ZjMt...
  • Network accessline 23
    Example: `  ikuai-cli auth set-url https://192.168.1.1
  • Network accessline 59
    }, 	} 	authSetURLCmd.Flags().String("url", "", "Router base URL (e.g. https://192.168.1.1)")
  • Network accessline 61
    authSetURLCmd.Flags().String("url", "", "Router base URL (e.g. https://192.168.1.1)")
  • Network accessline 116
    func invalidRouterURLMessage(err error) string { 	return "Invalid router URL.\n\n" + err.Error() + "\n\nTry:\n  ikuai-cli auth set-url 192.168.1.1\n  ikuai-cli auth set-url https://192.168.1.1"
  • Network accessline 117
    return "Invalid router URL.\n\n" + err.Error() + "\n\nTry:\n  ikuai-cli auth set-url 192.168.1.1\n  ikuai-cli auth set-url https://192.168.1.1"

internal/cmd/auth/command_test.go

  • Executable scriptline 1
    Executable file
  • Network accessline 17
    var out bytes.Buffer 	cmd := New(cliapp.New(&out, &out)) 	cmd.SetArgs([]string{"set-url", "https://192.168.1.1/"})
  • Network accessline 19
    cmd.SetArgs([]string{"set-url", "https://192.168.1.1/"})
  • Network accessline 27
    t.Fatalf("Load() error = %v", err) 	} 	if s.BaseURL != "https://192.168.1.1" {
  • Network accessline 28
    } 	if s.BaseURL != "https://192.168.1.1" { 		t.Fatalf("BaseURL = %q, want %q", s.BaseURL, "https://192.168.1.1")
  • Network accessline 29
    if s.BaseURL != "https://192.168.1.1" {
  • Network accessline 30
    t.Fatalf("BaseURL = %q, want %q", s.BaseURL, "https://192.168.1.1")
  • Network accessline 42
    { 			name:       "http scheme", 			args:       []string{"set-url", "http://192.168.1.1/"},
  • Network accessline 43
    name:       "http scheme", 			args:       []string{"set-url", "http://192.168.1.1/"}, 			want:       "https://192.168.1.1",
  • Network accessline 44
    args:       []string{"set-url", "http://192.168.1.1/"},
  • Network accessline 45
    want:       "https://192.168.1.1",
  • Network accessline 46
    normalized: true, 			wantInput:  "http://192.168.1.1/", 		},
  • Network accessline 47
    wantInput:  "http://192.168.1.1/",
  • Network accessline 50
    name:       "missing scheme", 			args:       []string{"set-url", "192.168.1.1"}, 			want:       "https://192.168.1.1",
  • Network accessline 51
    args:       []string{"set-url", "192.168.1.1"}, 			want:       "https://192.168.1.1", 			normalized: true,
  • Network accessline 52
    want:       "https://192.168.1.1",
  • Network accessline 57
    name:       "flag value", 			args:       []string{"set-url", "--url", "router.local/"}, 			want:       "https://router.local",
  • Network accessline 58
    args:       []string{"set-url", "--url", "router.local/"}, 			want:       "https://router.local", 			normalized: true,
  • Network accessline 59
    want:       "https://router.local",
  • Network accessline 63
    { 			name:       "path query and fragment", 			args:       []string{"set-url", "https://192.168.1.1/login?from=cli#top"},
  • Network accessline 64
    name:       "path query and fragment", 			args:       []string{"set-url", "https://192.168.1.1/login?from=cli#top"}, 			want:       "https://192.168.1.1",
  • Network accessline 65
    args:       []string{"set-url", "https://192.168.1.1/login?from=cli#top"},
  • Network accessline 66
    want:       "https://192.168.1.1",
  • Network accessline 69
    { 			name:       "already normalized", 			args:       []string{"set-url", "https://router.local"},
  • Network accessline 70
    name:       "already normalized", 			args:       []string{"set-url", "https://router.local"}, 			want:       "https://router.local",
  • Network accessline 71
    args:       []string{"set-url", "https://router.local"},
  • Network accessline 72
    want:       "https://router.local",
  • Network accessline 141
    { 			name:    "userinfo", 			input:   "https://admin:secret@192.168.1.1",
  • Network accessline 142
    name:    "userinfo", 			input:   "https://admin:secret@192.168.1.1", 			wantErr: "must not include username or password",
  • Network accessline 143
    input:   "https://admin:secret@192.168.1.1",
  • Network accessline 167
    tt.wantErr, 				"ikuai-cli auth set-url 192.168.1.1", 				"ikuai-cli auth set-url https://192.168.1.1",
  • Network accessline 168
    "ikuai-cli auth set-url 192.168.1.1", 				"ikuai-cli auth set-url https://192.168.1.1", 			} {
  • Network accessline 169
    "ikuai-cli auth set-url https://192.168.1.1",
  • Network accessline 244
    if err := session.SaveLogin("https://192.168.1.1", "token-123"); err != nil {

internal/cmd/authserver/behavior_test.go

  • Executable scriptline 1
    Executable file
  • Network accessline 23
    [Credential-related source omitted]
  • Network accessline 24
    [Credential-related source omitted]
  • Network accessline 25
    [Credential-related source omitted]
  • Network accessline 26
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 29
    t.Fatalf("method = %q, want %q", req.Method, http.MethodGet) 			} 			if req.URL.String() != "https://router.local/api/v4.0/auth/web/services" {
  • Network accessline 30
    } 			if req.URL.String() != "https://router.local/api/v4.0/auth/web/services" { 				t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/auth/web/services")
  • Network accessline 31
    if req.URL.String() != "https://router.local/api/v4.0/auth/web/services" {
  • Network accessline 32
    t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/auth/web/services")
  • Network accessline 55
    [Credential-related source omitted]
  • Network accessline 56
    [Credential-related source omitted]
  • Network accessline 57
    [Credential-related source omitted]
  • Network accessline 58
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{

internal/cmd/authserver/command.go

  • Executable scriptline 1
    Executable file

internal/cmd/completion/command.go

  • Executable scriptline 1
    Executable file

internal/cmd/log/behavior_test.go

  • Executable scriptline 1
    Executable file
  • Network accessline 20
    [Credential-related source omitted]
  • Network accessline 21
    [Credential-related source omitted]
  • Network accessline 22
    [Credential-related source omitted]
  • Network accessline 23
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 69
    [Credential-related source omitted]
  • Network accessline 70
    [Credential-related source omitted]
  • Network accessline 71
    [Credential-related source omitted]
  • Network accessline 72
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 75
    t.Fatalf("method = %q, want %q", req.Method, http.MethodDelete) 			} 			if req.URL.String() != "https://router.local/api/v4.0/log/system" {
  • Network accessline 76
    } 			if req.URL.String() != "https://router.local/api/v4.0/log/system" { 				t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/log/system")
  • Network accessline 77
    if req.URL.String() != "https://router.local/api/v4.0/log/system" {
  • Network accessline 78
    t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/log/system")
  • Network accessline 101
    [Credential-related source omitted]
  • Network accessline 102
    [Credential-related source omitted]
  • Network accessline 103
    [Credential-related source omitted]
  • Network accessline 104
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 135
    [Credential-related source omitted]
  • Network accessline 136
    [Credential-related source omitted]
  • Network accessline 137
    [Credential-related source omitted]
  • Network accessline 138
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 169
    [Credential-related source omitted]
  • Network accessline 170
    [Credential-related source omitted]
  • Network accessline 171
    [Credential-related source omitted]
  • Network accessline 172
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 238
    [Credential-related source omitted]
  • Network accessline 239
    [Credential-related source omitted]
  • Network accessline 240
    [Credential-related source omitted]
  • Network accessline 241
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 277
    [Credential-related source omitted]
  • Network accessline 278
    [Credential-related source omitted]
  • Network accessline 279
    [Credential-related source omitted]
  • Network accessline 280
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 310
    [Credential-related source omitted]
  • Network accessline 311
    [Credential-related source omitted]
  • Network accessline 312
    [Credential-related source omitted]
  • Network accessline 313
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 316
    t.Fatalf("method = %q, want %q", req.Method, http.MethodDelete) 			} 			if req.URL.String() != "https://router.local/api/v4.0/log/url-visits" {
  • Network accessline 317
    } 			if req.URL.String() != "https://router.local/api/v4.0/log/url-visits" { 				t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/log/url-visits")
  • Network accessline 318
    if req.URL.String() != "https://router.local/api/v4.0/log/url-visits" {
  • Network accessline 319
    t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/log/url-visits")
  • Network accessline 336
    [Credential-related source omitted]
  • Network accessline 337
    [Credential-related source omitted]
  • Network accessline 338
    [Credential-related source omitted]
  • Network accessline 339
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{

internal/cmd/log/command.go

  • Executable scriptline 1
    Executable file
  • Instruction override signalline 92
    }, 	} 	c.Flags().BoolP("yes", "y", false, "Skip confirmation prompt")
  • Instruction override signalline 93
    } 	c.Flags().BoolP("yes", "y", false, "Skip confirmation prompt") 	return c
  • Instruction override signalline 94
    c.Flags().BoolP("yes", "y", false, "Skip confirmation prompt")

internal/cmd/monitor/command.go

  • Executable scriptline 1
    Executable file

internal/cmd/monitor/command_test.go

  • Executable scriptline 1
    Executable file
  • Network accessline 20
    [Credential-related source omitted]
  • Network accessline 21
    [Credential-related source omitted]
  • Network accessline 22
    [Credential-related source omitted]
  • Network accessline 23
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 26
    t.Fatalf("method = %q, want %q", req.Method, http.MethodGet) 			} 			if req.URL.String() != "https://router.local/api/v4.0/monitoring/system" {
  • Network accessline 27
    } 			if req.URL.String() != "https://router.local/api/v4.0/monitoring/system" { 				t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/monitoring/system")
  • Network accessline 28
    if req.URL.String() != "https://router.local/api/v4.0/monitoring/system" {
  • Network accessline 29
    t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/monitoring/system")
  • Network accessline 55
    [Credential-related source omitted]
  • Network accessline 56
    [Credential-related source omitted]
  • Network accessline 57
    [Credential-related source omitted]
  • Network accessline 58
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 91
    [Credential-related source omitted]
  • Network accessline 92
    [Credential-related source omitted]
  • Network accessline 93
    [Credential-related source omitted]
  • Network accessline 94
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 125
    [Credential-related source omitted]
  • Network accessline 126
    [Credential-related source omitted]
  • Network accessline 127
    [Credential-related source omitted]
  • Network accessline 128
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 151
    [Credential-related source omitted]
  • Network accessline 152
    [Credential-related source omitted]
  • Network accessline 153
    [Credential-related source omitted]
  • Network accessline 154
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 181
    [Credential-related source omitted]
  • Network accessline 182
    [Credential-related source omitted]
  • Network accessline 183
    [Credential-related source omitted]
  • Network accessline 184
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 218
    [Credential-related source omitted]
  • Network accessline 219
    [Credential-related source omitted]
  • Network accessline 220
    [Credential-related source omitted]
  • Network accessline 221
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 276
    [Credential-related source omitted]
  • Network accessline 277
    [Credential-related source omitted]
  • Network accessline 278
    [Credential-related source omitted]
  • Network accessline 279
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 331
    [Credential-related source omitted]
  • Network accessline 332
    [Credential-related source omitted]
  • Network accessline 333
    [Credential-related source omitted]
  • Network accessline 334
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 406
    [Credential-related source omitted]
  • Network accessline 407
    [Credential-related source omitted]
  • Network accessline 408
    [Credential-related source omitted]
  • Network accessline 409
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 433
    [Credential-related source omitted]
  • Network accessline 434
    [Credential-related source omitted]
  • Network accessline 435
    [Credential-related source omitted]
  • Network accessline 436
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 473
    [Credential-related source omitted]
  • Network accessline 474
    [Credential-related source omitted]
  • Network accessline 475
    [Credential-related source omitted]
  • Network accessline 476
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 509
    [Credential-related source omitted]
  • Network accessline 510
    [Credential-related source omitted]
  • Network accessline 511
    [Credential-related source omitted]
  • Network accessline 512
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 548
    [Credential-related source omitted]
  • Network accessline 549
    [Credential-related source omitted]
  • Network accessline 550
    [Credential-related source omitted]
  • Network accessline 551
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 584
    [Credential-related source omitted]
  • Network accessline 585
    [Credential-related source omitted]
  • Network accessline 586
    [Credential-related source omitted]
  • Network accessline 587
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 614
    [Credential-related source omitted]
  • Network accessline 615
    [Credential-related source omitted]
  • Network accessline 616
    [Credential-related source omitted]
  • Network accessline 617
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 651
    [Credential-related source omitted]
  • Network accessline 652
    [Credential-related source omitted]
  • Network accessline 653
    [Credential-related source omitted]
  • Network accessline 654
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{

internal/cmd/network/behavior_test.go

  • Executable scriptline 1
    Executable file
  • Network accessline 20
    [Credential-related source omitted]
  • Network accessline 21
    [Credential-related source omitted]
  • Network accessline 22
    [Credential-related source omitted]
  • Network accessline 23
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 65
    [Credential-related source omitted]
  • Network accessline 66
    [Credential-related source omitted]
  • Network accessline 67
    [Credential-related source omitted]
  • Network accessline 68
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 118
    [Credential-related source omitted]
  • Network accessline 119
    [Credential-related source omitted]
  • Network accessline 120
    [Credential-related source omitted]
  • Network accessline 121
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 156
    [Credential-related source omitted]
  • Network accessline 157
    [Credential-related source omitted]
  • Network accessline 158
    [Credential-related source omitted]
  • Network accessline 159
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 190
    [Credential-related source omitted]
  • Network accessline 192
    [Credential-related source omitted]
  • Network accessline 208
    [Credential-related source omitted]
  • Network accessline 210
    [Credential-related source omitted]

internal/cmd/network/command.go

  • Executable scriptline 1
    Executable file
  • Instruction override signalline 2249
    }, 	} 	c.Flags().BoolP("yes", "y", false, "Skip confirmation prompt")
  • Instruction override signalline 2250
    } 	c.Flags().BoolP("yes", "y", false, "Skip confirmation prompt") 	return c
  • Instruction override signalline 2251
    c.Flags().BoolP("yes", "y", false, "Skip confirmation prompt")

internal/cmd/network/command_test.go

  • Executable scriptline 1
    Executable file

internal/cmd/objects/behavior_test.go

  • Executable scriptline 1
    Executable file
  • Network accessline 20
    [Credential-related source omitted]
  • Network accessline 21
    [Credential-related source omitted]
  • Network accessline 22
    [Credential-related source omitted]
  • Network accessline 23
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 67
    [Credential-related source omitted]
  • Network accessline 68
    [Credential-related source omitted]
  • Network accessline 69
    [Credential-related source omitted]
  • Network accessline 70
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 73
    t.Fatalf("method = %q, want %q", req.Method, http.MethodPost) 			} 			if req.URL.String() != "https://router.local/api/v4.0/ip-objects" {
  • Network accessline 74
    } 			if req.URL.String() != "https://router.local/api/v4.0/ip-objects" { 				t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/ip-objects")
  • Network accessline 75
    if req.URL.String() != "https://router.local/api/v4.0/ip-objects" {
  • Network accessline 76
    t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/ip-objects")
  • Network accessline 111
    [Credential-related source omitted]
  • Network accessline 112
    [Credential-related source omitted]
  • Network accessline 113
    [Credential-related source omitted]
  • Network accessline 114
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 117
    t.Fatalf("method = %q, want %q", req.Method, http.MethodPost) 			} 			if req.URL.String() != "https://router.local/api/v4.0/time-objects" {
  • Network accessline 118
    } 			if req.URL.String() != "https://router.local/api/v4.0/time-objects" { 				t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/time-objects")
  • Network accessline 119
    if req.URL.String() != "https://router.local/api/v4.0/time-objects" {
  • Network accessline 120
    t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/time-objects")

internal/cmd/objects/command.go

  • Executable scriptline 1
    Executable file
  • Instruction override signalline 182
    }, 	} 	deleteCmd.Flags().BoolP("yes", "y", false, "Skip confirmation prompt")
  • Instruction override signalline 184
    deleteCmd.Flags().BoolP("yes", "y", false, "Skip confirmation prompt")

internal/cmd/qos/behavior_test.go

  • Executable scriptline 1
    Executable file
  • Network accessline 20
    [Credential-related source omitted]
  • Network accessline 21
    [Credential-related source omitted]
  • Network accessline 22
    [Credential-related source omitted]
  • Network accessline 23
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 100
    [Credential-related source omitted]
  • Network accessline 101
    [Credential-related source omitted]
  • Network accessline 102
    [Credential-related source omitted]
  • Network accessline 103
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 106
    t.Fatalf("method = %q, want %q", req.Method, http.MethodPost) 			} 			if req.URL.String() != "https://router.local/api/v4.0/network/qos/ip" {
  • Network accessline 107
    } 			if req.URL.String() != "https://router.local/api/v4.0/network/qos/ip" { 				t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/network/qos/ip")
  • Network accessline 108
    if req.URL.String() != "https://router.local/api/v4.0/network/qos/ip" {
  • Network accessline 109
    t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/network/qos/ip")
  • Network accessline 147
    [Credential-related source omitted]
  • Network accessline 148
    [Credential-related source omitted]
  • Network accessline 149
    [Credential-related source omitted]
  • Network accessline 150
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 153
    case http.MethodGet: 				seenGet = true 				if req.URL.String() != "https://router.local/api/v4.0/network/qos/ip/7" {
  • Network accessline 154
    seenGet = true 				if req.URL.String() != "https://router.local/api/v4.0/network/qos/ip/7" { 					t.Fatalf("GET URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/network/qos/ip/7")
  • Network accessline 155
    if req.URL.String() != "https://router.local/api/v4.0/network/qos/ip/7" {
  • Network accessline 156
    t.Fatalf("GET URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/network/qos/ip/7") 				} 				return jsonResponse(`{"code":0,"data":{"id":7,"tagname":"old-qos","enabled":"yes","upload":100,"download":200,"type":0,"protocol
  • Network accessline 159
    case http.MethodPut: 				seenPut = true 				if req.URL.String() != "https://router.local/api/v4.0/network/qos/ip/7" {
  • Network accessline 160
    seenPut = true 				if req.URL.String() != "https://router.local/api/v4.0/network/qos/ip/7" { 					t.Fatalf("PUT URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/network/qos/ip/7")
  • Network accessline 161
    if req.URL.String() != "https://router.local/api/v4.0/network/qos/ip/7" {
  • Network accessline 162
    t.Fatalf("PUT URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/network/qos/ip/7")

internal/cmd/qos/command.go

  • Executable scriptline 1
    Executable file
  • Instruction override signalline 196
    }, 	} 	deleteCmd.Flags().BoolP("yes", "y", false, "Skip confirmation prompt")
  • Instruction override signalline 198
    deleteCmd.Flags().BoolP("yes", "y", false, "Skip confirmation prompt")

internal/cmd/repl.go

  • Executable scriptline 1
    Executable file

internal/cmd/repl_test.go

  • Executable scriptline 1
    Executable file
  • Network accessline 234
    [Credential-related source omitted]
  • Network accessline 261
    [Credential-related source omitted]
  • Network accessline 278
    [Credential-related source omitted]

internal/cmd/root.go

  • Executable scriptline 1
    Executable file

internal/cmd/root_test.go

  • Executable scriptline 1
    Executable file
  • Network accessline 16
    func TestAuthStatusWithFormatJSON(t *testing.T) { 	testRootCommand(t) 	if err := session.SaveBaseURL("https://192.168.1.1"); err != nil {
  • Network accessline 17
    testRootCommand(t) 	if err := session.SaveBaseURL("https://192.168.1.1"); err != nil { 		t.Fatalf("SaveBaseURL() error = %v", err)
  • Network accessline 18
    if err := session.SaveBaseURL("https://192.168.1.1"); err != nil {
  • Network accessline 38
    got := strings.TrimSpace(out.String()) 	want := `{"base_url":"https://192.168.1.1","source":"token"}`
  • Network accessline 39
    want := `{"base_url":"https://192.168.1.1","source":"token"}`

internal/cmd/routing/behavior_test.go

  • Executable scriptline 1
    Executable file
  • Network accessline 21
    [Credential-related source omitted]
  • Network accessline 22
    [Credential-related source omitted]
  • Network accessline 23
    [Credential-related source omitted]
  • Network accessline 24
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 75
    [Credential-related source omitted]
  • Network accessline 76
    [Credential-related source omitted]
  • Network accessline 77
    [Credential-related source omitted]
  • Network accessline 78
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 129
    [Credential-related source omitted]
  • Network accessline 130
    [Credential-related source omitted]
  • Network accessline 131
    [Credential-related source omitted]
  • Network accessline 132
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 135
    t.Fatalf("method = %q, want %q", req.Method, http.MethodPost) 			} 			if req.URL.String() != "https://router.local/api/v4.0/routing/five-tuple-rules" {
  • Network accessline 136
    } 			if req.URL.String() != "https://router.local/api/v4.0/routing/five-tuple-rules" { 				t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/routing/five-tuple-rules")
  • Network accessline 137
    if req.URL.String() != "https://router.local/api/v4.0/routing/five-tuple-rules" {
  • Network accessline 138
    t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/routing/five-tuple-rules")
  • Network accessline 174
    [Credential-related source omitted]
  • Network accessline 175
    [Credential-related source omitted]
  • Network accessline 176
    [Credential-related source omitted]
  • Network accessline 177
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 204
    [Credential-related source omitted]
  • Network accessline 205
    [Credential-related source omitted]
  • Network accessline 206
    [Credential-related source omitted]
  • Network accessline 207
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{ 		Transport: roundTripFunc(func(req *http.Request) (*http.Response, error) { 			requests++
  • Network accessline 272
    [Credential-related source omitted]
  • Network accessline 274
    [Credential-related source omitted]
  • Network accessline 290
    [Credential-related source omitted]
  • Network accessline 292
    [Credential-related source omitted]

internal/cmd/routing/command.go

  • Executable scriptline 1
    Executable file
  • Instruction override signalline 430
    c.Aliases = []string{"rm"} 	} 	c.Flags().BoolP("yes", "y", false, "Skip confirmation prompt")
  • Instruction override signalline 431
    } 	c.Flags().BoolP("yes", "y", false, "Skip confirmation prompt") 	return c
  • Instruction override signalline 432
    c.Flags().BoolP("yes", "y", false, "Skip confirmation prompt")

internal/cmd/security/behavior_test.go

  • Executable scriptline 1
    Executable file
  • Network accessline 20
    [Credential-related source omitted]
  • Network accessline 21
    [Credential-related source omitted]
  • Network accessline 22
    [Credential-related source omitted]
  • Network accessline 23
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 85
    [Credential-related source omitted]
  • Network accessline 86
    [Credential-related source omitted]
  • Network accessline 87
    [Credential-related source omitted]
  • Network accessline 88
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 91
    t.Fatalf("method = %q, want %q", req.Method, http.MethodPut) 			} 			if req.URL.String() != "https://router.local/api/v4.0/security/mac-mode" {
  • Network accessline 92
    } 			if req.URL.String() != "https://router.local/api/v4.0/security/mac-mode" { 				t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/security/mac-mode")
  • Network accessline 93
    if req.URL.String() != "https://router.local/api/v4.0/security/mac-mode" {
  • Network accessline 94
    t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/security/mac-mode")
  • Network accessline 126
    [Credential-related source omitted]
  • Network accessline 127
    [Credential-related source omitted]
  • Network accessline 128
    [Credential-related source omitted]
  • Network accessline 129
    step := 0 	app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{ 		Transport: roundTripFunc(func(req *http.Request) (*http.Response, error) {
  • Network accessline 130
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 181
    [Credential-related source omitted]
  • Network accessline 183
    [Credential-related source omitted]
  • Network accessline 200
    [Credential-related source omitted]
  • Network accessline 202
    [Credential-related source omitted]
  • Network accessline 225
    [Credential-related source omitted]
  • Network accessline 227
    [Credential-related source omitted]

internal/cmd/security/command.go

  • Executable scriptline 1
    Executable file
  • Instruction override signalline 762
    c.Aliases = []string{"rm"} 	} 	c.Flags().BoolP("yes", "y", false, "Skip confirmation prompt")
  • Instruction override signalline 763
    } 	c.Flags().BoolP("yes", "y", false, "Skip confirmation prompt") 	return c
  • Instruction override signalline 764
    c.Flags().BoolP("yes", "y", false, "Skip confirmation prompt")

internal/cmd/system/behavior_test.go

  • Executable scriptline 1
    Executable file
  • Network accessline 20
    [Credential-related source omitted]
  • Network accessline 21
    [Credential-related source omitted]
  • Network accessline 22
    [Credential-related source omitted]
  • Network accessline 23
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 71
    [Credential-related source omitted]
  • Network accessline 72
    [Credential-related source omitted]
  • Network accessline 73
    [Credential-related source omitted]
  • Network accessline 74
    calls := 0 	app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{ 		Transport: roundTripFunc(func(req *http.Request) (*http.Response, error) {
  • Network accessline 75
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 80
    t.Fatalf("method = %q, want %q", req.Method, http.MethodGet) 				} 				if req.URL.String() != "https://router.local/api/v4.0/system/basic/config" {
  • Network accessline 81
    } 				if req.URL.String() != "https://router.local/api/v4.0/system/basic/config" { 					t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/system/basic/config")
  • Network accessline 82
    if req.URL.String() != "https://router.local/api/v4.0/system/basic/config" {
  • Network accessline 83
    t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/system/basic/config")
  • Network accessline 88
    t.Fatalf("method = %q, want %q", req.Method, http.MethodPut) 			} 			if req.URL.String() != "https://router.local/api/v4.0/system/basic/config" {
  • Network accessline 89
    } 			if req.URL.String() != "https://router.local/api/v4.0/system/basic/config" { 				t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/system/basic/config")
  • Network accessline 90
    if req.URL.String() != "https://router.local/api/v4.0/system/basic/config" {
  • Network accessline 91
    t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/system/basic/config")
  • Network accessline 132
    [Credential-related source omitted]
  • Network accessline 133
    [Credential-related source omitted]
  • Network accessline 134
    [Credential-related source omitted]
  • Network accessline 135
    calls := 0 	app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{ 		Transport: roundTripFunc(func(req *http.Request) (*http.Response, error) {
  • Network accessline 136
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 171
    [Credential-related source omitted]
  • Network accessline 172
    [Credential-related source omitted]
  • Network accessline 173
    [Credential-related source omitted]
  • Network accessline 174
    calls := 0 	app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{ 		Transport: roundTripFunc(func(req *http.Request) (*http.Response, error) {
  • Network accessline 175
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{

internal/cmd/system/command.go

  • Executable scriptline 1
    Executable file
  • Instruction override signalline 406
    } 	deleteCmd.Flags().String("srcfile", "", "Backup filename (required)") 	deleteCmd.Flags().BoolP("yes", "y", false, "Skip confirmation prompt")
  • Instruction override signalline 407
    deleteCmd.Flags().String("srcfile", "", "Backup filename (required)") 	deleteCmd.Flags().BoolP("yes", "y", false, "Skip confirmation prompt") 	cliapp.MarkFlagsRequired(deleteCmd, "srcfile")
  • Instruction override signalline 408
    deleteCmd.Flags().BoolP("yes", "y", false, "Skip confirmation prompt")
  • Instruction override signalline 641
    }, 	} 	cmd.Flags().BoolP("yes", "y", false, "Skip confirmation prompt")
  • Instruction override signalline 642
    } 	cmd.Flags().BoolP("yes", "y", false, "Skip confirmation prompt") 	return cmd
  • Instruction override signalline 643
    cmd.Flags().BoolP("yes", "y", false, "Skip confirmation prompt")

internal/cmd/system/command_test.go

  • Executable scriptline 1
    Executable file

internal/cmd/users/behavior_test.go

  • Executable scriptline 1
    Executable file
  • Network accessline 19
    [Credential-related source omitted]
  • Network accessline 20
    [Credential-related source omitted]
  • Network accessline 21
    [Credential-related source omitted]
  • Network accessline 22
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 73
    [Credential-related source omitted]
  • Network accessline 74
    [Credential-related source omitted]
  • Network accessline 75
    [Credential-related source omitted]
  • Network accessline 76
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 115
    [Credential-related source omitted]
  • Network accessline 116
    [Credential-related source omitted]
  • Network accessline 117
    [Credential-related source omitted]
  • Network accessline 118
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 121
    t.Fatalf("method = %q, want %q", req.Method, http.MethodGet) 			} 			if req.URL.String() != "https://router.local/api/v4.0/auth/online-users/42" {
  • Network accessline 122
    } 			if req.URL.String() != "https://router.local/api/v4.0/auth/online-users/42" { 				t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/auth/online-users/42")
  • Network accessline 123
    if req.URL.String() != "https://router.local/api/v4.0/auth/online-users/42" {
  • Network accessline 124
    t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/auth/online-users/42")
  • Network accessline 147
    [Credential-related source omitted]
  • Network accessline 148
    [Credential-related source omitted]
  • Network accessline 149
    [Credential-related source omitted]
  • Network accessline 150
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 153
    t.Fatalf("method = %q, want %q", req.Method, http.MethodDelete) 			} 			if req.URL.String() != "https://router.local/api/v4.0/auth/online-users/42" {
  • Network accessline 154
    } 			if req.URL.String() != "https://router.local/api/v4.0/auth/online-users/42" { 				t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/auth/online-users/42")
  • Network accessline 155
    if req.URL.String() != "https://router.local/api/v4.0/auth/online-users/42" {
  • Network accessline 156
    t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/auth/online-users/42")
  • Network accessline 173
    [Credential-related source omitted]
  • Network accessline 174
    [Credential-related source omitted]
  • Network accessline 175
    [Credential-related source omitted]
  • Network accessline 176
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 179
    t.Fatalf("method = %q, want %q", req.Method, http.MethodPost) 			} 			if req.URL.String() != "https://router.local/api/v4.0/auth/users" {
  • Network accessline 180
    } 			if req.URL.String() != "https://router.local/api/v4.0/auth/users" { 				t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/auth/users")
  • Network accessline 181
    if req.URL.String() != "https://router.local/api/v4.0/auth/users" {
  • Network accessline 182
    t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/auth/users")
  • Network accessline 218
    [Credential-related source omitted]
  • Network accessline 219
    [Credential-related source omitted]
  • Network accessline 220
    [Credential-related source omitted]
  • Network accessline 221
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 224
    t.Fatalf("method = %q, want %q", req.Method, http.MethodPost) 			} 			if req.URL.String() != "https://router.local/api/v4.0/auth/packages" {
  • Network accessline 225
    } 			if req.URL.String() != "https://router.local/api/v4.0/auth/packages" { 				t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/auth/packages")
  • Network accessline 226
    if req.URL.String() != "https://router.local/api/v4.0/auth/packages" {
  • Network accessline 227
    t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/auth/packages")

internal/cmd/users/command.go

  • Executable scriptline 1
    Executable file
  • Instruction override signalline 161
    }, 	} 	kickCmd.Flags().BoolP("yes", "y", false, "Skip confirmation prompt")
  • Instruction override signalline 162
    } 	kickCmd.Flags().BoolP("yes", "y", false, "Skip confirmation prompt") 	usersCmd.AddCommand(kickCmd)
  • Instruction override signalline 163
    kickCmd.Flags().BoolP("yes", "y", false, "Skip confirmation prompt")
  • Instruction override signalline 374
    c.Aliases = []string{"rm"} 	} 	c.Flags().BoolP("yes", "y", false, "Skip confirmation prompt")
  • Instruction override signalline 375
    } 	c.Flags().BoolP("yes", "y", false, "Skip confirmation prompt") 	return c
  • Instruction override signalline 376
    c.Flags().BoolP("yes", "y", false, "Skip confirmation prompt")

internal/cmd/version/command.go

  • Executable scriptline 1
    Executable file

internal/cmd/version/command_test.go

  • Executable scriptline 1
    Executable file

internal/cmd/vpn/behavior_test.go

  • Executable scriptline 1
    Executable file
  • Network accessline 20
    [Credential-related source omitted]
  • Network accessline 21
    [Credential-related source omitted]
  • Network accessline 22
    [Credential-related source omitted]
  • Network accessline 23
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 98
    [Credential-related source omitted]
  • Network accessline 99
    [Credential-related source omitted]
  • Network accessline 100
    [Credential-related source omitted]
  • Network accessline 101
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 104
    t.Fatalf("method = %q, want %q", req.Method, http.MethodPost) 			} 			if req.URL.String() != "https://router.local/api/v4.0/vpn/wireguard/tunnel-1/peers" {
  • Network accessline 105
    } 			if req.URL.String() != "https://router.local/api/v4.0/vpn/wireguard/tunnel-1/peers" { 				t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/vpn/wireguard/tunnel-1/peers")
  • Network accessline 106
    if req.URL.String() != "https://router.local/api/v4.0/vpn/wireguard/tunnel-1/peers" {
  • Network accessline 107
    t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/vpn/wireguard/tunnel-1/peers")
  • Network accessline 142
    [Credential-related source omitted]
  • Network accessline 144
    [Credential-related source omitted]

internal/cmd/vpn/command.go

  • Executable scriptline 1
    Executable file
  • Instruction override signalline 758
    }, 	} 	c.Flags().BoolP("yes", "y", false, "Skip confirmation prompt")
  • Instruction override signalline 759
    } 	c.Flags().BoolP("yes", "y", false, "Skip confirmation prompt") 	return c
  • Instruction override signalline 760
    c.Flags().BoolP("yes", "y", false, "Skip confirmation prompt")
  • Instruction override signalline 787
    c.Aliases = []string{"rm"} 	} 	c.Flags().BoolP("yes", "y", false, "Skip confirmation prompt")
  • Instruction override signalline 788
    } 	c.Flags().BoolP("yes", "y", false, "Skip confirmation prompt") 	return c
  • Instruction override signalline 789
    c.Flags().BoolP("yes", "y", false, "Skip confirmation prompt")

internal/cmd/wireless/behavior_test.go

  • Executable scriptline 1
    Executable file
  • Network accessline 19
    [Credential-related source omitted]
  • Network accessline 20
    [Credential-related source omitted]
  • Network accessline 21
    [Credential-related source omitted]
  • Network accessline 22
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 84
    [Credential-related source omitted]
  • Network accessline 85
    [Credential-related source omitted]
  • Network accessline 86
    [Credential-related source omitted]
  • Network accessline 87
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 90
    t.Fatalf("method = %q, want %q", req.Method, http.MethodGet) 			} 			if req.URL.String() != "https://router.local/api/v4.0/wireless/vlan/rules/9" {
  • Network accessline 91
    } 			if req.URL.String() != "https://router.local/api/v4.0/wireless/vlan/rules/9" { 				t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/wireless/vlan/rules/9")
  • Network accessline 92
    if req.URL.String() != "https://router.local/api/v4.0/wireless/vlan/rules/9" {
  • Network accessline 93
    t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/wireless/vlan/rules/9")
  • Network accessline 116
    [Credential-related source omitted]
  • Network accessline 117
    [Credential-related source omitted]
  • Network accessline 118
    [Credential-related source omitted]
  • Network accessline 119
    seenGet := false 	app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{ 		Transport: roundTripFunc(func(req *http.Request) (*http.Response, error) {
  • Network accessline 120
    app.APIClient = api.NewWithHTTPClient(app.Session.BaseURL, app.Session.Token, &http.Client{
  • Network accessline 121
    Transport: roundTripFunc(func(req *http.Request) (*http.Response, error) { 			if req.URL.String() != "https://router.local/api/v4.0/wireless/vlan/rules/9" { 				t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/
  • Network accessline 122
    if req.URL.String() != "https://router.local/api/v4.0/wireless/vlan/rules/9" {
  • Network accessline 123
    t.Fatalf("URL = %q, want %q", req.URL.String(), "https://router.local/api/v4.0/wireless/vlan/rules/9")

internal/cmd/wireless/command.go

  • Executable scriptline 1
    Executable file
  • Instruction override signalline 352
    c.Aliases = []string{"rm"} 	} 	c.Flags().BoolP("yes", "y", false, "Skip confirmation prompt")
  • Instruction override signalline 353
    } 	c.Flags().BoolP("yes", "y", false, "Skip confirmation prompt") 	return c
  • Instruction override signalline 354
    c.Flags().BoolP("yes", "y", false, "Skip confirmation prompt")

internal/output/printer.go

  • Executable scriptline 1
    Executable file

internal/output/printer_test.go

  • Executable scriptline 1
    Executable file

internal/output/table.go

  • Executable scriptline 1
    Executable file

internal/session/session.go

  • Executable scriptline 1
    Executable file

internal/session/session_test.go

  • Executable scriptline 1
    Executable file
  • Network accessline 13
    if err := SaveBaseURL("https://192.168.1.1/"); err != nil {
  • Network accessline 19
    t.Fatalf("Load() error = %v", err) 	} 	if s.BaseURL != "https://192.168.1.1" {
  • Network accessline 20
    } 	if s.BaseURL != "https://192.168.1.1" { 		t.Fatalf("BaseURL = %q, want %q", s.BaseURL, "https://192.168.1.1")
  • Network accessline 21
    if s.BaseURL != "https://192.168.1.1" {
  • Network accessline 22
    t.Fatalf("BaseURL = %q, want %q", s.BaseURL, "https://192.168.1.1")
  • Network accessline 38
    name:        "bare host", 			input:       "192.168.1.1", 			want:        "https://192.168.1.1",
  • Network accessline 39
    input:       "192.168.1.1", 			want:        "https://192.168.1.1", 			wantChanged: true,
  • Network accessline 40
    want:        "https://192.168.1.1",
  • Network accessline 43
    { 			name:        "http scheme", 			input:       "http://192.168.1.1/",
  • Network accessline 44
    name:        "http scheme", 			input:       "http://192.168.1.1/", 			want:        "https://192.168.1.1",
  • Network accessline 45
    input:       "http://192.168.1.1/",
  • Network accessline 46
    want:        "https://192.168.1.1",
  • Network accessline 49
    { 			name:        "path query and fragment", 			input:       "https://192.168.1.1/login?from=cli#top",
  • Network accessline 50
    name:        "path query and fragment", 			input:       "https://192.168.1.1/login?from=cli#top", 			want:        "https://192.168.1.1",
  • Network accessline 51
    input:       "https://192.168.1.1/login?from=cli#top",
  • Network accessline 52
    want:        "https://192.168.1.1",
  • Network accessline 56
    name:        "host with port", 			input:       "192.168.1.1:8443", 			want:        "https://192.168.1.1:8443",
  • Network accessline 57
    input:       "192.168.1.1:8443", 			want:        "https://192.168.1.1:8443", 			wantChanged: true,
  • Network accessline 58
    want:        "https://192.168.1.1:8443",
  • Network accessline 61
    { 			name:        "already normalized", 			input:       "https://router.local",
  • Network accessline 62
    name:        "already normalized", 			input:       "https://router.local", 			want:        "https://router.local",
  • Network accessline 63
    input:       "https://router.local",
  • Network accessline 64
    want:        "https://router.local",
  • Network accessline 101
    { 			name:    "userinfo", 			input:   "https://admin:secret@192.168.1.1",
  • Network accessline 102
    name:    "userinfo", 			input:   "https://admin:secret@192.168.1.1", 			wantErr: "must not include username or password",
  • Network accessline 103
    input:   "https://admin:secret@192.168.1.1",
  • Network accessline 129
    if err := SaveLogin("https://192.168.1.1", "token-xyz"); err != nil {
  • Network accessline 180
    if err := SaveLogin("https://192.168.1.1", "token"); err != nil {

internal/ssh/console.go

  • Executable scriptline 1
    Executable file

scripts/install.sh

  • Executable scriptline 1
    #!/bin/sh
  • Network accessline 3
    # # Usage: #   curl -fsSL https://raw.githubusercontent.com/ikuaidev/ikuai-cli/main/scripts/install.sh | sh
  • Network accessline 4
    # Usage: #   curl -fsSL https://raw.githubusercontent.com/ikuaidev/ikuai-cli/main/scripts/install.sh | sh #   curl -fsSL ... | sh -s -- --version v0.1.0
  • Dangerous shell operationline 5
    #   curl -fsSL https://raw.githubusercontent.com/ikuaidev/ikuai-cli/main/scripts/install.sh | sh
  • Network accessline 5
    #   curl -fsSL https://raw.githubusercontent.com/ikuaidev/ikuai-cli/main/scripts/install.sh | sh
  • Dangerous shell operationline 6
    #   curl -fsSL ... | sh -s -- --version v0.1.0
  • Network accessline 6
    #   curl -fsSL ... | sh -s -- --version v0.1.0
  • Dangerous shell operationline 7
    #   curl -fsSL ... | sh -s -- --dir ~/.local/bin
  • Network accessline 7
    #   curl -fsSL ... | sh -s -- --dir ~/.local/bin
  • Network accessline 46
    if [ -z "$VERSION" ]; then   VERSION="$(curl -fsSL "https://api.github.com/repos/${REPO}/releases/latest" \
  • Network accessline 47
    VERSION="$(curl -fsSL "https://api.github.com/repos/${REPO}/releases/latest" \
  • Network accessline 56
    ARCHIVE="${BINARY}_${OS}_${ARCH}.tar.gz" URL="https://github.com/${REPO}/releases/download/${VERSION}/${ARCHIVE}"
  • Network accessline 57
    URL="https://github.com/${REPO}/releases/download/${VERSION}/${ARCHIVE}"
  • Network accessline 58
    CHECKSUM_URL="https://github.com/${REPO}/releases/download/${VERSION}/checksums.txt"
  • Dangerous shell operationline 61
    trap 'rm -rf "$TMPDIR"' EXIT
  • Network accessline 63
    echo "Downloading ${BINARY} ${VERSION} (${OS}/${ARCH})..." curl -fsSL "$URL" -o "${TMPDIR}/${ARCHIVE}"
  • Network accessline 64
    curl -fsSL "$URL" -o "${TMPDIR}/${ARCHIVE}"
  • Network accessline 65
    curl -fsSL "$CHECKSUM_URL" -o "${TMPDIR}/checksums.txt"
  • Network accessline 96
    echo "Get started:" echo "  ${BINARY} auth set-url https://192.168.1.1"
  • Network accessline 97
    echo "  ${BINARY} auth set-url https://192.168.1.1"

scripts/smoke.sh

  • Executable scriptline 1
    #!/usr/bin/env sh

skills/auth.md

  • Network accessline 9
    ikuai-cli auth set-url https://192.168.1.1

skills/batch.md

  • Network accessline 16
    ROUTER="https://192.168.1.1"

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

Signal confidence: 500 facts

and 450 more

Only the first 500 facts are listed.

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeCompatibleStandard SKILL.md SKILL.md.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.