{"id":37019,"date":"2019-10-31T22:15:20","date_gmt":"2019-10-31T19:15:20","guid":{"rendered":"https:\/\/prohoster.info\/blog\/sistema-udalennogo-fajlovogo-dostupa-cage\/"},"modified":"2019-10-31T22:15:20","modified_gmt":"2019-10-31T19:15:20","slug":"sistema-udalennogo-fajlovogo-dostupa-cage","status":"publish","type":"post","link":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/sistema-udalennogo-fajlovogo-dostupa-cage","title":{"rendered":"Cage-systemet til fjernfilsadgang","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h3>Systemets Form\u00e5l<\/h3>\n<p><\/p>\n<p>Underst\u00f8ttelse af fjernadgang til filer p\u00e5 computere i netv\u00e6rket. Systemet \"underst\u00f8tter\" alle prim\u00e6re filoperationer (oprettelse, sletning, l\u00e6sning, skrivning osv.) ved at udveksle transaktioner (meddelelser) via TCP-protokollen.<\/p>\n<p><\/p>\n<h3>Anvendelsesomr\u00e5der<\/h3>\n<p><\/p>\n<p>Systemets funktionalitet er effektiv i f\u00f8lgende tilf\u00e6lde:<\/p>\n<ul>\n<li> i native applikationer til mobile og embedded enheder (smartphones, on-board kontrolsystemer mv.), der kr\u00e6ver hurtig adgang til filer p\u00e5 fjernservere under forhold med mulige midlertidige afbrydelser i forbindelsen (ved at g\u00e5 offline);<\/li>\n<li> i belastede databasesystemer, hvis behandlingen af anmodninger foreg\u00e5r p\u00e5 \u00e9n server, mens data opbevares p\u00e5 en anden;<\/li>\n<li> i distribuerede virksomhedsnetsv\u00e6rk til indsamling og behandling af information, der kr\u00e6ver h\u00f8j dataudvekslingshastighed, sikkerhedskopiering og p\u00e5lidelighed;<\/li>\n<li> i komplekse systemer med mikroservices-arkitektur, hvor forsinkelser i informationsudveksling mellem moduler er kritisk vigtige.<\/li>\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex> <\/p>\n<h3>Struktur<\/h3>\n<p><\/p>\n<p>Cage-systemet (der er en implementering \u2014 beta-version p\u00e5 Python 3.7 p\u00e5 Windows OS) omfatter to hoveddele: <\/p>\n<ol>\n<li> <b>Cageserver<\/b> \u2014 en programfilserver (funktionspakke), der k\u00f8rer p\u00e5 computere i netv\u00e6rket, som har brug for fjernadgang til filer;<\/li>\n<li> klasse <b>Cage<\/b> med et bibliotek af metoder til klientsoftware, der forenkler kodningen af interaktionen med servere.<\/li>\n<\/ol>\n<p><\/p>\n<h3>Brug af systemet p\u00e5 klientsiden<\/h3>\n<p><\/p>\n<p>Metoderne i Cage-klassen erstatter almindelige, \"rutinem\u00e6ssige\" operationer i filsystemet: <i>oprettelse, \u00e5bning, lukning, sletning <\/i>af filer, samt <i>l\u00e6sning\/skrivning af data i bin\u00e6rt format<\/i> (med angivelse af position og st\u00f8rrelse af data). Konceptuelt er disse metoder t\u00e6t p\u00e5 filfunktionerne i C-sproget, hvor \u00e5bning\/lukning af filer foreg\u00e5r \"p\u00e5 kanaler\" for ind- og uddata. <\/p>\n<p><\/p>\n<p>Med andre ord arbejder programm\u00f8ren ikke med metoderne for \"filobjekter\" (klassen <b>_io<\/b> i Python), men med metoderne i Cage-klassen.<\/p>\n<p><\/p>\n<p>Ved oprettelse af en forekomst af objekter Cage etablerer den en indledende forbindelse til serveren (eller flere servere), gennemg\u00e5r godkendelse ved klientens Id og modtager en bekr\u00e6ftelse med nummeret p\u00e5 den tildelte port for at udf\u00f8re alle filoperationer. N\u00e5r Cage-objektet fjernes, giver det serveren kommandoen til at stoppe forbindelsen og lukke filer. Afbrydelsen af forbindelsen kan ogs\u00e5 initieres af serverne selv.<\/p>\n<p><\/p>\n<p>Systemet forbedrer l\u00e6se-\/skrivehastigheden baseret p\u00e5 buffring af ofte anvendte filfragmenter i cache (buffer) i det volatile hukommelse.<br \/>\nKlientsoftwaren kan bruge et vilk\u00e5rligt antal Cage-objekter med forskellige indstillinger (m\u00e6ngde af bufferhukommelse, blokst\u00f8rrelser ved kommunikation med serveren osv.). <\/p>\n<p><\/p>\n<p>Et Cage-objekt kan udveksle data med flere filer p\u00e5 flere servere. Parametrene for forbindelsen (IP-adresse eller DNS-server, hovedport til autorisation, sti og filnavn) angives ved oprettelsen af objektet.<\/p>\n<p><\/p>\n<p>Da hvert Cage-objekt kan arbejde simultant med mange filer, anvendes et f\u00e6lles hukommelsesrum til buffring. Cache-st\u00f8rrelsen \u2013 antallet af sider og deres st\u00f8rrelse \u2013 s\u00e6ttes dynamisk ved oprettelsen af Cage-objektet. For eksempel er en cache p\u00e5 1 GB lig med 1000 sider p\u00e5 1 MB, eller 10.000 sider p\u00e5 100 KB, eller 1 million sider p\u00e5 1 KB. Valget af st\u00f8rrelse og antal sider er en specifik opgave for hver anvendelsessituation.<\/p>\n<p><\/p>\n<p>Det er muligt at bruge flere Cage-objekter samtidigt for at definere forskellige indstillinger for bufferhukommelse afh\u00e6ngigt af adgangsforholdene til oplysningerne i forskellige filer. En simpel buffer-algoritme anvendes grundl\u00e6ggende: n\u00e5r den tildelte m\u00e6ngde hukommelse er udt\u00f8mt, erstatter nye sider gamle if\u00f8lge princippet for udsmidning med minimale adgangsnumre. Buffring er is\u00e6r effektiv i tilf\u00e6lde af uregelm\u00e6ssig (i statistisk forstand) samtidig adgang, f\u00f8rst til forskellige filer og dern\u00e6st til fragmenter af hver fil. <\/p>\n<p><\/p>\n<p>Cage-klassen underst\u00f8tter input\/output ikke kun efter dataadresser (med angivelse af position og l\u00e6ngde af arrayet, \"erstatte\" filsystemoperationer), men ogs\u00e5 p\u00e5 et lavere, \"fysisk\" niveau \u2014 efter side-numre i bufferhukommelsen. <\/p>\n<p><\/p>\n<p>For Cage-objekter underst\u00f8ttes den originale funktion <i>\"hibernation\"<\/i> (\u00abpause\u00bb) \u2013 de kan \u00abminimeres\u00bb (for eksempel ved tab af forbindelse til serverne eller ved stop af applikationen osv.) til en lokal dump-fil p\u00e5 klientsiden og hurtigt genskabes fra denne fil (efter genoptagelse af forbindelsen, ved genstart af applikationen). Dette muligg\u00f8r en betydelig reduktion af trafikken, n\u00e5r klientprogrammet genoptages efter et midlertidigt offline-ophold, da ofte anvendte filfragmenter allerede vil v\u00e6re i cachen.<\/p>\n<p><\/p>\n<p>Cage er omkring 3600 linjer kode.<\/p>\n<p><\/p>\n<h3>Principper for serveropbygning<\/h3>\n<p><\/p>\n<p>Cageserver fil-servere kan startes med et vilk\u00e5rligt antal porte, hvoraf en (\u00abprim\u00e6r\u00bb) kun bruges til autorisering af alle klienter, mens de \u00f8vrige bruges til dataudveksling. For Cage-serverprogrammet kr\u00e6ves kun Python. Samtidig kan computeren med fil-serveren udf\u00f8re andet arbejde. <\/p>\n<p><\/p>\n<p>Serveren startes f\u00f8rst som en samling af to hovedprocesser:<\/p>\n<ol>\n<li><b>\u00abForbindelser\u00bb<\/b> \u2013 processen for at udf\u00f8re forbindelsesetablering med klienterne og afslutte forbindelsen efter serverens initiativ;<\/li>\n<li><b>\u00abOperationer\u00bb<\/b> \u2013 processen til at udf\u00f8re opgaver (operationer) for klienter i forhold til filer samt til at afslutte sessionsforbindelser efter klienternes kommandoer.<\/li>\n<\/ol>\n<p><\/p>\n<p>Begge processer er ikke synkroniserede og organiseret som uendelige cyklusser for modtagelse og afsendelse af meddelelser baseret p\u00e5 multiprocess-queues, proxy-objekter, l\u00e5se og sockets.<br \/>\nProcessen \u00abForbindelser\u00bb tildeler hver klient en port til dataoverf\u00f8rsel. Antallet af porte angives ved opstart af serveren. Forholdet mellem porte og klienter opbevares i delt proxy-hukommelse mellem processerne.<\/p>\n<p><\/p>\n<p>Processen \u00abOperationer\u00bb underst\u00f8tter deling af filressourcer, hvorved flere forskellige klienter kan l\u00e6se data fra en fil f\u00e6lles (<i>kvasi-parallelt<\/i>, da adgangen styres af l\u00e5se) hvis dette blev tilladt ved filens indledende \u00e5bning af den \u00abf\u00f8rste\u00bb klient. \n<\/p>\n<p>Behandling af kommandoer til oprettelse\/sletning\/\u00e5bning\/lukning af filer p\u00e5 <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/da\/server\/dts-dronten\/\"   title=\"serveren\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"2497\">serveren<\/a> foreg\u00e5r i selve \u00abOperationer\u00bb-processen strengt sekventielt ved hj\u00e6lp af serverens OS filsystem.<\/p>\n<p><\/p>\n<p>For overall read\/write speed improvement, these operations are carried out in threads created by the \"Operations\" process. The number of threads typically equals the number of open files. Read\/write tasks from clients are submitted to a common queue, and the first available thread picks a task from its head. Special logic allows for the exclusion of data overwrite operations in the server's RAM.<\/p>\n<p><\/p>\n<p>The \"Operations\" process monitors client activity and stops servicing them either at their commands or upon exceeding the inactivity timeout.<\/p>\n<p><\/p>\n<p>To ensure reliability, Cageserver maintains logs of all transactions. One common log contains copies of messages from clients with tasks to create\/open\/rename\/delete files. For each working file, a separate log is created, which records copies of messages with read and write data tasks in this working file, as well as arrays of written (new) data and arrays of data that have been destroyed during overwrites (writing new data \"over\" old data). <\/p>\n<p><\/p>\n<p>These logs provide the ability for both recovering new changes in backups and for \"rolling back\" from the current content to a desired point in the past. <\/p>\n<p><\/p>\n<p>Cageserver consists of about 3100 lines of code.<\/p>\n<p>\n<img decoding=\"async\" alt=\"Cage-systemet til fjernfilsadgang\" src=\"\/wp-content\/uploads\/2019\/08\/606d593347d73274b0c172dae34da0d7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Launching the file server program Cageserver<\/h3>\n<p><\/p>\n<p>When started, the dialogue must specify:<br \/>\n \u2014 the main port for authorization;<br \/>\n \u2014 the number of ports for transaction exchange with authorized clients (from 1 and more, the pool of numbers starts from the next one after the main port number).<\/p>\n<p><\/p>\n<h3>Using the Cage class<\/h3>\n<p><\/p>\n<p><b>klasse<\/b> cage.<b>Cage<\/b>( <i>cage_name=\u00bb, pagesize=0, numpages=0, maxstrlen=0, server_ip={}, wait=0, awake=False, cache_file=\u00bb<\/i> )<\/p>\n<p><\/p>\n<p>Objects are created from this class that interact with file servers and contain buffer memory.<\/p>\n<p><\/p>\n<p><b><u>Parametre<\/u><\/b><\/p>\n<p><\/p>\n<ul>\n<li> <b>cage_name<\/b>(<i>str<\/i>) \u2014 a conditional name for the object used when identifying clients on the server side <\/li>\n<li> <b>pagesize<\/b>(<i>int<\/i>) \u2014 the size of one page of buffer memory (in bytes)<\/li>\n<li> <b>numpages<\/b>(<i>int<\/i>) \u2014 the number of pages of buffer memory<\/li>\n<li> <b>maxstrlen<\/b>(<i>int<\/i>) \u2014 the maximum length of byte strings in read and write operations<\/li>\n<li> <b>server_ip<\/b>(<i>dict<\/i>) \u2014 a dictionary with the addresses used <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/da\/server\/\"   title=\"servere\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1347\">servere<\/a>, hvor n\u00f8glen er det betingede servernavn (server-id'et indenfor applikationen), og v\u00e6rdien er en streng med adressen: \u201cip address:port\u201d eller \u201cDNS:port\u201d (kortl\u00e6gningen af navne og virkelige adresser er midlertidig, den kan \u00e6ndres)<\/li>\n<li> <b>vent<\/b>(<i>int<\/i>) \u2014 ventetiden for svar fra serveren ved modtagelse af porte (i sek.)<\/li>\n<li> <b>v\u00e5gen<\/b>(<i>boolean<\/i>) \u2014 flag for metoden til at oprette objektet (<i>False<\/i> \u2014 hvis der oprettes et nyt objekt, <i>Sand<\/i> \u2014 hvis objektet oprettes fra et tidligere \u201cindlejret\u201d \u2014 ved brug af operationen \u201chibernation\u201d, som standard er False)<\/li>\n<li> <b>cache_file<\/b>(<i>str<\/i>) \u2014 filnavnet til hibernation<\/li>\n<\/ul>\n<p><\/p>\n<p><b><u>Metoder<\/u><\/b><\/p>\n<p><\/p>\n<p>Cage.<b>file_create<\/b>( <i>server, sti<\/i> ) \u2013 opret en ny fil<\/p>\n<p><\/p>\n<p>Cage.<b>file_rename<\/b>( <i>server, sti, new_name<\/i> ) \u2013 omd\u00f8b filen<\/p>\n<p><\/p>\n<p>Cage.<b>file_remove<\/b>( <i>server, sti<\/i>) \u2013 slet filen<\/p>\n<p><\/p>\n<p>Cage.<b>open<\/b>( <i>server, sti, mod <\/i>) \u2013 \u00e5bn filen<\/p>\n<p><\/p>\n<p>Returnerer <i>fchannel<\/i> kanalnummer. Parameteren <i>mod<\/i> \u2014 er tilstanden for \u00e5bning af filen: \u201cwm\u201d \u2014 monopol (l\u00e6sning\/skrivning), \u201crs\u201d \u2014 kun l\u00e6sning, og delt kun til l\u00e6sning af andre kunder, \u201cws\u201d \u2014 l\u00e6sning\/skrivning, og delt kun til l\u00e6sning af andre kunder. <\/p>\n<p><\/p>\n<p>Cage.<b>close<\/b> (<i>fchannel<\/i>) \u2013 luk filen<\/p>\n<p><\/p>\n<p>Cage.<b>write <\/b>(<i>fchannel, begin, data <\/i>) \u2013 skriv en byte-streng til filen<\/p>\n<p><\/p>\n<p>Cage.<b>write <\/b>(<i>fchannel, begin, len_data<\/i> ) \u2013 l\u00e6s en byte-streng fra filen<\/p>\n<p><\/p>\n<p>Cage.<b>put_pages <\/b>( <i>fchannel<\/i> ) \u2013 \u201cskubber\u201d alle sider fra den angivne kanal, som er blevet modificeret, ud af bufferen til serveren. Bruges i de punkter i algoritmen, hvor det er n\u00f8dvendigt at v\u00e6re sikker p\u00e5, at alle operationer p\u00e5 kanalen er fysisk gemt i filen p\u00e5 serveren.<\/p>\n<p><\/p>\n<p>Cage.<b>push_all<\/b> () \u2013 \u201cskubber\u201d alle sider fra bufferen til serveren for alle kanaler for instansen af klassen Cage, som er blevet modificeret. Bruges, n\u00e5r det er n\u00f8dvendigt at v\u00e6re sikker p\u00e5, at alle operationer p\u00e5 alle kanaler er gemt p\u00e5 serveren.<\/p>\n<p>Kilde: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/463085\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0444\u0430\u0439\u043b\u0430\u043c \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u0445 \u0432 \u0441\u0435\u0442\u0438. \u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u00ab\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u00bb \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 (\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435, \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435, \u0447\u0442\u0435\u043d\u0438\u0435, \u0437\u0430\u043f\u0438\u0441\u044c \u0438 \u0434\u0440.) \u043f\u0443\u0442\u0451\u043c \u043e\u0431\u043c\u0435\u043d\u0430 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f\u043c\u0438 (\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438) \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 \u0422\u0421\u0420. \u041e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0424\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u0435\u043d \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445: \u0432 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445 \u0434\u043b\u044f \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0438 embedded \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 (\u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u044b, \u0431\u043e\u0440\u0442\u043e\u0432\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0442.\u043f.), \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0445 \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":27748,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37019","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0444\u0430\u0439\u043b\u0430\u043c \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u0445 \u0432 \u0441\u0435\u0442\u0438.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/sistema-udalennogo-fajlovogo-dostupa-cage\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 Cage | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0444\u0430\u0439\u043b\u0430\u043c \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u0445 \u0432 \u0441\u0435\u0442\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/sistema-udalennogo-fajlovogo-dostupa-cage\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:15:20+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:15:20+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Fjernadgangssystem til filer Cage | ProHoster","description":"Form\u00e5l med systemet: St\u00f8tte til fjernadgang til filer p\u00e5 computere i netv\u00e6rket.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/sistema-udalennogo-fajlovogo-dostupa-cage","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 Cage | ProHoster","og:description":"\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0444\u0430\u0439\u043b\u0430\u043c \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u0445 \u0432 \u0441\u0435\u0442\u0438.","og:url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/sistema-udalennogo-fajlovogo-dostupa-cage","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:15:20+00:00","article:modified_time":"2019-10-31T19:15:20+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37019","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-02-09 21:52:49","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:34:26","updated":"2026-02-09 21:52:49","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/37019","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=37019"}],"version-history":[{"count":2,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/37019\/revisions"}],"predecessor-version":[{"id":159779,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/37019\/revisions\/159779"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/27748"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=37019"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=37019"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=37019"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}