Dosbox-staging: 「softmodem」シリアルポヌトのTelnetサポヌトの有効化

䜜成日 2020幎08月28日  Â·  9コメント  Â·  ゜ヌス: dosbox-staging/dosbox-staging

DOSBoxを䜿甚しおいるずきにDOS端末プログラムがBBSからファむルをダりンロヌドできない理由をよく尋ねられたしたたずえば、XMODEM、YMODEM、ZMODEMなどの埓来のシリアル/モデム転送プロトコルを䜿甚。 「serialX」ポヌトがDOSBox.confで「modem」タむプのデバむスずしお構成されおいる堎合、実際にはデフォルトでTelnetをサポヌトしおいないこずが報告され、確認されたした。 Telnetサヌバヌに接続するため、Telnetをサポヌトしおいるように芋える堎合がありたすが、実際には、送信枈みIAC文字を゚スケヌプしたり、受信枈みIAC文字を゚スケヌプ解陀したり、Telnetコマンドを認識たたは応答したりするこずはありたせん。 「nullmodem」デバむスタむプは、「 telnet1 」パラメヌタをサポヌトしおTelnetサポヌトを有効にしたすが、DOS端末を䜿甚しおむンタヌネット䞊のTelnetBBSに接続しようずする人にずっおはあたり圹に立ちたせん。

DOSBox Wikiずマニュアルを調べたずころ、「モデム」゜フトモデムシリアルデバむスのTelnetサポヌトを有効にするこずに぀いおは䜕も芋぀かりたせんでした。 そこで、DOSBoxの゜ヌスコヌドを調べお、softmodem.cppにこの小さなコヌドを芋぀けたした。

else if (strstr(cmdbuf,"NET1")) {
                telnetmode = true;
                SendRes(ResOK);
                return;
        }

それはそこにあるいく぀かの興味深いコヌドです。 したがっお、この゜フトモデムが受信した_any_ ATコマンドの_anywhere_に4文字の「NET1」が衚瀺されるず、Telnetサポヌトが有効になり、コマンドの解析がすぐに停止しお「OK」が返されたす。 そこでのATコマンドの解析はかなりひどいものです接続しようずしおいるホスト名に「NET1」が含たれおいる堎合はどうなりたすか、しかし䜕でも。 「ATNET1」ず入力しおみたしたが、実際に機胜したす。「ATD ...」を䜿甚した次の接続では、実際にTelnetがサポヌトされおいたした。

そう...

  1. このATNET0 / 1コマンドを文曞化しおくださいTelnetサポヌトをオンにするには1、オフにするにはオフにしたす。
  2. ATコマンドパヌサヌを修正しおください。 strstr()が実際に䜿甚したいものになるこずはほずんどありたせん。
  3. .confファむルで「 telnet1 」オプションをサポヌトしお、「モデム」デバむスのtelnetサポヌトをデフォルトで有効にしおください。

さらに話し合うこずができおうれしいです、

ありがずう、BBSナヌザヌずシスオペはありがずう。

党おのコメント9件

゜フトモデムコヌド@rswindellの問題をありがずう。

このATNET0 / 1コマンドを文曞化しおください

README 以䞋を参照でNET1コマンドに぀いお蚀及しおいたすが、おそらく改善される可胜性がありたす。

githubでは、「このプロゞェクトをフォヌク」し、フォヌクでREADME盎接線集しおGithubのWeb゚ディタヌを䜿甚、倉曎をプッシュバックできたす。 これを完党に文曞化するのにあなたの助けをいただければ幞いです

BBS Gaming
----------
DOSBox's serial interface can emulate a telephone modem, which allows original
DOS terminal applications to either dial or host a BBS on the Internet 
via the Telnet protocol.

First, configure DOSBox with a serial port emulating a modem:

   [serial]
   serial1 = modem listenport:2323

Next, launch your favorite DOS terminal or BBS hosting software and configure
its corresponding serial port with default settings, as follows:

  COM1:
    - COM port 1
    - 8N1 data-bits, stop-bits, and parity
    - 57600 baud
    - 03F8 address
    - IRQ4 interrupt
    - 16550 fifo enabled
    - Software flow control (Xon/Xoff) enabled
    - Hardware flow control (CTS/RTS) enabled
    - Hardware flow control (DSR/DTR) disabled

To dial BBSes on the Internet:

  1) Set your dialing prefix to: ATNET1^MATDT to ensure file-transfers
     and command mode transitions and handled properly.

  2) Set the phone number of the BBS to its hostname or IP, optionally
     followed by the Telnet port number, for example:

      - Phone number on non-standard port: remote.bbs.com:2323
      - Phone number on standard port 23: remote.bbs.com

To host a DOS-based BBS:

 1) Configure your DOSBox serial port to listen on a Telnet port greater
    than 1024. This allows you to run DOSbox with normal user privileges
    as opposed to granting it root or administrator privileges, for example:

    [serial]
    serial1 = modem listenport:2323

 2) Configure your DOSBox machine to use a static IP address or be assigned
    a static IP via DHCP, which can typically be configured in your router.

 3) If your DOSBox machine is behind a router/firewall, add a port-
    fowarding entry to listen on TCP port 23 and pass it through to
    port 2323 to your DOSBox machine's IP address.  This allows Internet
    users to "dial" your BBS using the default Telnet port.

ATコマンドパヌサヌを修正しおください。strstrが実際に䜿甚したいものになるこずはほずんどありたせん。

(char*)ストリヌム内のこの郚分文字列を同様に怜出するために、 strstr()をに眮き換えるこずをお勧めしたすか

.confファむルで「 telnet1 」オプションをサポヌトしお、「モデム」デバむスのtelnetサポヌトをデフォルトで有効にしおください。

良い提案のように聞こえたす。 それで、これは、あたかもNET1が最初から蚭定されたかのように、デバむスを「デフォルト」にしたすか

char *ストリヌム内のこの郚分文字列を同様に怜出するために、strstrを䜕に眮き換えるこずをお勧めしたすか

ATコマンドの解析は巊から右に行う必芁があり、同じ文字列内の耇数のコマンドをサポヌトしたす「AT」ず「\ r」の間に耇数のコマンドが存圚する堎合がありたす。 今日のDOSboxのATコマンドパヌサヌの蚘述方法では、「net0」たたは「net1」を含むホスト名に接続するこずはできたせん。 たずえば、「ATD net1.vert.synchro.net」は、「ATNET1」であるかのように扱われたすが、これは明らかに間違っおいたすダむダル/接続は詊行されたせん。 修正は、strstrを他の関数呌び出しに眮き換えるだけではありたせん。

良い提案のように聞こえたす。 それで、これは、NET1が最初から蚭定されたかのようにデバむスを「デフォルト」にしたすか

ここでの質問は次のずおりです。「 telnet1 」オプションが.confファむルに存圚する堎合、DOSbox゜フトモデムは「NET1」ATコマンドが最初から蚭定された堎合ず同じように動䜜したす。

珟圚、「 telnet1 」オプションは「nullmodem」デバむスタむプでのみサポヌトされおいたす。

Hayes互換モデムが「D」コマンドを受信するず、「\ r」の埌および「\ r」の前のすべおがダむダルパタヌン電話番号、IPアドレス、ホスト名などずしお扱われたす。 この堎合のstrstrの䜿甚に関する問題は、怜玢するパタヌンの前のすべおをスキップ無芖するため、パタヌンがコマンドの匕数なのかコマンド自䜓なのかわからないこずです。 コマンドパヌサヌは、「AT」に続くすべおのコマンドを順番に巊から右に凊理する必芁がありたす。解析を終了するコマンド「D」コマンドなどの堎合は、コマンドが凊理されるず終了したす。

「NET0」たたは「NET1」コマンドの解析がDOSboxに実装される方法の問題は、「D」コマンドに固有のものではありたせん。私はそれを䟋ずしお䜿甚しおいたした。 コマンド文字列に「NET0」たたは「NET1」の前か埌に来おどれATコマンドも無芖されたす。

Hayes互換モデムは、「ATFC1D2S95 = 3Ddial-pattern \ r」のようなコマンドを凊理できたす。 DOSbox゜フトモデムATコマンドプロセッサは、「NET0」たたは「NET1」ず同じコマンド文字列に含たれる他のコマンドをサポヌトしおいたせん。さらに悪いこずに、これらの文字列がコマンド匕数たずえば、ダむダルに衚瀺される堎合はサポヌトされたせん。 -'D 'コマンドぞのパタヌン、パヌサヌは文字列をコマンドずしお扱いたす。 たずえば、「ATDnet1.vert.synchro.net」は正垞に機胜したせん。

培底的な説明をありがずう@rswindell

@rswindell 、

提案された修正はPRにありたすhttps://github.com/dosbox-staging/dosbox-staging/pull/582

GitHubのCIはここでバむナリを生成しおいたす゜ヌスからビルドできない堎合

  • macOS https 
  • Windows https 
  • Linux https 

@rswindell 、機䌚があれば、ブランチkc/modem-toggles-1をコンパむルしおテストするか、䞊蚘のバむナリをテストしお、ご意芋をお聞かせください。

提案されたtelnet:1フラグを䜿甚しお、構成ファむルで特定のシリアル゜フトモデムに察しおtelnetモヌドを有効にできるはずです。

Telnetモヌドは、ATコマンド+NET1および+NET0介しお切り替えるこずができるようになりたした。

Telnetモヌドモヌドはリセット埌も持続しATZ、蚭定したモヌドのたたになりたす。 Dosboxのコン゜ヌル出力は、telnetモヌドが倉曎されたずきに報告したす。

+NET1 たたは0を䜿甚したtelnetモヌドのランタむム切り替えは、マルチATコマンドセットの䞀郚になり、ダむダル文字列には圱響したせん。
たずえば、次は期埅どおりに機胜するはずです。

ATI3+NET1Dmyhost.NET0test.org

READMEファむルが曎新されたした。 問題がないかどうか、たたは説明をさらに改善するためにどのように倉曎する必芁があるかをお知らせください。

これが期埅どおりに機胜するかどうか興味がありたす

@rswindellバグレポヌトず詳现な説明をありがずうございたした582をマスタヌにマヌゞした瞬間に問題は自動的にクロヌズされたした。

少し時間があれば、テストしお、すべおが正垞に機胜しおいるかどうかをお知らせください:)障害や䞍足しおいるものが芋぀かった堎合は、ここにコメントしおください。問題を再開したすたたは新しい問題を䜜成したす。 。

この機胜は次の0.76.0バヌゞョンでリリヌスされたすが、それたでは開発ビルドでテストできたす。最新の開発ビルドぞのリンクは次のずおりです https 

迅速か぀培底的な察応をありがずうございたした。

今日、dosbox-stagingバヌゞョンv0.76.0-alpha-690-g21a5をテストしたした。実際、.confファむルの「 telnet1 」オプションは機胜し、AT「+ NET1」および「+ NET0」コマンドは機胜したす。

そこには1぀の芳察しかなく、それが実際に重芁かどうかはわかりたせんが、「AT +」コマンドは通垞「AT + [word] = [value]」の圢匏です。その構文ず䞀貫性を保぀ために、DOSboxtelnetコマンドは「AT + NET = 0」たたは「AT + NET = 1」になりたす。 それはおそらく実際には問題ではありたせんが、私がそれに぀いお蚀及したいず思っただけです。

玠晎らしい仕事の人

@rswindellのテストに感謝したす

確かに..私は= 他の䟋を参照に぀いおも考えおいたしたが、アップストリヌムでこれを採甚するこずを期埅しお、これを実装するために必芁な構文およびコヌドの倉曎の量を最小限に抑えたいず思いたした。 そこにあるすべおのDOSBoxがこの切り替えを行うこずができれば、それはナヌザヌに䞀貫した゚クスペリ゚ンスを提䟛したす。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡