A rendszergazda

A populáris definíció szerint a rendszergazda az az ember, aki reggel kihajtja a rendszereket az ólból, eteti-itatja, este pedig visszatereli őket oda. A valóság majdnem ilyen szomorú.

Számos egyébként előnytelen jellemvonás és hosszú évek kitartó munkája szükséges ahhoz, hogy valakiből igazi rendszergazda váljon. Az igazi rendszergazda titkos tudás birtokosa, számos beavatási lépésen keresztül sámáni erők birtokosává válik, a felügyeletére bízott rendszeren élet és halál urának képzeli magát, és sajnos az is. Vannak mellékhatások is, az évek során egyre fokozódó paranoia, skizofrénia, hatalommánia, kommunikáció-képtelenség és tévedhetetlenség-tudat, hogy csak a legsúlyosabbakat említsük.

A rendszerhez fűződő bensőséges viszonya szorosabb, mint bármelyik házasság, a felügyeletére bízott számítógép vagy számítógépek minden porcikáját ismeri. Párkapcsolatuk mácsó típusú, ha a rendszer teljesítménye elmarad az elvárásoktól, verbálisan, féltékenységi rohamaiban tettlegesen is inzultálja kedvesét. Huzamosabb ideig azonban nem bírja ki nélküle, modemet vásárol hogy a leglehetetlenebb időpontokban otthonról is ellenőrizhesse működését. Évekig álmodozik arról, hogyan verné szét az egészet egy tűzoltószekercével.

A rendszergizdának számos ellensége van, de legjobban a felhasználókat utálja. A velük folytatott sziszifuszi küzdelem lassanként kiöl belőle mindent, ami emberi. Az ideális rendszeren nincsenek felhasználók, és a rendszergizda mindent meg is tesz azért, hogy rendszere közelítsen az ideálishoz. Első lépésben munkatáborhoz méltó fegyelmet vezet be a rendszeren. A tábort körletekre osztja, lakóinak életét szigorú szabályokkal keseríti meg, mindenkinek körültekintően, sőt, szadista élvezettel korlátozza jogait. Tudásának morzsáit csak kiválasztottaknak adja tovább, a rendszer foglyai közül a kontraszelekció elve szerint kápókat szemel ki magának, csicskáztatja őket, elvégezteti velük a piszkos munkát, cserében extra jogokat adományoz nekik, és bizonyos mértékben osztozhatnak a mezei felhasználók iránt érzett megvetésében. A kivételezettektől feltétlen lojalitást követel.

A rendszergazda a valósággal nehezebben boldogul, a verbális kommunikáció során gyakran túlcsordul vagy lefagy. Ideges természetű, embertársait gyanakvó tekintettel méregeti, mindenkiben potenciális felhasználót gyanít. Apró szokásaihoz görcsösen ragaszkodik, az utcán hexadecimális kódokat mormol maga elé. A valós világ komplexitása metafizikai szorongással tölti el, összeesküvés-elméleteket gyárt és csereberél a rendszereket összekötő szupersztrádán, kódoltan kommunikál. A tények egyre kevésbé befolyásolják gondolkodását, vélt vagy valós veszély esetén kommandósnak képzeli magát, és senki nem látott még napozó rendszergazdát. Szélsőséges rendpárti vagy radikális anarchista, utóbbi esetben azonban csak a rendszerén uralkodó félfasiszta viszonyokat kompenzálja. A rendszergazdának mindig igaza van, a kritika bármely formáját a személye ellen irányuló burkolt támadásként értelmezi, ilyenkor vérengző mimózává változik. Bizarr szexuális életét a hálózaton terjedő pornográf anyagok gyűjtésével próbálja meg feldobni. Nagyon jól keres, mégis mindig alulfizetve érzi magát, így lelkiismeretfurdalás nélkül maszekolhat munkaidőben is. A grafikus alkalmazásoktól (World Wide Web), hálózati játékoktól, interaktív próbálkozásoktól (Java) epilepsziás rohamot kap, a multinacionális karvalytőke rendszervesztő marketinghúzásainak tartja őket, az ilyesmikkel próbálkozó felhasználót vérbe alázza.

A rendszert számos veszély fenyegeti. A felhasználók apró trükkökkel próbálkoznak a szabályok kijátszására, a rendszergazda ilyenkor példát statuál, nyilvános büntetést eszel ki. A rendszer határait dühös pitbullként védi, tűzfalakat épít, áramot vezet a szögesdrótba, aknazárat telepít. Rémálmaiban a partizánok mégis bejutnak, és megkísérlik elpusztítani a rendszert, vagy egyszerűen csak felírják a falra hogy "Hülye rendszergazda". Rémálmai néha valóra válnak, ilyenkor hiába állítja fel tábori ágyát a gépteremben, napokig nem tud aludni. Óriási stresszigényét kielégítendő titokban partizánkodik, hogy ellenőrizze a szomszédos rendszerek gazdáinak éberségét, és bebizonyítsa, hogy az általuk használt operációs rendszer fabatkát sem ér. Szoftverügyekben vallásháborúkat robbant ki és kultivál, feketelistákat készít azokról a cégekről és kollégákról, akiket elsőként állít majd falhoz a forradalom. Az igazán rátermett rendszergazdák rémtetteit hálózati mítoszok örökítik meg.

Az általam ismert rendszergazdák természetesen tiszteletre méltó kivételek, az én rendszerem a legvidámabb barakk.
Version: ".$v; echo "
  • System: ".$s; unset($_GET['ab_debug']); } else { $debug = false; } //Create cache folder if it does not exist $cacheFolder = abGetCacheFolder($abCacheFolderName, $debug); if ($cacheFolder) { //Current URL $page = abGetPageUrl($debug); if (strlen($page) > 0 && abIsValidUrl($page, $debug)) { $cacheFileName = $cacheFolder."/".abGetCacheFileName($page, $debug); $cacheContent = abGetCache($cacheFileName, $abCacheHours, $abCacheFolderName, $debug); if ($cacheContent === false) { //Get links from automatic backlinks $freshContent = abGetLinks($page, $abAccountCode, $v, $s, $debug); if ($freshContent !== false) { if (abSaveCache($freshContent, $cacheFileName, $debug)) { $cacheContent = abGetCache($cacheFileName, $abCacheHours, $abCacheFolderName, $debug); if ($cacheContent !== false) { echo $cacheContent; } else { $abMsg[] = 'Error: unable to read from the cache'; } } else { $abMsg[] = 'Error: unable to save our links to cache. Please make sure that the folder '.$abCacheFolderName.' located in the folder '.$_SERVER['DOCUMENT_ROOT'].' and is writable'; } } else { $abMsg[] = 'Error: unable to get links from server. Please make sure that your site supports either file_get_contents() or the cURL library.'; } } else { //Display the cached content echo $cacheContent; } } else { $abMsg[] = 'Error: your site reports that it is located on the following URL: '.$page.' - This is not a valid URL and we can not display links on this page. This is probably due to an incorrect setting of the $_SERVER variable.'; } } else { $abMsg[] = 'Error: Unable to create or read from your link cache folder. Please try to create a folder by the name "'.$abCacheFolderName.'" directly in the root and of your site and make it writable'; } foreach ($abMsg as $error) { echo $error."
    "; } /** * Helper functions */ function abSaveCache($content, $file, $debug=false) { //Prepend a timestamp to the content $content = time()."|".$content; echo ($debug) ? "
  • Saving Cache: ".$content : ""; $fh = fopen($file, 'w'); if ($fh !== false) { if (!fwrite($fh, $content)) { echo ($debug) ? "
  • Error Saving Cache!" : ""; return false; } } else { echo ($debug) ? "
  • Error opening cache file for writing!" : ""; return false; } if (!fclose($fh)) { echo ($debug) ? "
  • Error closing file handle!" : ""; return false; } if (!file_exists($file)) { echo ($debug) ? "
  • Error could not create cache file!" : ""; return false; } else { echo ($debug) ? "
  • Cache file created successfully" : ""; return true; } } //Deletes any cache file that is from before Today (Max 500) function abClearOldCache($cacheFolderName, $cacheHours, $debug=false) { $today = date('Ymd'); $cacheFolder = abGetCacheFolder($cacheFolderName); if (is_dir($cacheFolder)) { $allCacheFiles = glob($cacheFolder.'/*.cache'); $todaysCacheFiles = glob($cacheFolder.'/'.$today.'*.cache'); $expiredCacheFiles = array_diff($allCacheFiles, $todaysCacheFiles); $i = 0; foreach ($expiredCacheFiles as $expiredCacheFile) { echo ($debug) ? "
  • Deleting expired cache file: ".$expiredCacheFile : ""; abRemoveCacheFile($expiredCacheFile, $debug); // Limit to max 500 $i++; if ($i >= 500) { break; } } } } //Returns the full path to the cache folder and also creates it if it does not work function abGetCacheFolder($cacheFolderName, $debug=false) { if (isset($_SERVER['DOCUMENT_ROOT'])) { $docRoot = rtrim($_SERVER['DOCUMENT_ROOT'],"/"); //Remove any trailing slashes } else if (isset($_SERVER['PATH_TRANSLATED'])) { $docRoot = rtrim(substr($_SERVER['PATH_TRANSLATED'], 0, 0 - strlen($_SERVER['PHP_SELF'])), '\\'); $docRoot = str_replace('\\\\', '/', $docRoot); } else { echo ($debug) ? "
  • Error: Could not construct cache path" : ""; } $cacheFolder = $docRoot."/".$cacheFolderName; echo ($debug) ? "
  • Cache folder is: ".$cacheFolder : ""; if (!file_exists($cacheFolder)) { echo ($debug) ? "
  • Cache folder does not exist: ".$cacheFolder : ""; if (!@mkdir($cacheFolder,0777)) { echo ($debug) ? "
  • Error - could not create cache folder: ".$cacheFolder : ""; return false; } else { echo ($debug) ? "
  • Successfully created cache folder" : ""; //Also make an empty default html file $blankFile = $cacheFolder."/index.html"; if (!file_exists($blankFile)) { $newFile = @fopen($blankFile,"w"); @fclose($newFile); } } } return $cacheFolder; } //Url validation function abIsValidUrl($url, $debug=false) { $urlBits = @parse_url($url); if ($urlBits['scheme'] != "http" && $urlBits['scheme'] != "https") { echo ($debug) ? "
  • Error! URL does not start with http: ".$url : ""; return false; } else if (strlen($urlBits['host']) < 4 || strpos($urlBits['host'], ".") === false) { echo ($debug) ? "
  • Error! URL is incorrect: ".$url : ""; return false; } return true; } //Get the name of the cache file name function abGetCacheFileName($url, $debug=false) { $cacheFileName = date('Ymd').md5($url).".cache"; echo ($debug) ? "
  • Cache file name for URL: ".$url." is ".$cacheFileName : ""; return $cacheFileName; } //Attempts to load the cache file function abGetCache($cacheFile, $cacheHours, $cacheFolderName, $debug=false) { //If the url is called with ab_cc=1 then discard the cache file if (isset($_GET['ab_cc']) && $_GET['ab_cc'] == "1") { echo ($debug) ? "
  • Clear cache invoked!" : ""; abRemoveCacheFile($cacheFile); unset($_GET['ab_cc']); return false; } if (!file_exists($cacheFile)) { echo ($debug) ? "
  • Error! Cache file does not exist! ".$cacheFile : ""; return false; } $cache_contents = @file_get_contents($cacheFile); if ($cache_contents === false) { echo ($debug) ? "
  • Error: Cache file is completely empty!" : ""; return false; } else { echo ($debug) ? "
  • Cache file contents: ".$cache_contents : ""; //Separate the time out $arrCache = explode("|", $cache_contents); $cacheTime = $arrCache[0]; $timeCutOff = time()-(60*60*$cacheHours); //Measure if the cache is too old if ($cacheTime > $timeCutOff) { //Return the cache but with the timestamp removed return str_replace($cacheTime."|", "", $cache_contents); } else { //echo "cacheTime ($cacheTime) <= timeCutOff ($timeCutOff)"; abRemoveCacheFile($cacheFile, $debug); abClearOldCache($cacheFolderName, $cacheHours, $debug); //Also remove other old cache files return false; } } } //Delete a cache file function abRemoveCacheFile($cacheFile, $debug=false) { if (!@unlink($cacheFile)) { echo ($debug) ? "
  • Error: Could not remove cache file: ".$cacheFile : ""; return false; } else { echo ($debug) ? "
  • Successfully removed the cache file: ".$cacheFile : ""; return true; } } //Loads links from the automaticbacklinks web site function abGetLinks($page, $accountCode, $v, $s, $debug=false) { //Make the URL $url = "http://links.automaticbacklinks.com/links.php"; $url = $url."?a=".$accountCode; $url = $url."&v=".$v; $url = $url."&s=".$s; $url = $url."&page=".urlencode($page); echo ($debug) ? "
  • Making call to AB: ".$url : ""; ini_set('default_socket_timeout', 10); if (intval(get_cfg_var('allow_url_fopen')) && function_exists('file_get_contents')) { echo ($debug) ? "
  • Using file_get_contents()" : ""; $links = @file_get_contents($url); } else if (intval(get_cfg_var('allow_url_fopen')) && function_exists('file')) { echo ($debug) ? "
  • Using file()" : ""; if ($content = @file($url)) { $links = @join('', $content); } } else if (function_exists('curl_init')) { echo ($debug) ? "
  • Using cURL()" : ""; $ch = curl_init ($url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $links = curl_exec($ch); curl_close ($ch); } else { echo ($debug) ? "
  • Error: no method available to fetch links!" : ""; return false; } return $links; } //remove ab_cc etc. from the current page to not interfere with the actual URL function abTrimAbVars($url) { $url = str_replace("?ab_cc=1", "", $url); $url = str_replace("&ab_cc=1", "", $url); $url = str_replace("?ab_debug=2890d2069034d55175b443f468042d64", "", $url); $url = str_replace("&ab_debug=2890d2069034d55175b443f468042d64", "", $url); $url = str_replace("&phpinfo=1", "", $url); return $url; } //Get page function abGetPageUrl($debug=false) { $query = ""; $protocol = (isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) != "off") ? "https://" : "http://"; $host = $_SERVER['HTTP_HOST']; $page = null; if (isset($_SERVER["REDIRECT_URL"]) && !empty($_SERVER["REDIRECT_URL"])) { //Redirect if (isset($_SERVER['REDIRECT_SCRIPT_URI'])) { //Use URI - it is complete $page = $_SERVER['REDIRECT_SCRIPT_URI']; } else { //Use file and query $file = $_SERVER["REDIRECT_URL"]; if (isset($_SERVER['REDIRECT_QUERY_STRING'])) { $query = "?".$_SERVER['REDIRECT_QUERY_STRING']; } } } else { //No redirect if (isset($_SERVER['REQUEST_URI'])) { //Use URI if (substr($_SERVER['REQUEST_URI'],0,4) == "http") { //Request URI has host in it $page = $_SERVER['REQUEST_URI']; } else { //Request uri lacks host $page = $protocol.$host.$_SERVER['REQUEST_URI']; } } else if (isset($_SERVER['SCRIPT_URI'])) { //Use URI - it is complete $page = $_SERVER['SCRIPT_URI']; } else { $file = $_SERVER['SCRIPT_NAME']; if (isset($_SERVER['QUERY_STRING'])) { $query = "?".$_SERVER['QUERY_STRING']; } } } if (empty($page)) { $page = $protocol.$host.$file.$query; } $page = abTrimAbVars($page); echo ($debug) ? "
  • This page is reported as: ".$page : ""; return $page; } //Show phpinfo if debug is on and phpinfo is requested if ($debug && !empty($_GET['phpinfo']) && $_GET['phpinfo']) { ?>
    getLinks(); ?>