Сохранено: RESTful SNMP Over HTTP. Part 4 / Marco Bresciani · Mar. 17, 17

Sep 27, 2017 10:20

Часть 1, часть 2, часть 3, часть 4.
Part IV
Commercial value allows you to uniquely map the entirety of SNMP operations and MIB data structures to HTTP protocol and URIs.
Let's see how we can possibly use everything we've read until now, with some additional RESTful views of similar behaviors, possible implementations, and further ideas.
Commercial Value

Let's take a look at the value, benefits, and more of commercial value.


Value and Benefits

The invention allows us to uniquely map the whole SNMP operations and MIB data structure to HTTP protocol and URIs, providing a more modern way to present such data structure and introducing the concept of uniform interface, allowing the data system (or the network device) to produce a uniform content regardless the type of the user by focusing only on the actual request format and content.

This solution allows implementing one single unique system that does not need to have custom implementations and interactions based on the user or software type that it is interacting with. The solution proposed, instead, is a uniform and unique interface that focuses its attention on the received URIs only, together with HTTP protocol header details, in order to comply with such requests and to produce one answer that fits all needs (or, more specifically, an answer that fits the specific request by the user).

Instead of producing one SNMP interface, one set of web services with related WSDLs, and one complex web-based (or desktop-based) GUI, the solution allows the product to be released with only the SNMP specification. The rules can translate the MIB into URIs (depicted by this solution) and a general-purpose, even third-party, simple software that is RESTful aware and can send general purpose HTTP request as per user customizations (i.e., one REST client plugin for Mozilla Firefox is about 100kB, while a MIB browser software application is at least one magnitude order bigger).
Likelihood of Use

Regardless the technology through which this solution is implemented, providing this kind of unique interface for all interactions (either human- or software-based) allows network devices internal software to be smaller and simpler, needing to fulfill single specific requests without any need to know the details of the interacting party. It’s then reasonable that other may introduce this idea and solution in other products in order to simplify their implementation, the embedded web-based software and the interactions between the user, and the internal set of data - thus reducing the number of bugs, the need for custom and specific user interfaces with a complex user experience, and so on.
How to Identify

Since the mapping rule is clear and well-defined, it should be very easy to identify an OID from an HTTP(S) request (or response) URI, giving us very easy visibility for the invention. Since the usage mechanisms depend on the mapping and all the other options described, the mapping itself and its rules should also be described in the product documentation for user needs.
How to Design Around

This solution is very broad. It is easy to design extensions, enhancements, and different usages around it since REST and RESTful ROAs are wide and general-purpose concepts that easily scale and extend.

It is easy to understand how, for example, this idea could become a method to manage file systems through an HTTP RESTful interface. Files in a network device, but not necessarily only those, may use this solution and idea. Using the URIs to map file system tree and its directories and files, this idea can work as a RESTful HTTP-based FTP protocol.

Replacing FTP-specific commands with uniform URIs (such as URI_ROOT/usr/lib/cups/gutenprint.5.2) means that the uniform interface may easily interact with those file via HTTP methods.

Specifically, the GET method will retrieve files content when operating on a file, whereas it will retrieve directories listing when operating on a directory (URI_ROOT/usr/lib/cups/ in the example URI above). To retrieve information on files or directories even before GETting them, the HEAD method, as per its definition, is the proper solution.

The PUT method will instead be used to create a file (or a directory), as before, listing the filename in the URI exactly as above but using the PUT method and filling the HTTP entity-body with the file content, or, for example, leaving it empty to create a directory.

Again, to both delete a directory or a file with no differences, it is possible to use the DELETE method of HTTP protocol. At the same time, HTTPS for security and access permissions management allows authentication and authorization procedures.

So, with respect to FTP, there is no need for changing directory to ask for binary or ASCII format or other peculiarities. But the uniform RESTful HTTP interface easily maps a whole file system to URIs also providing operations for working on those files (retrieve from, add, and delete to the file system).

It is easy to write ftp://user@example.org/my/own/file.txt to retrieve a file through FTP from any Internet browser (but it is generally not possible to use sftp:// from the same browser since the protocol is unsupported).

It is also possible reading a directory listing or adding or deleting a file, but these operations generally need specific clients or permissions and there is no one common way to do all operations. Having the HTTP protocol DELETE and PUT methods allows simple usage of any kind of networking API for HTTP or RESTful client to send data to a specific URI. These data will become a file in the file system.

To further merge this idea with the RESTful SNMP mapping described above by simply attaching a mib/ string to the idea above, everything works perfectly with the MIB itself as a whole becoming a resource (/mib) with its transactions (/mib/t or simply /t). Everything else can do the same, so the URI that maps the /files resource may represent resources that are directories and files inside the network device and its file system. This kind of mapping extension may replace FTP (File Transfer Protocol).

Another extension, following the same concept, is the possibility to use the uniform interface and REST guidelines to map network device’s operating system commands generally used through Telnet or SSH. It requires care to carefully design each resource or command with its parameters, keeping the basic concept of the uniform interface usage without breaking the basic rules. Again, it is also possible merging internal commands with the ideas with the URI/commands or /c and so on.

Speaking of actual implementations, it is reasonable (and probably mandatory!) to define and implement an automatic translation process converting actual MIB files to a set of proper configuration files for the software architecture so that URI mapping and resources interactions will be automatically mapped onto the application server depending on the MIB definition, leaving out all manual heavily error-prone conversion steps.

A plausible implementation that would help the ROA architect fulfil MIB specification, resources and users profiles: defining a general purpose framework able to receive the whole MIB (ASN.1) specification files as input, together with the set of user profiles and another set of configuration file (either YAML, XML, …) that maps user profiles permissions on each single resource.

Such a framework would take care of these inputs and should be able to provide a predefined scaffolding environment (a web application) that can reply to HTTP(S) requests according to MIB resources and user profiles and permissions. Since the inputs are static and standard and the behaviors are actually clear and predefined, this implementation should not be theoretically complex, assuming that the developers will define specific file formats for user profiles and resources/user permissions mapping.

There are frameworks already able to create data models, DB updates, GUI web pages and simple controllers starting from few data type definitions (see here for simple examples), so creating such automated environment should be the first step to defining a general implementation for the solution described here.

Smarter and better approaches for requests and responses formats may easily involve ontologies and semantic web, defining the MIB structure, data types, and objects relations through, for example, RDF (Resource Description Framework) or HTML5+RDFa that can be easily transformed via XSL(T) applications for better human or automatic parsing and management. A theoretical, brief, example structure of a URI_ROOT/1/3/6/1/2/1/1/1.en.html request may result in something like:

http://www.w3.org/1999/02/22-rdf-syntax-ns#" lang="en">



sysDescrtitle> <br /><br /> <meta http-equiv="Content-Type" <br /><br /> content="application/xhtml+xml; -8" /> <br /><br /> <meta name="content-language" content="en" /> <br /><br /> head> <br /><br /> <body> <br /><br /> <Description about="URI_ROOT/1/3/6/1/2/1/1/1.xml"> <br /><br /> <label xml:lang="en">sysDescr label> <br /><br /> ... <br /><br /> Description> <br /><br /> body> <br /><br /> html> <br /><br /> Thank you for reading this series. I had the idea for this article a few years back and quickly scratched it onto a piece of paper. Now, I've finally had the time to polish and publish it! I hope you've liked it and will use it - let me know!<br /> </div> <p class="item-tags"> <a href="http://m.livejournal.com/read/user/r3code/tag/snmp">snmp</a>, <a href="http://m.livejournal.com/read/user/r3code/tag/технические заметки">технические заметки</a>, <a href="http://m.livejournal.com/read/user/r3code/tag/веб-разработка">веб-разработка</a>, <a href="http://m.livejournal.com/read/user/r3code/tag/прочитано">прочитано</a>, <a href="http://m.livejournal.com/read/user/r3code/tag/rest">rest</a>, <a href="http://m.livejournal.com/read/user/r3code/tag/работа">работа</a> </p> </div> <div class= " ljsale ljsale--empty " lj0sale="adfox_mobile_content_1" ></div> <div class="b-more-button"> <a class="b-more-button-inner" href="/login?back_uri=http://m.livejournal.com/read/user/r3code/224921/comments/reply#comments">Leave a comment</a></p> </div> </div> </div> <div class="paging"> <table cellspacing="0" cellpadding="0"> <tbody> <tr> <td class="paging-prev"> <a href="http://m.livejournal.com/read/user/r3code/224551">Previous post</a> </td> <td class="paging-next"> <a href="http://m.livejournal.com/read/user/r3code/225259">Next post</a> </td> </tr> </tbody> </table> </div> <div class="to-top"> <a href="#to-top"> Up </a> </div> <div class="footer"> <div class= " ljsale ljsale--empty " lj0sale="adfox_mobile_footer" ></div> <div class="footer-content"> <table class="footer-layout"> <tr> <td> <a class="footer-menu-item footer-menu-index" href="//m.livejournal.com/"> <span class="footer-menu-item-title">Homepage</span> </a> </td> <td> <a class="footer-menu-item footer-menu-read" href="//m.livejournal.com/read"> <span class="footer-menu-item-title">Read journal...</span> </a> </td> <td> <a class="footer-menu-item footer-menu-full" href="https://r3code.livejournal.com/224921.html?fullversion=yes"> <span class="footer-menu-item-title">Full version</span> </a> </td> <td> <a class="footer-menu-item footer-menu-help" href="//m.livejournal.com/help"> <span class="footer-menu-item-title">Help</span> </a> </td> <td> <a class="footer-menu-item footer-menu-eng" href="//www.livejournal.com/tools/setlang.bml?lang=ru&returnto=//m.livejournal.com/read/user/r3code/224921"> <span class="footer-menu-item-title">Русская версия</span> </a> </td> </tr> </table> <link rel="stylesheet" type="text/css" href="https://l-stat.livejournal.net/??lj_base.css,flatbutton.css,mobile/default/s.css,msgsystem.css?v=1732007221" > <!--[if lte IE 8]><link rel="stylesheet" type="text/css" href="https://l-stat.livejournal.net/??ie.css?v=1732007221" ><![endif]--> <link rel="stylesheet" type="text/css" href="https://l-stat.livejournal.net/??proximanova-opentype.css?v=1732007221" > <script type="text/javascript"> Site = window.Site || {}; Site.ml_text = {"/userinfo.bml.editalias.title":"Edit Note","like_reaction.pigeon.caption":"Strange things","common.edit":"Edit","notif_center.birthday":"Today is <strong>[[display_name]]</strong>'s birthday!","common.back":"Back","medius.asapnews.breakingnews":"Срочная новость","components.report_modal.description.alco":"Information containing offers of remote retail sale of alcoholic products whose retail sale is either forbidden or restricted by law.","popup.cookies.submit":"OK","common.save":"Save","adfox.noads":"Tired of ads? Upgrade to account with Professional package of service and never see ads again!","common.delete":"Delete","components.report_modal.description.involving_minors":"Information aimed at involving minors in illegal activity dangerous for their life and(or) health.","popup.cookies.conditionsLink":"conditions","notif_center.trending_now_custom_url":"Trending now: <a href=\"#\">[[subject]]</a>","sharing.popup.title":"Share","common.are_you_sure":"Are you sure?","sharing.service.facebook":"Facebook","components.report_modal.description.suicide":"Calls for suicide or self-harm, demonstration of suicide.","component.messages.close":"Close","dialogs.no":"Cancel","sharing.service.twitter":"X","notif_center.promo_feed":"Check out <a href=\"#\">new interesting posts</a> for your personal feed!","pushWooshPopup21.description":"Enable browser push notifications about new entries","recurrentreminder.password.updated.last":"updated password <strong>more than [[time]] ago</strong>","notif_center.new_friend_achievement":"Your friend <strong>[[actor_displayname]]</strong> got a new achievement! <a href=\"#\">[[achievement_display]]</a>","fcklang.ljlike.button.whatsapp":"WhatsApp","lj.report.popover.message":"Thanks! Moderators will review your complaint","create.subscribe.proceed_btn.caption":"Proceed","modal.info_pro.title_notpaid":"Account without the \"Professional\" package","notif_center.like.comment.user_and_user":"<strong>[[actor0]]</strong> and <strong>[[actor1]]</strong> reacted to your <a href=\"#\">comment</a>","createaccount.subscribe.title":"Recommended authors","modal.info_pro.feature.item.notification":"Additional notification settings","notif_center.new_achievement":"<strong>New achievement!</strong> <a href=\"#\">[[achievement_display]]</a> [[achievement_description]]","recurrentreminder.email.message":"<span>Your account is linked to mail <strong>[[email]]</strong> Is this address still up to date?</span>","sitescheme.switchv3.confirm_dialog.no":"No, stay on the old one","notif_center.like.entry.plur":"<strong>[[actor]]</strong> and [[other_n]] [[?other_n|user|users|users]] reacted to <a href=\"#\">[[post_subject]]</a>","components.report_modal.too_many_complaints":"You've reached report limit per day","notif_center.poll.vote.plur":"<strong>[[actor]]</strong> and [[other_n]] [[?other_n|user|users|users]] voted in poll in your post <a href=\"#\">[[post_subject]]</a>","notif_center.trending_now.no_subj":"<a href=\"#\">New post</a> is trending now","dialogs.yes":"OK","modal.gift_token.buy":"Purchase LJ Tokens to gift","subscribe_button_2022.is_in_friend_list":"In friend list","notif_center.user_post.in_community":"User <strong>[[actor]]</strong> published a new entry <a href=\"#\">[[post_subject]]</a> to community <strong>[[comm_disp_name]]</strong></a>","components.report_modal.description.adult_content":"Explicit graphic content only intended for viewers aged 18 and up.","notif_center.dropdown.hide":"Unsubscribe","sharing.service.email":"E-mail","widget.recomended.partners.title":"Partner news","modal.emailreconfirm.button.cancel_short":"No","notif_center.social_connections.subscription":"<a href=\"#\">[[actor]]</a> subscribed to you","notif_center.repost":"<strong>[[actor]]</strong> reposted your entry <a href=\"#\">[[post_subject]]</a>","modal.emailreconfirm.button.cancel":"No, change","pushWooshPopup21.button.subscribe":"Yes, please","recurrentreminder.password.message":"<span>We noticed that you [[messageData]]. Increase the security of your account by setting a new one</span>","like_reaction.thumbs_up.caption":"Thumbs up","you_are_logged_in_hint.button.cancel":"Cancel","modal.emailreconfirm.button.accept_short":"Yes","/userinfo.bml.addalias.title":"Add Note","modal.info_pro.title":"An account with the active Professional service package","notif_center.comment.to_comment.anon":"Anonymous user replied to your comment for entry <a href='#'>[[post_subject]]</a>","notif_center.repost.plur":"<strong>[[actor]]</strong> and [[other_n]] [[?other_n|user|users|users]] reposted your entry <a href=\"#\">[[post_subject]]</a>","sharing.service.viber":"Viber","notif_center.continuous_series.start":"You wrote a post yesterday. That's a good start! Write a post today ([[date]]) to extend the uninterrupted series.","sharing.service.stumbleupon":"StumbleUpon","notif_center.pingback.entry.community":"<strong>[[actor]]</strong> mentioned your community [[community]] in entry <a href=\"#\">[[post_subject]]</a>","identity.system.message.title":"This account was created using a social network or other third-party service.<br />We recommend you to choose a LiveJournal login and set a password for your account so you don't need to rely on third-party services for login.<br />You can do this by following this <a id=\"identity-message\" target=\"_blank\" href=\"https://www.livejournal.com/identity/convert.bml\">link</a>","recurrentreminder.password.updated.months.ago":"[[amount]] months","like_reaction.detail_popup.button.close":"Close popup","like_reaction.detail_popup.all":"All [[count]]","components.report_modal.link.illegal":"What materials are forbidden in LiveJournal?","notif_center.dropdown.mark":"mark as read","recurrentreminder.password.button.update.password":"Yes, I want to update","modal.badge.verified.button.link":"https://www.livejournal.com/support/faq/442.html?ila_campaign=verified&ila_location=badge_modal","you_are_logged_in_hint.button.reboot":"Refresh","sharing.service.digg":"Digg","recurrentreminder.password.button.refuse":"No, I'm satisfied","like_reaction.ok_hand.caption":"OK","notif_center.read_all.label":"Mark all as read","modal.gift_token.button":"Send LJ Tokens","user_note_modal.title.edit":"Edit user note","notif_center.continuous_series":"You have been writing for [[days]] [[?days|day|days|days]] now. Write a post today ([[date]]) and extend the uninterrupted series!","components.report_modal.description.drugs":"Information on ways of producing, using, and places of purchasing of narcotic substances.","notif_center.post_suggest.recent_journal_upd":"There is a new post in journal which you've visited recently: <a href=\"#\">[[post_subject]]</a>","banner.native_install_prompt.ios.text":"Install LiveJournal app for IOS","notif_center.pingback.entry":"<strong>[[actor]]</strong> mentioned you in the entry <a href=\"#\">[[post_subject]]</a>","modal.gift_token.clue":"The commission will be [[commission]] [[?commission|token|tokens|tokens]], after you will have [[token]] [[?token|token|tokens|tokens]].","notif_center.draft":"You have an unpublished draft, continue working on your new entry","banner.native_install_prompt.android.text":"Install LiveJournal app for Android","modal.info_pro.feature.item.style":"Advanced style settings","banner.hashmob.favorite_cities.link":"https://www.livejournal.com/lyubimyye-goroda/?ila_campaign=lyubimyye_goroda&ila_location=banner","components.report_modal.description.fake":"Information containing calls for mass riots and(or) extremist activity that may endanger lives and(or) wellbeing of people, property, disruption of public order and(or) public safety.","modal.emailreconfirm.title":"Email confirmation","components.report_modal.link.other":"Other","notif_center.post_suggest":"This might be interesting for you: <a href=\"#\">[[post_subject]]</a>","modal.info_pro.feature.item.adv":"No ads","notif_center.like.comment":"<strong>[[actor]]</strong> reacted to your <a href=\"#\">comment</a>","modal.info_pro.feature.more":"And many other extra functions more!","subscribe_button_2022.subscribe_settings":"Manage subscription","common.close":"Close","sharing.service.odnoklassniki":"Odnoklassniki","notif_center.trending_now":"Trending now: <a href=\"#\">[[post_subject]]</a>","widget.alias.aliaschange":"Save note","sherry_promo_button.link":"https://sharrymania.ru/?utm_source=livejournal&utm_medium=special_project&utm_campaign=sharry&utm_content=branding_block","fcklang.ljlike.button.telegram":"Telegram","popup.cookies.description":"By continuing to use this website, you agree to the","components.report_modal.description.extremism":"Calls for unrest and terror, violence against people of a specific ethnicity, religion, or race.","modal.info_pro.feature.item.statistic":"Advanced statistics","createaccount.subscribe.to.feed":"To feed","notif_center.empty.label":"You don't have notifications","components.report_modal.description.insult_govsymbols":"Information that offends human dignity and public morale; explicit disrespect for society, state, official state symbols.","modal.gift_token.button.back":"Cancel","recurrentreminder.password.updated.years.ago":"[[amount]] [[?amount|year|years]]","recurrentreminder.password.title":"Your password might be out of date","components.report_modal.description.child_porn":"Materials with pornographic depiction of minors, or involvement of minors in entertainment activities of pornographic nature.","modal.info_pro.user":"is using an account with the active Professional service package","widget.alias.faq":"read <a [[aopts]]>FAQ</a> for details","like_reaction.sad.caption":"Sad","widget.alias.setalias":"Set note for","modal.emailreconfirm.confirmed":"Ок, thanks for checking the relevance of your data","you_are_logged_in_hint.hint_text_2":"You've signed in using another tab or window. Refresh this page","subscribe_button_2022.mutual_subscribe":"Mutual subscribe","userinfo.bml.hover_menu.headlinks.write_to_community":"Post to community","like_reaction.pencil.caption":"Keep writing!","like_reaction.facepalming.caption":"Facepalm","modal.emailreconfirm.button.accept":"Yes, this is my address","common.something_went_wrong":"Something went wrong","notif_center.repost.user_and_user":"<strong>[[actor0]]</strong> and <strong>[[actor1]]</strong> reposted your entry <a href=\"#\">[[post_subject]]</a>","subscribe_button_2022.you_are_owner":"You are owner","common.remove_from_friends":"Remove from friends","notif_center.pingback.comment":"<strong>[[actor]]</strong> mentioned you in a comment for the entry <a href=\"#\">[[post_subject]]</a>","modal.badge.verified.button.text":"Read more","sharing.service.vkontakte":"VKontakte","modal.gift_token.description":"The size of the commission is [[commission]] tokens; after you'll have [[token]] tokens left","like_reaction.like.caption":"Like","like_reaction.detail_popup.add_btn.is_added":"Is friend","subscribe_button_2022.join_community":"Join community","widget.addalias.display.helper":"Visit the <a [[aopts]]>Manage Notes</a> page to manage all your user notes.","modal.gift_token.button.send":"Send","notif_center.comment.to_comment":"<strong>[[actor]]</strong> replied to your comment for entry <a href='#'>[[post_subject]]</a>","sherry_promo_button.tooltip_text":"Реклама. ООО «Перфлюенс». ИНН 7725380313. erid: 2RanynRMX7n","components.report_modal.already_reported":"You've already reported a breach","subscribe_button_2022.add_user_note":"Add a note","notif_center.like.entry.user_and_user":"<strong>[[actor0]]</strong> and <strong>[[actor1]]</strong> reacted to your entry <a href=\"#\">[[post_subject]]</a>","modal.gift_token.message.warning.insufficient_tokens":"You don't have enough tokens. <a href=\"https://www.livejournal.com/shop/tokens.bml?ila_compaign=gift_tokens&ila_location=gift_modal\">Buy tokens</a>","subscribe_button_2022.you_are_subscribed":"You are subscribed","subscribe_button_2022.edit_user_note":"Edit the note","notif_center.pingback.comment.community":"<strong>[[actor]]</strong> mentioned your community [[community]] in a comment for entry <a href=\"#\">[[post_subject]]</a>","notif_center.poll.vote.user_and_user":"<strong>[[actor0]]</strong> and <strong>[[actor1]]</strong> voted in poll in your post <a href=\"#\">[[post_subject]]</a>","pushWooshPopup21.button.close":"No","subscribe_button_2022.user_note.not_available_for_basic_users":"<a href=\"https://www.livejournal.com/shop/profaccount/?ila_campaign=prof_account&ila_location=add_note\" target=\"_blank\">Upgrade your account</a> to add a note","modal.gift_token.suggestion.popup.text.hint":"The commission will be [[commission]] [[?commission|token|tokens|tokens]], after you will have [[token]] [[?token|token|tokens|tokens]].","mobileAppBanners.betterCommunicateInApp.title":"<p><b>Communicate</b><p><p>is easier in mobile app</p>","sharing.service.moimir":"Moi mir","recurrentreminder.password.button.update.password_short":"Yes","common.unsubscribe":"Unsubscribe","modal.info_pro.feature.item.filter_comment":"Negative comment filter","like_reaction.dislike.caption":"Dislike","notif_center.comment.anon":"Anonymous user commented an entry <a href=\"#\">[[post_subject]]</a>","fcklang.ljlike.button.copyURL":"Copy url","notif_center.comment":"<strong>[[actor]]</strong> commented an entry <a href='#'>[[post_subject]]</a>","subscribe_button_2022.you_are_member":"You are member","notif_center.settings":"Settings","modal.info_pro.feature.item.photo":"More photo storage space","notif_center.post_suggest.no_subj":"We've found a <a href=\"#\">post</a> that might be interesting for you","createaccount.subscribe.description":"You might like the authors","modal.info_pro.button":"Learn more","error_adding_friends.email_not_validated":"Sorry, you aren't allowed to add to friends until your email address has been validated. If you've lost the confirmation email to do this, you can <a href=\"http://www.livejournal.com/register.bml\">have it re-sent.</a>","sharing.service.embed":"Embed","user_note_modal.title.add":"Add a note","components.report_modal.descr":"Pick a category of complaint:","modal.badge.verified.title":"Verified log","notif_center.offcialpost":"Some news for you: <a href=\"#\">[[post_subject]]</a>","banner.hashmob.favorite_cities.button":"participate","common.recommended.description":"We selected these authors and communities for you","create.head":"Creating a New Journal","components.report_modal.description.lgbt_propaganda":"Information aimed at involving minors in illegal activity demonstratingsuicide or justifying non-traditional values.","banner.hashmob.favorite_cities.hash":"hashmob","common.add_to_friends":"Add to friends","modal.info_pro.feature.item.seo":"SEO tools","banner.hashmob.favorite_cities.name":"#favoritecities","modal.info_pro.user_notpaid":"does not yet use the \"Professional\" service package","pushWooshPopup21.title":"You can subscribe to journal","modal.gift_token.text":"How many LJ Tokens do you want to send to user","recurrentreminder.password.button.refuse_short":"No","subscribe_button_2022.leave_community":"Leave community","sitescheme.switchv3.confirm_dialog.yes":"Yes, switch to the new one","user_note_modal.add_note_for":"Only you will see this note on hover the username: ","like_reaction.fire.caption":"Hot","notif_center.this_day":"Remember what you wrote on this day, <a href=\"#\">[[date]]</a> in the past!","components.report_modal.title":"Report","like_reaction.pow_prints.caption":"Paw prints","fcklang.ljlike.button.email":"Email","like_reaction.laughing.caption":"LOL","like_reaction.detail_popup.title":"Reactions","notif_center.dropdown.delete":"Delete","modal.info_pro.feature.text":"The Professional package grants you the following perks:","createaccount.subscribe.to.post":"To first post","notif_center.view_all.label":"View all","like_reaction.nauseated_face.caption":"Nauseated face","notif_center.like.comment.plur":"<strong>[[actor]]</strong> and [[other_n]] [[?other_n|user|users|users]] reacted to your <a href=\"#\">comment</a>","notif_center.title":"Notifications","userinfo.bml.hover_menu.paid":"Account with the <a href=\"https://www.livejournal.com/shop/profaccount/?ila_campaign=prof_sign&ila_location=context_hover\" class=\"contextual-link\" target=\"_blank\">Professional</a> package of service","like_reaction.angry.caption":"Angry","notif_center.like.entry":"<strong>[[actor]]</strong> reacted to your entry <a href=\"#\">[[post_subject]]</a>","widget.alias.aliasdelete":"Delete note","popup.cookies.title":"This website uses cookies.","components.report_modal.description.hate_speech":"Expression of hatred towards against people based on their race, ethnicity, religion, gender, etc. ","notif_center.message":"<strong>[[actor]]</strong> sent you a <a href=\"#\">message</a>:","notif_center.post_suggest.recent_journal_upd.no_subj":"There is a new <a href=\"#\">post</a> in journal which you've visited recently","mobileAppBanners.footer.text":"Get LJ mobile app","adfox.noads.paid":"Log in to stop seeing ads in this journal","components.report_modal.description.spam":"Submit a complaint if someone has posted an ad in an inappropriate location.","notif_center.poll.vote":"<strong>[[actor]]</strong> voted in poll in your post <a href=\"#\">[[post_subject]]</a>","like_reaction.poop.caption":"Poop","common.subscribe":"Subscribe","common.add_to_group":"Add to group","like_reaction.ghost.caption":"Ghost","sherry_promo_button.text.sherry":"КОНКУРС","entry.url_copied.message":"Entry url was copied to clipboard","common.recommended":"Suggested for you","recurrentreminder.password.updated.never":"<strong>never</strong> updated your password","banner_popup.open_app":"Open App","modal.info_pro.feature.item.icon":"Badge by the username","sharing.service.livejournal":"LiveJournal","rambler.partners.title":"Today's News","notif_center.user_post":"User [[actor]] published a new entry <a href=\"#\">[[post_subject]]</a>","sharing.service.tumblr":"Tumblr","modal.gift_token.title":"Gift LJ Tokens","notif_center.time.now":"just now","like_reaction.face_vomiting.caption":"Face vomiting","subscribe_button_2022.join_request_is_pending":"Join request is pending","modal.gift_token.message.success":"LJ Tokens has been sent successfully","components.report_modal.description.gambling":"Information violating the demands of the Federal law on prohibition of gambling and lotteries via the Internet or other means of communication.","pwa.banner.android.text":"Add [[journal]] to Home screen","modal.badge.verified.content":"The verified journal status means that the blog is officially maintained on behalf of a famous person or an organisation.<br /><br /><b>You also could receive a checkmark</b>, if you already have a verified status on another social platforms","modal.gift_token.suggestion.popup.text":"You want to send [[value]] [[?value|token|tokens|tokens]] to the user","notif_center.whosback":"<strong>[[actor]]</strong> posted for the first time in [[delta]]: <a href=\"#\">[[post_subject]]</a>","notif_center.social_connections.friending":"<a href=\"#\">[[actor]]</a> add you as a friend","user_note_modal.edit_note_for":"Only you will see this note on hover the username: ","components.report_modal.submit_report_caption":"Report","like_reaction.detail_popup.add_btn.add":"Add friend"}; Site.page = {"adv_libs":{"google":{"url":"https://l-stat.livejournal.net/js/??ads/googletag.js?v=1732007221"},"ssp":{"conflicts":["adfox"]},"inner":{},"adfox":{"conflicts":["ssp"],"url":null}},"D":{},"is_mobile_version":1}; Site.page.template = {}; Site.page.ljlive = {"is_enabled":false}; Site.page.adv = {"adfox_mobile_listing_1":{"use_lib":"ssp","options":{"puid3":"","puid4":"NO","puid21":"NO","puid10":"bot","puid14":"NO","puid1":"","puid34":"","puid6":"LIVEJOURNAL_JOURNAL","puid15":"","puid16":"","puid18":"","puid7":"","puid9":"r3code","puid62":0,"puid59":"","puid2":"","puid8":""},"method":"sspScroll","options_begun":{"begun-block-id":"579314164","begun-auto-pad":"536695699"}},"adfox_native_1":{"use_lib":"ssp","options":{"puid3":"","puid4":"NO","puid21":"NO","puid10":"bot","puid14":"NO","puid1":"","puid34":"","puid6":"LIVEJOURNAL_JOURNAL","puid15":"","pct":"a","puid16":"","puid18":"","puid7":"","p1":"buuvt","puid62":0,"puid9":"r3code","puid59":"","puid2":"","p2":"fhzr","puid8":""},"method":"sspScroll","options_begun":{"begun-block-id":"432172008","begun-auto-pad":"432171792"}},"adfox_mobile_footer":{"use_lib":"ssp","options":{"puid3":"","puid4":"NO","puid21":"NO","puid10":"bot","puid14":"NO","puid1":"","puid34":"","puid6":"LIVEJOURNAL_JOURNAL","puid15":"","puid16":"","puid18":"","puid7":"","puid9":"r3code","puid62":0,"puid59":"","puid2":"","puid8":""},"method":"ssp","options_begun":{"begun-block-id":"579314162","begun-auto-pad":"536695699"}},"adfox_mobile_listing_2":{"use_lib":"ssp","options":{"puid3":"","puid4":"NO","puid21":"NO","puid10":"bot","puid14":"NO","puid1":"","puid34":"","puid6":"LIVEJOURNAL_JOURNAL","puid15":"","puid16":"","puid18":"","puid7":"","puid9":"r3code","puid62":0,"puid59":"","puid2":"","puid8":""},"method":"sspScroll","options_begun":{"begun-block-id":"579314166","begun-auto-pad":"536695699"}},"billboard_mobile":{"use_lib":"ssp","options":{"puid3":"","puid4":"NO","puid21":"NO","puid10":"bot","puid14":"NO","puid1":"","puid34":"","puid6":"LIVEJOURNAL_JOURNAL","puid15":"","puid16":"","puid18":"","puid7":"","puid9":"r3code","puid62":0,"puid59":"","puid2":"","puid8":""},"method":"ssp","options_begun":{"begun-block-id":"579314160","begun-auto-pad":"536695699"}}}; Site.page.is_adult = 0; Site.timer = +(new Date()); Site.remote = null; Site.journal = {"journal_url":"https://r3code.livejournal.com/","webpush_sub_enabled":false,"is_personal":true,"userhead_url":"https://l-stat.livejournal.net/img/userinfo_v8.svg?v=17080?v=801","is_syndicated":false,"has_photopackage":false,"badge":null,"journal_subtitle":"Задержись в реальности!","is_paid":false,"id":8154338,"webvisor_enabled":false,"is_news":false,"display_username":"r3code","custom_reactions":"","journal_title":"VALID INFO! My crazy life!","is_identity":false,"public_entries":[],"is_medius":false,"is_permanent":false,"is_community":false,"username":"r3code","is_journal_page":false,"is_bad_content":false,"is_suspended":false,"manifest":"{\"related_applications\":[{\"id\":\"com.livejournal.android\",\"platform\":\"play\"}],\"gcm_sender_id\":\"88462774281\",\"short_name\":\"r3code\",\"name\":\"VALID INFO! My crazy life!\",\"icons\":[{\"src\":\"https://l-stat.livejournal.net/img/pwa_logo/lj16.png\",\"type\":\"image/png\",\"sizes\":\"16x16\"},{\"src\":\"https://l-stat.livejournal.net/img/pwa_logo/lj32.png\",\"type\":\"image/png\",\"sizes\":\"32x32\"},{\"src\":\"https://l-stat.livejournal.net/img/pwa_logo/lj48.png\",\"type\":\"image/png\",\"sizes\":\"48x48\"},{\"src\":\"https://l-stat.livejournal.net/img/pwa_logo/lj64.png\",\"type\":\"image/png\",\"sizes\":\"64x64\"},{\"src\":\"https://l-stat.livejournal.net/img/pwa_logo/lj128.png\",\"type\":\"image/png\",\"sizes\":\"128x128\"},{\"src\":\"https://l-stat.livejournal.net/img/pwa_logo/lj144.png\",\"type\":\"image/png\",\"sizes\":\"144x144\"},{\"src\":\"https://l-stat.livejournal.net/img/pwa_logo/lj152.png\",\"type\":\"image/png\",\"sizes\":\"152x152\"},{\"src\":\"https://l-stat.livejournal.net/img/pwa_logo/lj192.png\",\"type\":\"image/png\",\"sizes\":\"192x192\"},{\"src\":\"https://l-stat.livejournal.net/img/pwa_logo/lj256.png\",\"type\":\"image/png\",\"sizes\":\"256x256\"},{\"src\":\"https://l-stat.livejournal.net/img/pwa_logo/lj512.png\",\"type\":\"image/png\",\"sizes\":\"512x512\"}],\"gcm_user_visible_only\":true,\"description\":\"VALID INFO! My crazy life!\",\"display\":\"standalone\",\"start_url\":\"https://r3code.livejournal.com?adaptive\",\"theme_color\":\"#004359\",\"background_color\":\"#004359\",\"prefer_related_applications\":true,\"id\":\"?pwa_id=8154338\"}","profile_url":"https://r3code.livejournal.com/profile/","is_memorial":false}; Site.entry = null; (function(){ var p = {"remote_is_identity":null,"remote_is_maintainer":0,"auth_token":"sessionless:1732107600:/__api/::8126fb2c8c25f91f2c124f89f7c69696fc75f24e","locale":"en_US","remoteUser":null,"remote_is_sup":0,"remoteJournalBase":null,"statprefix":"https://l-stat.livejournal.net","vk_api_id":"2244371","ctx_popup":1,"jsonrpcprefix":"https://l-api.livejournal.com","siteroot":"https://www.livejournal.com","templates_update_time":900,"media_embed_enabled":1,"v":1732007221,"advc_token":"1732110713:21b2b3ace661d3f11c9beee1cf57c61409da85f2","currentEntryRecommendations":0,"currentLanguage":"en_LJ","server_time":1732110113,"logprefix":"","remote_email_reconfirmed":1,"counterprefix":"https://xc3.services.livejournal.com/ljcounter/","currentJournalBase":"https://r3code.livejournal.com","isCustomDomain":false,"isTrustedCustomDomain":false,"remoteLocation":{"city_id":"261415","city_rus_name":"","country_name":"United States","longitude":"-73.2637","region_code":"CT","region_name":"Connecticut","country_short":"US","latitude":"41.1412","city_name":"Fairfield"},"untrusted_ssl":["test.elecsnet.ru","www.arte.tv/en/","yourlisten.com","www.retromap.ru","flymeango.com/","www.mreporter.ru","epronto.ru","globalgallery.ru","verold.com","bbc.co.uk","travelads.ru","rutv.ru","prolivestream.ru","redigo.ru","gettyimages.com","beznomera.ru","videobasher.ru","maxkatz.ru","livesignal.ru","spring.me","www.music1.ru","podfm.ru","wikimapia.org","fashionmedia.tv","www.caissa.com","globalgallery.ru","turngallery.com","www.now.ru","pik-tv.com","mrctv.org","brainmaggot.org","promodj.com","jizo.ru","televidoc.ru","fidel.ru","so-l.ru","weclever.ru","rutv.ru","fotogid.info"],"fileprefix":"https://l-files.livejournal.net","likesprefix":"https://likes.services.livejournal.com/get","ljold":"","writers_block_community":"https://writersblock.livejournal.com/","country":"US","isBackendMobile":false,"inbox_update_poll":0,"flags":{"journal_v3":true,"branding_tretyakovgallery":true,"messages_v6":false,"meta":false,"tosagree_show":true,"friendsfeed_v3_settings":true,"rss_tour":true,"s1comment_preview":true,"medius":false,"fake_setting":true,"air_tour":true,"browse_lang_filter":true,"regionalrating_tour":false,"discovery":true,"add_friend_page_redesign":true,"manage_communities_v5":false,"lj_magazine_post_in_rating":false,"regional_ratings":true,"adaptive_lj_mobile":true,"quick_comment":true,"selfpromo_noc":false,"writers_block":false,"reactions_req":true,"medius_ui":true,"cosmos2021_ljtimes":true,"your_friends_block":true,"friendsfeed_v3":true,"discovery_times_grants":true,"likes":true,"managenotes_v6":true,"meta_geo":true,"loginform_v8":true,"adv_adfox_ssp_mobile":true,"medius_reading_time_cards":true,"top_user_cards":true,"reactions_post":false,"notification_center":false,"your_choice_block":true,"ru_geo":false,"adv_loader":true,"commercial_promo_noc":false,"pocket":true,"lj_magazine_improvements":true,"img_comments":true,"reactions":true,"feed_promo_beta":false,"lena_comment_popup":true,"friendsfeed_tour":true,"lj_repost":false,"recaptcha":true,"image_magick_autobreak":true,"sherrypromo":false,"ljwelcomevideo":false,"video_update_tour":false,"move_billboard_to_scheme":true,"hashmobbanner":false,"medius_schemius":false,"contextualhover_v7":true,"homepage_v3":true,"rambler_adblock":true,"feed_promo":true,"three_posts_tour":true,"superban_step2":true,"photo_v4":true,"hashmobbutton":false,"medius_sharings":true,"canva_geo":true,"post_2017_beta1":true,"auth_from_frame":false,"cosmos2021":true,"likes_display":true,"antiadblock":true,"shopius":false,"repost_facebook":true,"facebook_auth":true,"endless_scroll":true,"rec_sys_medius":true,"notification_center_display":false,"interactive_stripe":false},"rpc":{"domain":{"comment.add":1,"notifications.get_events_counter":1,"repost.get_status":1,"relations.can_add_friends":1,"user.set_prop":1,"relations.can_add_subscribers":1,"notifications.read_all_events":1,"comment.is_log_comment_ips":1,"notifications.get_events":1,"likes.get_likes":1,"repost.delete":1,"journal.emailreconfirm_set":1,"repost.create":1,"comment.set_contentflag":1,"notifications.unsubscribe":1,"memories.set":1,"likes.get_votes":1,"journal.set_prop":1,"memories.remove":1,"relations.addfriend":1,"user.emailreconfirm_set":1,"journal.get_prop":1,"user.get_prop":1,"notifications.delete_event":1,"relations.removefriend":1,"comment.is_need_captcha":1,"repost.get_communities":1,"event.set_contentflag":1,"memories.get":1,"notifications.read_event":1,"entry.set_contentflag":1,"likes.vote":1,"likes.create":1},"ssl":{"journal.login":1,"signup.check_password":1,"signup.convert_identity_lite":1,"support.create_request":1,"signup.create_user":1,"signup.convert_identity":1,"user.login":1},"public":{"medius.top_user_cards_choice":"300","comment.get_thread":"900","latest.get_entries":"180","browse.get_posts":"300","gifts.get_gifts_categories":"60","gifts.get_all_gifts":"60","homepage.get_categories":"60","medius.asap":"300","medius.activities":"300","sitemessage.get_message":"3600","ratings.journals_top":"300","medius.get_public_items":"300","post.get_minipage_widget_counter":"60","browse.get_categories":"300","medius.get_homepage_items":"300","writers_block.get_list":"60","medius.top_user_cards":"300","medius.collection_items":"300","categories.get_public_category_posts":"60","medius.get_public_items_categories":"300","homepage.cool_pool":"300","browse.get_communities":"300","homepage.get_search_hints":"300","homepage.get_rating":"300"}},"should_show_survey":false,"pushwoosh_app_id":"28B00-BD1E0","has_remote":0,"picsUploadDomain":"up.pics.livejournal.com","remoteLocale":"en_US","notifprefix":"https://notif.services.livejournal.com/","remote_is_suspended":0,"imgprefix":"https://l-stat.livejournal.net/img","remote_can_track_threads":null,"currentJournal":"r3code","esn_async":1,"currentEntry":"","pics_production":""}, i; for (i in p) Site[i] = p[i]; })(); Site.current_journal = {"url_profile":"https://r3code.livejournal.com/profile/","userid":8154338,"journaltype":"P","is_comm":"","is_syndicated":"","userpic_h":66,"is_person":1,"badge":null,"is_mediapartner":"","is_paid":0,"display_username":"r3code","url_journal":"https://r3code.livejournal.com","is_identity":"","is_shared":"","display_name":"r3code","username":"r3code","userpic_w":88,"can_receive_vgifts":1,"url_allpics":"https://www.livejournal.com/allpics.bml?user=r3code","url_userpic":"https://l-userpic.livejournal.com/79817310/8154338"}; Site.version = '801'; </script> <script type="text/javascript" src="https://l-stat.livejournal.net/js/??.ljlib.js?v=1732007221"></script> <script type="text/javascript" src="https://l-stat.livejournal.net/js/??old/ljmobile.js?v=1732007221"></script> <!--[if gte IE 9]><script type="text/javascript" src="https://l-stat.livejournal.net/js/??deprecated/ie9pinned.js?v=1732007221"></script><![endif]--> <div class="footer-counters"> <!-- tns-counter.ru --> <script language="JavaScript" type="text/javascript"> (new Image()).src = '//www.tns-counter.ru/V13a***R>' + document.referrer.replace(/\*/g,'%2a') + '*sup_ru/ru/CP1251/tmsec=lj_mob/742397'; </script> <noscript> <img src="//www.tns-counter.ru/V13a****sup_ru/ru/CP1251/tmsec=lj_mob/742397" width="1" height="1" alt="" /> </noscript> <!--/ tns-counter.ru --> <!-- Yandex.Metrika counter --> <script type="text/javascript"> (function (d, w, c) { (w[c] = w[c] || []).push(function() { try { w.yaCounter27737346 = new Ya.Metrika({id:27737346, clickmap:true, trackLinks:true, accurateTrackBounce:true}); } catch(e) { } }); var n = d.getElementsByTagName("script")[0], s = d.createElement("script"), f = function () { n.parentNode.insertBefore(s, n); }; s.type = "text/javascript"; s.async = true; s.src = (d.location.protocol == "https:" ? "https:" : "http:") + "//cdn.jsdelivr.net/npm/yandex-metrica-watch/tag.js"; if (w.opera == "[object Opera]") { d.addEventListener("DOMContentLoaded", f, false); } else { f(); } })(document, window, "yandex_metrika_callbacks"); </script> <noscript><div><img src="//cdn.jsdelivr.net/npm/yandex-metrica-watch/tag.js" style="position:absolute; left:-9999px;" alt="" /></div></noscript> <!-- /Yandex.Metrika counter --> </div> </div> <div class="footer-copy b-strip">© 1999-2024 LiveJournal, Inc.</div> </div> <!--script type="text/ecmascript" src="/es"></script--> </div> </body> </html>