asahasrabuddhe/dwaar 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

asahasrabuddhe/dwaar

Composer 安装命令:

composer require asahasrabuddhe/dwaar

包简介

SSH app server on Whisp with pluggable middleware, multiple apps, and session handling

README 文档

README

SSH app server on Whisp with pluggable middleware, multiple apps, and session handling.

Features

  • Session abstraction – Wish-style Session over Whisp Connection + Channel: user(), remoteAddr(), command(), pty(), writeToStdout / writeToStderr, exit().
  • Middleware pipeline – Compose middlewares (first registered = outermost). Innermost handler starts the app.
  • Built-in middlewares
    • Recover – Catch throwables in the chain or app, log and exit 1.
    • Logging – Log connect (user, remote, command, term, client version, public key) and disconnect with duration.
    • AccessControl – Restrict allowed exec commands; reject others with exit 1.
    • Activeterm – Require a PTY (interactive terminal); reject non-PTY with exit 1.
  • SessionOutput – Helpers for session I/O: print() / println(), error() / errorln(), fatal() / fatalln(), printf() / errorf() / fatalf().

Requirements

  • PHP 8.4+
  • ext-sockets, ext-pcntl
  • See Whisp for additional runtime requirements.

Installation

composer require asahasrabuddhe/dwaar

Usage

Use Dwaar\Server instead of Whisp\Server, register middlewares and apps. Each connection runs the middleware stack before starting the app.

<?php

require __DIR__ . '/vendor/autoload.php';

use Dwaar\Server;
use Dwaar\Middleware\AccessControl;
use Dwaar\Middleware\Logging;
use Dwaar\Middleware\Recover;
use Psr\Log\NullLogger;

$logger = new NullLogger(); // or any PSR-3 logger

$server = new Server(port: 2222, autoDiscoverApps: false);

$server
    ->middlewares([
        new Recover($logger),
        new Logging($logger),
        new AccessControl(['default', 'guestbook']),
    ])
    ->addApps([
        'default' => __DIR__ . '/apps/howdy.php',
        'guestbook' => __DIR__ . '/apps/guestbook.php',
    ])
    ->run();

Connect:

# Interactive shell (default app)
ssh -p 2222 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null user@127.0.0.1

# Exec command
ssh -p 2222 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null user@127.0.0.1 guestbook

Middleware order

Same as Wish: first registered = outermost (runs first on connect, last on disconnect). Typical order: Recover → Logging → AccessControl or Activeterm → app (innermost).

Examples

Run the example server and try the default app and the guestbook exec command:

php examples/server.php

See examples/README.md for what each part demonstrates.

TUIs

For terminal UIs over SSH, use Laravel Prompts or similar in your app scripts; Dwaar does not port Bubble Tea.

Development

composer test        # run tests
composer cs-fix      # fix code style
composer cs-check    # check code style (dry run)

License

MIT.

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 5
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-03-04

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固