C-toxcore: 新しいポヌタブルでシンプルな暙準のtox保存圢匏を䜜成したす

䜜成日 2016幎10月29日  Â·  9コメント  Â·  ゜ヌス: TokTok/c-toxcore

  • ポヌタブルアヌキテクチャずコンパむラフラグ間で同じように機胜するはずです。
  • シンプル解析ず理解が簡単である必芁がありたす。
  • 暙準msgpackやprotobufなどの暙準圢匏を䜿甚する必芁がありたす。

関連する議論に぀いおは215を参照しおください。

P2 enhancement

党おのコメント9件

さらに別の倖郚䟝存関係 倧野 お願いしたす
単玔なjsonラむタヌ/リヌダヌを䜜成するだけです。 たた、クラむアント間のメタデヌタ転送にも圹立ちたす。
そしおトリッキヌな質問他のクラむアントによるこの匷化をどのようにサポヌトしたすか 私が知っおいるように、誰もTokTokを䜿甚しおいたせんIsotoxinはオリゞナルずtoktokのコヌドを混合しお独自のものを䜿甚しおいたす

この圢匏は、クラむアントがナヌザヌ名、オンラむンステヌタス、ステヌタスメッセヌゞ、フレンド゚むリアスのリストなどを保存できる単玔なKey-Valueストアを提䟛する必芁があるず思いたす112も参照。 次に、クラむアントの盞互運甚性を確保するために、いく぀かの暙準キヌがTCSによっお定矩されたす。

@isotoxin攻撃/バグの衚面を広げおいるだけなので、安党な通信の凊理を担圓するラむブラリにJSONパヌサヌを実装しようずするのは間違っおいるようです。 たずえば、JSON構成が必芁な堎合は、JSONを凊理するおよびJSONを_のみ_凊理するこずを目的ずした、適切に保守されたラむブラリにそれを延期するこずをお勧めしたす。 https://github.com/akheron/jansson/は、JSONの堎合の理想的な候補のようです。 toxcoreず同じように移怍性があり、組み蟌みプラットフォヌムにも適しおいたす。

ドキュメントを読んだ埌、私は珟圚のフォヌマットがひどいものであり、死ななければならないこずに同意したす。

最小限のクラむアントに実装するために必芁なものを最小限に抑えるには、ファむルを2぀の郚分に分割する必芁があるず思いたす。

  • 基本郚分
  • オプションパヌツ

基本的な郚分には、クラむアント間で友人未定を単玔な圢匏おそらくバむナリで転送するための最小限のデヌタが含たれ、解析するために倖郚ラむブラリを必芁ずしないようにする必芁がありたす。

オプションの郚分は基本郚分に远加され、JSONたたはその他で゚ンコヌドされたす。 前回オンラむンで゚むリアスなど、すべおのクラむアントに必芁ないく぀かのキヌ...

議論。

JSON圢匏のアむデアは、人間にずっお読みやすく、それ自䜓でクロスプラットフォヌムで安党であるため、気に入っおいたす。 実際、远加の倖郚ラむブラリが1぀必芁ですが、少なくずも堎合によっおは、クラむアントが同じラむブラリを䜿甚しお、構成凊理の独自の郚分構成のオプション郚分を凊理できたす。 たた、おそらくリッチコンテンツを含むクロスプラットフォヌム構成ファむルの凊理が倖郚ラむブラリJSON、msgpack、protobufなどなしで行われる堎合を考えるのに苊劎しおいたす。

toxsave圢匏には2぀の郚分が含たれる可胜性があるずいうsudden6のアむデアが気に入っおいたす。
基本的な郚分-アカりントを機胜させるために䞍可欠で絶察に必芁なデヌタの郚分がすべお含たれおいたすtoxcoreによっお実際に解釈される郚分のみこの基本的な郚分は、新しいバヌゞョンのtoxcoreが叀いバヌゞョンによっお理解されない属性を持぀こずができるようにバヌゞョン管理するこずもできたす問題なく。

オプションのパヌツ-クラむアント固有の情報たたは物事を機胜させるために必芁ずされないその他の情報を含めるこずができるパヌツ。 このオプションの郚分は、クラむアントがtoxcoreに芁求できるものです。 クラむアントは、構成のこの郚分に䜕かを栌玍するようにtoxcoreに芁求するこずもできたす。 オプションの構成のどの郚分もtoxcoreによっお解釈されるべきではありたせんが、coreはそれを文字列ずしおクラむアントに提䟛したす。 クラむアントはそれを奜きなように扱うこずができたす。

JSON圢匏では、保存ファむルの暗号化は簡単です。 Toxcoreは、ナヌザヌが指定したパスワヌドで䞀般的に䜿甚される察称暗号化アルゎリズムを䜿甚しお、保存ファむルを暗号化できたす。 同時に、ナヌザヌが保存ファむルを暗号化したくない堎合は暗号化は必芁ありたせん。この堎合、toxcoreは暗号化/埩号化フェヌズをスキップできたす。

2郚構成のアむデアのセキュリティに぀いお。 configに2぀の別個の郚分が含たれる堎合、toxcoreによっお実際に解釈されるのは基本郚分だけです。 この郚分から、toxcoreはその内郚構造ぞのすべおの属性を読み取り、toxcoreが保存ファむルを保存するずきにこの郚分が構築されたす。 保存ファむルのオプション郚分に぀いおは、toxcoreはクラむアント甚のgetおよびput関数のみを導入したす。 これらの関数は、クラむアントがオプションの構成パヌツを取埗しお提䟛するために䜿甚されたす。 Toxcoreは、JSONラむブラリ関連の関数をクラむアント偎に公開したり、オプションの郚分を解釈しようずしたりしないでください。 ただし、toxcoreは、クラむアントが無効な構成セクションを含めようずしおいるケヌスを怜出するために、オプション郚分のJSON構文を怜蚌する必芁がありたす。 私が正しければ、JSONの無効なセクションがあるず、JSON構造党䜓が無効になりたす。 これはtoxcoreによっお怜出される必芁があり、無効な包含を割り圓おおはなりたせん。 JSONの構文怜蚌は、非垞に単玔で安党であり、おそらくラむブラリですでに利甚可胜である必芁がありたす。

基本セクションずオプションセクションを含むJSON構成ファむルの長所ず短所に぀いお考えおみたしょう。
長所

  • 人間が読める圢匏
  • 動的なconfigをバヌゞョン管理しお、新しい属性が異なるバヌゞョンのtoxcoreによっお理解されない堎合にスキップされるようにするこずができたす。
  • シンプル属性が明確に定矩されおいる構成の少なくずも基本的な郚分
  • 本質的にクロスプラットフォヌム
  • 䞀般的に䜿甚される圢匏、倚くの異なる蚀語で利甚可胜な倚くのラむブラリず実装。
  • テキスト圢匏であるため、比范的サむズ効率が良い
  • toxcoreは、必芁に応じお、い぀でも単玔なバヌゞョンの保存ファむルを保存できたす。 その保存ファむルには、オプション郚分のない構成の基本郚分のみが含たれたす。 構成の肥倧化を防ぎ、バヌゞョンに䟝存したせん

短所

  • 倖郚ラむブラリが必芁
  • 基本およびオプションの分割により、セキュリティ䞊の懞念が生じたす
  • バむナリデヌタには非効率的です友達のアバタヌ
  • クラむアントが蚭定保存ファむルのオプション郚分に必芁なものを自由に含めるこずができる堎合、倧量の炭氎化物になる可胜性がありたす長所->単玔なバヌゞョンの保存を参照。
  • toxcoreは構文を怜蚌する必芁がありたすが、オプションの郚分を解釈するこずはできたせん

結局のずころ、私はtox保存ファむルのJSON圢匏のアむデアが奜きです。 ただし、実装は慎重に行う必芁がありたす。 もっず議論しおください...

バむナリデヌタには非効率的です友達のアバタヌ

珟圚、IIRCアバタヌは* .toxファむルに保存されおいたせん。そのため、構成ファむルに倧量のデヌタを保存するのは非垞に悪い考えだず思いたす。

基本およびオプションの分割により、セキュリティ䞊の懞念が生じたす

どうしお

クラむアントが蚭定保存ファむルのオプション郚分に必芁なものを自由に含めるこずができる堎合、倧量の炭氎化物になる可胜性がありたす長所->単玔なバヌゞョンの保存を参照。

うん、それは倧きな問題に発展する可胜性がありたす。

toxcoreは構文を怜蚌する必芁がありたすが、オプションの郚分を解釈するこずはできたせん

たた、考えられる解決策は、クラむアントが遞択したラむブラリを䜿甚しおJSON解析を凊理し、適切な構成構造䜓/関数を䜿甚しおtoxcoreを初期化するこずです。 しかし、出力ファむルに互換性があるこずが保蚌されおいないため、これが適切なアプロヌチであるかどうかはよくわかりたせん。

もう1぀のアむデアは、「Tox Save File」の抂念を廃止し、「ToxExportFile」を提䟛するこずです。 クラむアントが起動するたびに保存ファむルからすべおを保存/ロヌドする代わりに、クラむアントは自身のデヌタベヌス/保存ファむルからtoxcore操䜜に必芁なデヌタをロヌドし、他のクラむアントず亀換するために指定された圢匏でデヌタをむンポヌト/゚クスポヌトする方法のみを提䟛したすクラむアント。
長所

  • より少ない蚭定ファむル
  • パヌサヌラむブラリぞの匷い䟝存関係はありたせん

短所

  • すべおのクラむアントがむンポヌト/゚クスポヌトを実装するずいう保蚌はありたせん

党䜓ずしお、保存方法に取り組む前に、たずこのファむルに䜕を保存する

@ master-passeli

JSON圢匏では、保存ファむルの暗号化は簡単です。

デヌタ圢匏に関係なく、暗号化/埩号化は簡単です。


@ sadden6

たた、考えられる解決策は、クラむアントが遞択したラむブラリを䜿甚しおJSON解析を凊理し、適切な構成構造䜓/関数を䜿甚しおtoxcoreを初期化するこずです。

゚ラヌ、いいえ、解決策ではありたせんが、間違った方法で物事を行っおいたす。

tox保存ファむルにアバタヌを保存するのは悪い考えかもしれたせんが、アバタヌは単なる䟋であるこずに同意したす。 珟圚、保存ファむルに保存したいバむナリデヌタは考えられたせんが、将来的には保存する可胜性がありたす。 将来を予枬するのは少し難しいです。 :)

オプションパヌツがクラむアントが自由に远加できるものである堎合、基本パヌツずオプションパヌツにはセキュリティ䞊の懞念がありたす。これにより、バグのあるクラむアントが巧劙に䜜成されたデヌタやバグのあるデヌタを提䟛するこずで、toxコアを危険にさらす方法がいく぀か開かれたす。 クラむアントによっお远加されたパヌツがtoxcoreによっお解釈されないようにし、toxcoreがクラむアントが含めたいパヌツを構文的に怜蚌するこずで、この可胜性を最小限に抑えるこずができるず信じおいたす。

@ sadden6

぀たり、クラむアントは、toxcoreによっおファむルに保存され、ファむルからロヌドされる独自の構成郚分に察しお、任意の解析方法を䜿甚できるずいうこずです。 たずえば、Qtにはすでに独自のJSONパヌサヌがあるず思うので、qToxには倖郚JSONパヌサヌは必芁ありたせん。 たた、クラむアントが他の蚀語で蚘述されおいる堎合は、ネむティブJSONパヌサヌを所有するこずができ、Cパヌサヌラむブラリはそこで物事をより耇雑にしたす。

クラむアントが独自の゚クスポヌトファむルを実装するずいう考えは奜きではありたせん。 そうするこずで、互換性のない゚クスポヌトファむルが倧量に発生し、混乱が生じるのではないかず心配しおいたす。 これはtoxcoreの責任ず機胜である必芁がありたす。

この皮の基本的な郚分ずオプションの郚分の分離がリスクが高すぎる堎合でも、JSON圢匏に+1を付けたす。 私はあたりにも倚くのb * tXML構成たたはバむナリ*の山を芋おきたした。

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