I-Microsemi-LGOO

I-Microsemi AN1256 Web Isicelo sabahleli

I-Microsemi-AN1256-Web-Programmers-Application-PRO

Isingeniso

I-JSON (i-JavaScript Object Notation) iyindinganiso evulekile file ifomethi esebenzisa umbhalo ofundeka umuntu wokushintshanisa idatha. Kuyifomethi yedatha evamile esetshenziselwa ukuxhumana kwesiphequluli/iseva engavumelaniyo.
Okwentsha web ukwakheka kwekhasi, ifomethi ye-JSON ingaba indawo yesitayela sokuqala se-AJAX. Qhathanisa ne-AJAX, usebenzisa i-JSON yenza i- Web ukuqaliswa kulula futhi kulula. Umthuthukisi udinga kuphela ukugxila web ukwakheka kwekhasi kanye ne Web ukufakwa kwesibambi kungase kukhishwe njengoba indlela yokufinyelela ye-JSON isivele isekelwa endaweni ngayinye WebAmamojula wesoftware ye-StaX.
Lo mbhalo usho umhlahlandlela wabahleli bonjiniyela wesoftware odinga ukuthuthukisa uhlelo Web ikhasi nge-JSON. Izinqubo zemininingwane kanye nesibampLes nayo ifakwe ezigabeni ezilandelayo.

Ukugeleza kokufinyelela kwedatha kwe-JSON

Kuphelileview
Nakhu ukugeleza kokufinyelela kwedatha kwe-JSON okuqalwa uxhumano lwe-HTTP lusuka kuklayenti(isiphequluli). Ithebula le-HTML lakhiwe ngendlela eguquguqukayo ngokuya ngedatha ye-JOSN eyamukelwe ukusuka ohlangothini lweseva(DUT).I-Microsemi-AN1256-Web-Programmers-Application-FIG 1

Umfanekiso 1. Ukugeleza kokufinyelela phakathi kweklayenti neseva

Isicelo/Impendulo yedatha ye-JSON
Iphakethe lesicelo le-JSON lisekelwe endleleni yokuthunyelwe yesicelo se-HTTP futhi okuqukethwe kufanele kulandele ifomethi ye-MSCC JSON.

  • Cela i-syntax ye-JSON:{“indlela”:” ","izimiso":[ ], “id:”jsonrpc”}
  • Impendulo ivela ku- JSON syntax: {“iphutha”: ,"umphumela": , "id:"jsonrpc"}

Izifinyezo ezilandelayo zibonisa okuqukethwe kwe-JSON phakathi kwesiphequluli ne-DUT.I-Microsemi-AN1256-Web-Programmers-Application-FIG 2

Umfanekiso 2. Isifinyezo sesicelo se-HTTP esivela kuklayentiI-Microsemi-AN1256-Web-Programmers-Application-FIG 3

Umfanekiso 3. Isifinyezo sempendulo ye-HTTP evela kuseva

Ukucaciswa kwe-MSCC JSON
Ukuze uthole ulwazi olugcwele lwe-JSON okuhlanganisa indlela, ipharamitha, incazelo nokunye. Thayipha “http:// /json_spec” kubha yekheli lesiphequluli sakho. Kunenye indlela yokufinyelela esebenzisa igama lendlela ye-JSON ethi “jsonRpc.status.introspection.specific.inventory.get”, isetshenziselwa indlela ethile.I-Microsemi-AN1256-Web-Programmers-Application-FIG 4

Umfanekiso 4. Isifinyezo sokucaciswa kwe-JSON web ikhasi

Web uhlaka

I Web uhlaka ku WebIsoftware ye-StaX isuselwe kumthombo ovulekile we-MooTools. Kuyiqoqo lezinsiza ze-JavaScript ezinelayisensi ye-MIT. (http://mootools.net/license.txt) Ibha yemenyu nokunye okuningi web amakhasi asekelwe kuhlaka. Kokubili i-algorithm ye-AJAX ne-JSON isivele ihlanganisiwe ezinhlelweni zayo.
Ngaphandle kwalokho, WebIsofthiwe ye-StaX inikeza ezinye izinsiza eziwusizo ku-JSON web ukwakheka kwekhasi.

  • json.js - Sebenzisa ukudlulisa/ukwamukela idatha eguquguqukayo nge-syntax ye-JSON.
  • dynforms.js - Sebenzisa ukuze wakhe ithebula le-HTML ngendlela eguquguqukayo.
  • validate.js - Sebenzisa ukuze kuqinisekiswe ifomu le-HTML.

Amalabhulali e-JavaScript agcwele atholakala ngaphansi kohla lwemibhalo yesihlahla somthombo: webstax2\ vtss_appl\web\html\lib.

Umhlahlandlela we-JSON Web ukwakheka kwekhasi

Lesi sigaba siqondisa indlela yokuklama a web ikhasi elisuselwe kumitapo yolwazi ye-MSCC JavaScript. Sisebenzisa i-Mirror global emisiwe web ikhasi njenge-example lapha. Ukuxhumana okuvumelanayo kusekelwe endleleni yokufinyelela ye-HTTP JSON futhi wonke amapharamitha amisiwe emhlabeni wonke afakwe kuhlu kuthebula elilodwa le-HTML eliguqukayo.
I web isakhiwo sekhasi sibhalwe ngezansi futhi ikhodi yomthombo egcwele itholakala ngaphansi kohlu lwemibhalo yesihlahla somthombo: webstax2\vtss_appl\mirror\html\mirror_ctrl.htm. Ukuze uthole okujwayelekile okwengeziwe web amakhasi, bheka ingxenye yesithasiselo.

Ithebula Lokulungisa Isibuko ne-RMirrorI-Microsemi-AN1256-Web-Programmers-Application-FIG 5

Umfanekiso 5. Example lethebula elimisiwe lomhlaba jikelele

Hlela Web ikhasi

Isihloko se-HTML
Faka phakathi imitapo yolwazi ye-JS ebidingeka ku-HTML tag.

Qalisa insiza yethebula eliguqukayo

  • Uma idokhumenti ye-HTML isilungile, shayela i-DynamicTable() ukuze uqalise insiza yetafula eguquguqukayo.
  • I-DynamicTable() isetshenziselwa ukudala ithebula eliguqukayo ngemva kokuthola idatha ye-JSON.
  • Ngemuva kwalokho izobiza i-applicationUpdate ukuze iqalise ukugeleza komyalo we-JSON.
  1. window.addEvent('domready', function() {
  2. // Dala ifomu elinomzimba wetafula ukuze uthole/udlulise idatha ye-JSON
  3. myDynamicTable = iDynamicTable entsha(“myTableContent”, “config”,”plusRowCtrlBar”);
    4
  4. requestUpdate();
  5. });

Isicelo/Impendulo yedatha ye-JSON

  • Uma idokhumenti ye-HTML isilungile, sebenzisa isiceloJsonDoc() ukuze uthumele isicelo se-JSON esithi “mirror.config.session.get” ukuze uthole ulwazi mayelana namaseshini amisiwe.
  • Ngemva kokuthi idatha ye-JSON ye-“mirror.capabilities.get” yamukelwe, umsebenzi we-callback requestUpdate() uzocutshungulwa. Umsebenzi we-applicationUpdate uyobe usubiza okuthi “mirror.config.session.get” ukuze uthole ukucushwa kwamanje. Uma ukucushwa kwamanje kwamukelwa, i-function processUpdate ibizwa ngokuthi ukwakha ithebula elizoboniswa.
  1. isicelo somsebenziBuyekeza()
  2. {
  3. // Buyisela okuqukethwe kwethebula
  4. myDynamicTable.restore();
    5
  5. // Leli thebula idatha ye-JSON emibili.
  6. requestJsonDoc(“mirror.config.session.get”, null, processUpdate, “config”);
  7. }

Cubungula idatha ye-JSON etholiwe

  • I-function processUpdate() isetshenziselwa ukuhlela ithebula eliguqukayo ngemva kokuthola idatha ye-JSON.
  • I-addRows() isetshenziselwa ukwengeza imigqa yethebula. myDynamicTable.update() isakhiwo
    Ithebula le-HTML ngokuya ngedatha emigqeni yethebula.
  1. umsebenzi processUpdate(recv_json, name)
  2. {
  3. // Ziba inqubo uma kungekho datha etholiwe
  4. uma (!recv_json) {
  5. isixwayiso(“Ukuthola idatha eguquguqukayo kwehlulekile.”);
  6. buyela;
  7. }
  8. // Londoloza idatha ye-JSON eyamukelwe
  9. myDynamicTable.saveRecvJson(“config”, recv_json);
  10. // Engeza imigqa yetafula
  11. var table_rows = addRows(recv_json);
  12. i-myDynamicTable.addRows(imigqa_yethebula);
  13. // Buyekeza leli thebula eliguquguqukayo
  14. myDynamicTable.update();
  15. // Vuselela isibali sikhathi
  16. var autorefresh = document.getElementById(“autorefresh”);
  17. uma (i-autorefresh && autorefresh.checked) {
  18. uma (i-timerID) {
  19. clearTimeout(timerID);
  20. }
  21. timerID = setTimeout('requestUpdate()', settingsRefreshInterval());
  22. }
  23. }

Engeza imigqa yethebula

  • Kumsebenzi we-addRows(), sisebenzisa ifomethi ye-JSON ukuze sigcwalise ipharamitha ngayinye emisiwe emhlabeni wonke kumugqa wethebula.
  • Zonke izinkambu ze-HTML zifakwe kuhlu lwe-JSON (“imigqa_yethebula”) futhi i-syntax yenkambu yethebula ingezansi.

I-syntax:
imigqa_yethebula:[ , ,… ] : { , ,… }
: {“uhlobo”: , "imingcele":[ , ,…, ]}

  • Kulokhu, umugqa ngamunye unezinkambu ezinhlanu: “I-ID Yesikhathi”, “Imodi”, “Uhlobo”, “I-VLAN ID” kanye “Nembobo ye-Reflector” Ngokwesibonelo.ample,
I-ID Yesikhathi (Inkambu yegama: int32_t) 1 (I-id yesibuko)
Imodi (Inkambu yegama: vtss_bool_t) iqiniso (Okusho ukuthi isikhathi sesibuko sivuliwe)
Uhlobo (Inkambu yegama: enumeration

{isibuko, rMirrorSource, rMirrorDestination}

Umthombo we-RMirror (lona umthombo weseshini yesibuko esikude
I-ID ye-VLAN (Inkambu yegama: uint16_t) 200 (i-vlan esetshenziselwa ukwenza isibuko)
I-Reflector Port (Inkambu yegama: vtss_ifindex_t) Ngo-1/1 (Imbobo lapho kuthunyelwa khona ithrafikhi eyizibuko
  • I-myDynamicTable.addRows() izoguqula idatha ye-JSON ibe ifomethi ye-HTML futhi ikhiphe ithebula le-HTML.
  1. umsebenzi addRow(ukhiye, ival)
  2. {
  3. var none_map_val = 0xFFFFFFFF, none_map_text = “Lutho”, none_interface_text = “AKEKHO”;
  4. var tunnel_mode_suffix = val.TunnelMode == “useglobal” ? ” (” + oTTunnelMode[oVTunnelMode.indexOf(global_conf.tunnelMode)] + “)” : “”;
  5. var row = {izinkambu:[
  6. {type:"link", params:[“cr”, “mirror.htm?session_id=” + key, key]},
  7. {type:"text", params:[oTMode[oVMode.indexOf(val.Mode)], "c"]},
  8. {type:"text", params:[oTType[oVType.indexOf(val.Type)], "c"]},
  9. {type:"text", params:[val.Type == "isibuko" ? "-":
    val.RMirrorVlan, “c”]},
  10. {type:"text", params:[val.Type == "rMirrorSource" ?
    val.ReflectorPort : “-” , “c”]}
  11. ]};
  12. umugqa wokubuya;
  13. }
  14. umsebenzi addRows(recv_json)
  15. {
  16. var irowu, empty_colspan = 7;
  17. var table_rows = I-Array entsha();
  18. // Engeza unhlokweni wethebula
  19. addHeader(ithebula_imigqa);
  20. // Engeza umugqa owodwa
  21. Object.each(recv_json, function(irekhodi) {
  22. table_rows.push(addRow(record.key, record.val));
  23. });
  24. buyisela imigqa_yethebula;
  25. }

Web ikhasi losizo
Okwe web idizayini yekhasi losizo, incazelo yosizo ingabhekisela ekucacisweni kwe-JSON, ukuthi umbhalo wencazelo ungahambisana nokuphumayo kwe-JSON futhi usize ekunciphiseni izincazelo ezingasasebenzi. Example lapha ithathwe ekucushweni kokudluliselwa kwe-dhcp6.

Isixhumanisi se-hyper emthonjeni file
Yabela usizo file indawo emthonjeni wayo file I-HTML tag. Igama eliguquguqukayo elingaguquki elithi “help_page” lisetshenziselwa i web umsebenzi wekhasi losizo.

  1. // Umlingo wekhasi losizo
  2. var help_page = “/help/help_xxx.htm”;

Buyekeza incazelo yenkambu ye-HTML kusukela ekucacisweni kwe-JSON

  • Sebenzisa noma I-HTML tag ukumemezela incazelo yethebula le-HTML futhi unikezwe i-ID ehlukile ye- tag.
  • Uma idokhumenti ye-HTML isilungile, shayela i-loadXMLDoc() ukuze uthole konke ukucaciswa kwe-JSON noma uthole incazelo yendlela ethile ngegama lendlela ye-JSON ethi “jsonRpc.status.introspection.specific.inventory.get”.
  • I-processTableDesc() isetshenziselwa ukubuyekeza incazelo yethebula kanye ne-processUpdate() isetshenziselwa ukubuyekeza incazelo yepharamitha yethebula.
  • Ku-processUpdate(), shayela i-updateTableParamsDesc() ukuze ubuyekeze ama-elementi e-JSON afana namagama e-elementi ethile.
  • Buyekeza i noma tag i-HTML yangaphakathi ngokwencazelo yesici.
  1. /* Buyekeza izinkambu zencazelo ye-HTML */
  2. umsebenzi processTableDesc(req) {
  3. uma (!req.responseText) {
  4. buyela;
  5. }
  6. var json_spec = JSON.decode(req.responseText);
  7. // Buyekeza incazelo yethebula
  8. $(“TableDesc”).innerHTML = getJsonSpecElement(json_spec, “groups”, “dhcp6_relay.config.vlan”).description;
  9. }
  10. /* Buyekeza incazelo yepharamitha yethebula le-HTML */
  11. umsebenzi processUpdate(recv_json) {
  12. // Buyekeza incazelo yepharamitha yethebula
  13. var param_names = [
  14. {
  15. "alias": "Interface",
  16. “type”: “vtss_ifindex_t”,
  17. "name": "vlanInterface",
  18. "isijobelelo": "."
  19. },
  20. {
  21. "alias": "Relay Interface",
  22. “type”: “vtss_ifindex_t”,
  23. "name": "relayVlanInterface",
  24. “isijobelelo”: “. I-id yesixhumi esibonakalayo esisetshenziselwa ukudlulisa."
  25. },
  26. {
  27. "alias": "Relay Destination",
  28. “type”: “mesa_ipv6_t”,
  29. "igama": "relay_destination",
  30. “isijobelelo”: “. Ikheli le-IPv6 leseva ye-DHCPv6 isicelo esizodluliselwa kulo. Inani elizenzakalelayo 'ff05::1:3' liphatha 'noma iyiphi iseva ye-DHCP'.”
  31. }
  32. ];
  33. updateTableParamsDesc(“TableParamsDesc”, recv_json, “dhcp6_relay.config.vlan.get”, param_names);
  34. }
  35. /* Thola ukucaciswa kwe-JSON */
  36. window.addEvent('domready', function () {
  37. loadXMLDoc("/json_spec", processTableDesc);
  38. requestJsonDoc(“jsonRpc.status.introspection.specific.inventory.get”, “dhcp6_relay.config.vlan”, processUpdate);
  39. });

Isixhumanisi se-Hyper kubha yemenyu

  • Ikhodi yomthombo we-HTML yebha yemenyu ikhiqizwa kusukela file webstax2\vtss_appl\web\ menu_default.cxx.
  • Hlela izinto kulokhu file Okwe Web isixhumanisi sekhasi.
  1. #uma kuchaziwe(VTSS_SW_OPTION_DHCP6_RELAY)
  2. INTO(” Relay,dhcp6_relay.htm”);
  3. #endif //VTSS_SW_OPTION_DHCP6_RELAY

QAPHELA
Qaphela ukuthi inombolo yohlamvu lwesikhala kokuthi ITEM(“”), esetshenziselwa ukunquma izinga leqembu kubha yemenyu. Kulokhu, konke web amakhasi angaphansi kweqembu elithi “DHCPv6”.I-Microsemi-AN1256-Web-Programmers-Application-FIG 6

Umfanekiso 6. Isbample lethebula elimisiwe lomhlaba jikelele

Isithasiselo

Okujwayelekile web amakhasi

Kukhona eziningana ejwayelekile web amakhasi angasetshenziselwa ukwakheka kwereferensi. Isib esisodwa esengeziweampOkuzoboniswa lapha ukucushwa kweseshini yesibuko esisodwa esitholakala ku-vtss_appl\mirror\html\mirror.htm.
I web ikhasi linikeza ukucushwa okuningiliziwe kweseshini yesibuko esisodwa. Wonke amapharamitha amisiwe asohlwini.

  • Chofoza inkinobho ethi "Londoloza" ukuze usebenzise ukucushwa kwamanje.
  • Chofoza inkinobho ethi "Setha kabusha" ukuze usethe kabusha ukucushwa kwamanje.
  • Chofoza okuthi “Khansela” ukuze ubuyele emuvaview kwezikhathi zesibuko
Ukucushwa kwe-Mirror&RMirror

Izilungiselelo zomhlaba jikeleleI-Microsemi-AN1256-Web-Programmers-Application-FIG 7

Ukucushwa komthombo we-VLANI-Microsemi-AN1256-Web-Programmers-Application-FIG 8

Ukucushwa KwemboboI-Microsemi-AN1256-Web-Programmers-Application-FIG 9

Umfanekiso 7. Example yokucushwa okuningiliziwe kweseshini yesibuko
Izinkinobho "Gcina", "Setha kabusha" kanye "Khansela" zengezwa ngekhodi ye-html:

Ukugeleza komyalo we-JSON
Leli khasi lidinga ukugeleza komyalo wezinyathelo ezimbili:

  • Okokuqala idinga ukuthola amakhono edivayisi ngendlela ethi “mirror.capabilities.get”. Amakhono awashintshi futhi kufanele afundwe kanye kuphela.
  • Bese idinga ukuthola ukucushwa kwamanje kwedivayisi kusetshenziswa izindlela ze-“mirror.config.session.get”, “port.status.get” futhi uma kunqwabelaniswa okuthi “topo.config.stacking.get”.

Ucingo lwe-“mirror.capabilities.get” luqalwa umcimbi othi “domready” futhi umphumela uyalungiselelwa ukuthi uphathwe umsebenzi wokucelaUpdate.
I-applicationUpdate izoqala ucingo lwe-"mirror.config.session.get",
“port.status.get” futhi uma kunqwabelana okuthi “topo.config.stacking.get” futhi imiphumela yalezi zingcingo ilungiselelwa ukuthi isingathwe umsebenzi wokulungiselelaUpdate.
I-function preparationUpdate izoqoqa yonke imiphumela, futhi kuphela uma yonke seyamukelwe lapho izobiza khona umsebenzi processUpdate ezokwakha amathebula azoboniswa web.

Izithenjwa

  1. I-Wikipedia JavaScript https://en.wikipedia.org/wiki/JavaScript
  2. JSON https://www.json.org/
  3. I-MoonTools https://mootools.net/

Amadokhumenti / Izinsiza

I-Microsemi AN1256 Web Isicelo sabahleli [pdf] Umhlahlandlela Womsebenzisi
I-AN1256, AN1256 Web Isicelo sabahleli, Web Isicelo sabahleli, Isicelo

Izithenjwa

Shiya amazwana

Ikheli lakho le-imeyili ngeke lishicilelwe. Izinkambu ezidingekayo zimakiwe *