I2PControl API 2

Proposal 118
Rejected
Author hottuna
Created 2016-01-23
Last Updated 2018-03-22

अवलोकन

यह प्रस्ताव I2PControl के लिए API2 को रेखांकित करता है।

यह प्रस्ताव अस्वीकृत कर दिया गया और इसे लागू नहीं किया जाएगा, क्योंकि यह पिछड़े संगतता को तोड़ता है। विवरण के लिए चर्चा धागा लिंक देखें।

विकासकर्ता ध्यान दें!

सभी RPC पैरामीटर अब छोटे अक्षरों में होंगे। यह पिछड़े संगतता के साथ API1 कार्यान्वयन तोड़ देगा। इसका कारण उपयोगकर्ताओं को >=API2 के साथ सबसे सरल और सबसे सुसंगत संभव API प्रदान करना है।

API 2 विनिर्देश

{
    "id": "id",
    "method": "method_name",
    "params": {
      "token": "auth_token",
      "method_param": "method_parameter_value",
    },
    "jsonrpc": "2.0"
  }

  {
    "id": "id",
    "result": "result_value",
    "jsonrpc": "2.0"
  }

पैरामीटर

"id"

रिक्वेस्ट का पहचान संख्या। यह पहचानने के लिए उपयोग किया जाता है कि कौन सा जवाब किस अनुरोध से उत्पन्न हुआ।

"method_name"

उस RPC का नाम जो सक्रिय किया जा रहा है।

"auth_token"

सत्र प्रमाणीकरण टोकन। यह ‘authenticate’ कॉल को छोड़कर हर RPC के साथ प्रदान किया जाना चाहिए।

"method_parameter_value"

विधि पैरामीटर। विधि के विभिन्न प्रकारों को पेश करने के लिए उपयोग किया जाता है। जैसे ‘get’, ‘set’ और इस प्रकार।

"result_value"

वह मान जो RPC लौटाता है। इसका प्रकार और सामग्री विधि पर निर्भर करती है और किस विधि पर।

उपसर्ग

RPC नामकरण योजना CSS में कैसे किया जाता है के समान है, विभिन्न API कार्यान्वयन (i2p, kovri, i2pd) के लिए विक्रेता उपसर्ग के साथ:

XXX.YYY.ZZZ
    i2p.XXX.YYY.ZZZ
    i2pd.XXX.YYY.ZZZ
    kovri.XXX.YYY.ZZZ

विक्रेता-विशिष्ट उपसर्गों के साथ समग्र विचार कुछ मर्यादा स्थान छोड़ना और कार्यान्वयन को नवीनतम बनाए रखने की अनुमति देना है बिना अन्य सभी कार्यान्वयन के इंतजार किए। अगर किसी RPC को सभी कार्यान्वयन द्वारा कार्यान्वित किया गया है, तो उसके कई उपसर्गों को हटा दिया जा सकता है और इसे अगली API संस्करण में कोर RPC के रूप में शामिल किया जा सकता है।

विधि पढ़ने की मार्गदर्शिका

  • rpc.method

    • पैरामीटर [पैरामीटर का प्रकार]: [null], [number], [string], [boolean], [array] या [object]। [object] एक {key:value} मानचित्र के रूप में होता है।

लौटाता है:


  "return_value" [string] // यह मान RPC कॉल द्वारा लौटाया गया होता है

विधियाँ

  • authenticate - यदि सही पासवर्ड प्रदान किया गया है, तो यह विधि आपको आगे के एक्सेस के लिए एक टोकन और समर्थित API स्तरों की एक सूची प्रदान करती है।

    • password [string]: इस i2pcontrol कार्यान्वयन के लिए पासवर्ड

      लौटाता है:

    [object]
    {
      "token" : [string], // टोकन जिसे सभी अन्य RPC विधियों के साथ प्रदान किया जाना चाहिए
      "api" : [[int],[int], ...]  // समर्थित API स्तरों की सूची।
    }
  • control. - आई2पी को नियंत्रित करें

    • control.reseed - पुनः बीजारोपण शुरू करें

      • [nil]: कोई पैरामीटर आवश्यक नहीं है

      लौटाता है:

      [nil]
  • control.restart - I2P उदाहरण को पुनः प्रारंभ करें

    • [nil]: कोई पैरामीटर आवश्यक नहीं है

    लौटाता है:

      [nil]
  • control.restart.graceful - I2P उदाहरण को सफाई से पुनः प्रारंभ करें

    • [nil]: कोई पैरामीटर आवश्यक नहीं है

    लौटाता है:

      [nil]
  • control.shutdown - I2P उदाहरण को बंद करें

    • [nil]: कोई पैरामीटर आवश्यक नहीं है

    लौटाता है:

      [nil]
  • control.shutdown.graceful - I2P उदाहरण को सफाई से बंद करें

    • [nil]: कोई पैरामीटर आवश्यक नहीं है

    लौटाता है:

      [nil]
  • control.update.find - अवरोधक हस्ताक्षरित अद्यतनों के लिए खोजें

    • [nil]: कोई पैरामीटर आवश्यक नहीं है

    लौटाता है:

      true [boolean] // सही अगर हस्ताक्षरित अद्यतन उपलब्ध है
  • control.update.start - अद्यतन प्रक्रिया शुरू करें

    • [nil]: कोई पैरामीटर आवश्यक नहीं है

    लौटाता है:

      [nil]
  • i2pcontrol. - I2PControl को कॉन्फ़िगर करें

    • i2pcontrol.address - आईपी पता प्राप्त / सेट करें जिसे I2PControl सुनता है।

      • get [null]: इस पैरामीटर को सेट करने की आवश्यकता नहीं है।

      लौटाता है:

      "0.0.0.0" [string]
* *set* [string]: यह एक आईपी पता होगा जैसे "0.0.0.0" या "192.168.0.1"

लौटाता है:
      [nil]
  • i2pcontrol.password - I2PControl पासवर्ड बदलें।

    • set [string]: नया पासवर्ड इस स्ट्रिंग में सेट करें

    लौटाता है:

      [nil]
  • i2pcontrol.port - पोर्ट प्राप्त / सेट करें जिसे I2PControl सुनता है।

    • get [null]: इस पैरामीटर को सेट करने की आवश्यकता नहीं है।

    लौटाता है:

      7650 [number]
* *set* [number]: उस पोर्ट पर बदलें जिसे I2PControl सुनता है

लौटाता है:
      [nil]
  • settings. - I2P उदाहरण सेटिंग्स प्राप्त / सेट करें

    • settings.advanced - उन्नत सेटिंग्स

      • get [string]: इस सेटिंग का मान प्राप्त करें

      लौटाता है:

      "setting-value" [string]
* *getAll* [null]:

लौटाता है:
      [object]
      {
        "setting-name" : "setting-value", [string]
        ".." : ".."
      }
* *set* [string]: इस सेटिंग का मान सेट करें
* *setAll* [object] {"setting-name" : "setting-value", ".." : ".." }

लौटाता है:
      [nil]
  • settings.bandwidth.in - इनबाउंड बैंडविड्थ सेटिंग्स

  • settings.bandwidth.out - आउटबाउंड बैंडविड्थ सेटिंग्स

    • get [nil]: इस पैरामीटर को सेट करने की आवश्यकता नहीं है।

    लौटाता है:

      0 [number]
* *set* [number]: बैंडविड्थ सीमा सेट करें

लौटाता है:
     [nil]
  • settings.ntcp.autoip - NTCP के लिए आईपी स्वचालित पहचान सेटिंग प्राप्त करें

    • get [null]: इस पैरामीटर को सेट करने की आवश्यकता नहीं है।

    लौटाता है:

      true [boolean]
  • settings.ntcp.hostname - NTCP होस्टनाम प्राप्त करें

    • get [null]: इस पैरामीटर को सेट करने की आवश्यकता नहीं है।

    लौटाता है:

      "0.0.0.0" [string]
* *set* [string]: नया होस्टनाम सेट करें

लौटाता है:
      [nil]
  • settings.ntcp.port - NTCP पोर्ट

    • get [null]: इस पैरामीटर को सेट करने की आवश्यकता नहीं है।

    लौटाता है:

      0 [number]
* *set* [number]: नया NTCP पोर्ट सेट करें।

लौटाता है:
      [nil]
* *set* [boolean]: NTCP आईपी स्वचालित पहचान सेट करें

लौटाता है:
      [nil]
  • settings.ssu.autoip - SSU के लिए IP स्वचालित पहचान सेटिंग कॉन्फ़िगर करें

    • get [nil]: इस पैरामीटर को सेट करने की आवश्यकता नहीं है।

    लौटाता है:

      true [boolean]
  • settings.ssu.hostname - SSU होस्ट नेम कॉन्फ़िगर करें

    • get [null]: इस पैरामीटर को सेट करने की आवश्यकता नहीं है।

    लौटाता है:

      "0.0.0.0" [string]
* *set* [string]: नया SSU होस्ट नेम सेट करें

लौटाता है:
      [nil]
  • settings.ssu.port - SSU पोर्ट

    • get [null]: इस पैरामीटर को सेट करने की आवश्यकता नहीं है।

    लौटाता है:

      0 [number]
* *set* [number]: नया SSU पोर्ट सेट करें।

लौटाता है:
      [nil]
* *set* [boolean]: SSU IP स्वचालित पहचान सेट करें

लौटाता है:
      [nil]
  • settings.share - बैंडविड्थ शेयर प्रतिशत प्राप्त करें

    • get [null]: इस पैरामीटर को सेट करने की आवश्यकता नहीं है।

    लौटाता है:

      0 [number] // बैंडविड्थ शेयर प्रतिशत (0-100)
* *set* [number]: बैंडविड्थ शेयर प्रतिशत सेट करें (0-100)

लौटाता है:
      [nil]
  • settings.upnp - UPNP को सक्षम या अक्षम करें

    • get [nil]: इस पैरामीटर को सेट करने की आवश्यकता नहीं है।

    लौटाता है:

      true [boolean]
* *set* [boolean]: SSU IP स्वचालित पहचान सेट करें

लौटाता है:
      [nil]
  • stats. - I2P उदाहरण से आँकड़े प्राप्त करें

    • stats.advanced - यह विधि उदाहरण के भीतर रखे गए सभी आँकड़ों तक पहुँच प्रदान करती है।

      • get [string]: प्रदान की जाने वाली उन्नत आँकड़ों का नाम
      • Optional: period [number]: प्रत्येक आँकड़े के लिए अवधि
    • stats.knownpeers - ज्ञात सहकर्मियों की संख्या लौटाता है

    • stats.uptime - माइक्रोसेकंड में समय लौटाता है जब से राउटर शुरू हुआ

    • stats.bandwidth.in - इनबाउंड बैंडविड्थ लौटाता है (आदर्श रूप से पिछले सेकंड के लिए)

    • stats.bandwidth.in.total - अंतिम पुनः प्रांरभ के बाद प्राप्त बाइट्स की संख्या लौटाता है

    • stats.bandwidth.out - आउटबाउंड बैंडविड्थ लौटाता है (आदर्श रूप से पिछले सेकंड के लिए)

    • stats.bandwidth.out.total - अंतिम पुनः प्रांरभ के बाद भेजे गए बाइट्स की संख्या लौटाता है

    • stats.tunnels.participating - वर्तमान में भाग ले रहे चित्रपटों की संख्या लौटाता है

    • stats.netdb.peers.active - सहकर्मियों की संख्या लौटाता है जिनके साथ हमने हाल ही में संवाद किया है

    • stats.netdb.peers.fast - ‘तेज़’ सहयोगियों की संख्या लौटाता है

    • stats.netdb.peers.highcapacity - ‘उच्च क्षमता’ सहयोगियों की संख्या लौटाता है

    • stats.netdb.peers.known - ज्ञात सहयोगियों की संख्या लौटाता है

      • get [null]: इस पैरामीटर को सेट करने की आवश्यकता नहीं है।

      लौटाता है:

      0.0 [number]
  • status. - I2P उदाहरण की स्थिति प्राप्त करें

    • status.router - राउटर की स्थिति प्राप्त करें

      • get [null]: इस पैरामीटर को सेट करने की आवश्यकता नहीं है।

      लौटाता है:

      "status" [string]
  • status.net - राउटर नेटवर्क स्थिति प्राप्त करें

    • get [null]: इस पैरामीटर को सेट करने की आवश्यकता नहीं है।

    लौटाता है:

      0 [number]
      /**
       *    0 – ठीक है
       *    1 – परीक्षण कर रहा है
       *    2 – फायरवॉल किया गया
       *    3 – छिपा हुआ
       *    4 – चेतावनी_फायरवॉल_और_तेजी से
       *    5 – चेतावनी_फायरवॉल_और_फ्लडफ़िल
       *    6 – चेतावनी_फायरवॉल_इनबाउंड_टीसीपी के साथ
       *    7 – चेतावनी_फायरवॉल_यूडीपी_डिसेबल के साथ
       *    8 – त्रुटि_I2CP
       *    9 – त्रुटि_घड़ी_विचलन
       *   10 – त्रुटि_निजी_TCP_पता
       *   11 – त्रुटि_सिमिट्रिक_एनएटी
       *   12 – त्रुटि_यूडीपी_पोर्ट_उपयोग में
       *   13 – त्रुटि_कोई_सक्रिय_सहकर्मी_कनेक्शन_और_फायरवॉल की जांच करें
       *   14 – त्रुटि_यूडीपी_अक्षमित_टीसीपी_असेट के साथ
       */
  • status.isfloodfill - क्या I2P उदाहरण वर्तमान में बाढ़ है

    • get [null]: इस पैरामीटर को सेट करने की आवश्यकता नहीं है।

    लौटाता है:

      true [boolean]
  • status.isreseeding - क्या I2P उदाहरण वर्तमान में पुनः बीजारोपण कर रहा है

    • get [null]: इस पैरामीटर को सेट करने की आवश्यकता नहीं है।

    लौटाता है:

      true [boolean]
  • status.ip - इस I2P उदाहरण का सार्वजनिक आईपी पता लगाया गया

    • get [null]: इस पैरामीटर को सेट करने की आवश्यकता नहीं है।

    लौटाता है:

      "0.0.0.0" [string]