mkhrResearch / webssh

Web based ssh client
https://webssh.huashengdun.org/
MIT License
0 stars 0 forks source link

ターミナルでaceコマンドを叩くとmsg.editorにテキストの内容が返ってくる処理の追加 #3

Closed igaki closed 5 years ago

igaki commented 5 years ago

ここまで実装した処理.

aceコマンドの実装は以下の通り

#!/bin/bash
file=$1
if [ -e ${file} ]; then
  echo "[[ace]] will open ${file}"
else
  echo "${file} not found"
fi
igaki commented 5 years ago

上の2つのコミットでできるようになったこと

  1. ace Hoge.java とターミナルで叩く
  2. サーバ側でaceコマンドが実行されて, [[ace]] will open Hoge.java と出力
  3. js側で[[ace]]を検知し,aceに変更しつつ,connect_without_options_getfile("Hoge.java")を呼び出す(最終的にはHoge.javaはファイルにしたい)
  4. connect_without..の中で,form.actionに/getfileを追加,data変数にfilepathを追加し,ajax_postを実行
  5. main.pyにGetfileHandlerを追加,handler.pyにGetfileHandlerを追加.
  6. get_argsでfilepathを追加
  7. ssh_connectのところでcat filepathを実行するように変更.戻り値もworkerじゃなくてコマンド実行結果に変更
  8. postのところで,ssh_connectのstdoutを返すように変更.write関数に渡すjsonをeditor:resultに変更
  9. msg.editorをajax_complete_callback_getfileの冒頭でlog表示
igaki commented 5 years ago

aceコマンドを↓に修正して,常に対象の絶対パスをターミナルに表示するように変更(ace will open /home/user1/lec01/fuga.txt のように表示される)

#!/bin/bash
# ref:https://qiita.com/katoy/items/c0d9ff8aff59efa8fcbb
realpath ()
{
    f=$@;
    if [ -d "$f" ]; then
        base="";
        dir="$f";
    else
        base="/$(basename "$f")";
        dir=$(dirname "$f");
    fi;
    dir=$(cd "$dir" && /bin/pwd);
    echo "$dir$base"
}

file=$1
if [ -e ${file} ]; then
  echo "[[ace]] will open $(realpath $1)"
else
  echo "${file} not found"
fi
igaki commented 5 years ago

editorが追加された際には,main.jsのajax_complete_callback_getfile(resp)のvar msg = resp.responseJSON;のあとで,msg.editorをeditorに追加してやればOK.