SESSION/COOKIE/CAPTCHA/3DES/FLOODCONTROL

No, nagyon szépen halad a motor és a login.
A motor 99%a kész van, már csak a menü hiányzik.
A témát nagyon egyszerű csinálni htmlben és a PHP is nagyon szépen játszik vele.

Megcsináltam a SESSION kezelést, persze saját módon :)
Egyetlen sütibe mentek mindent. A sütibe bármilyen adatot elmenthetek, mivel visszafejthetetlen 3DES titkosítással lett ellátva.
Innentől kezdve az authentikáció is leegyszerüsödik, a CAPTCHA kódot is oda menti, így ki is hagyhatom az SQL részét.

Szóval jól haladok… Ez a sütis történet pedig nagyon tetszik, akármilyen adatot elmenthetek benne, anélkül, hogy azt bárki is kiolvasná :)

nexus #2

Nos, az eddigi legjobb PHP motorom elkészült.
Mi az a PHP motor?

Egy alap struktúra amit a programozás során folyamatosan felhasznál az ember ezzel megkönnyítve a kódgenerálást.
Egy olyan oldalnál mint az impulsive, ahol minden létező szar dinamikus, (téma, nyelv, fórum, torrent…stb…) ott bizony oda kell figyelni arra, mennyire akarjuk magunkat megszopatni. A motor fontos, hogy az olyan alapműveleteket amiket nagyon sokszor használunk majd helyettesítse. Például egy tömb átforgatása / átrendezése minimum 50* szerepelne a PHP-kba, ez nem sok kb 8 soros művelet sor, de mostmár 1 sor :) Ezzel leegyszerűsödik a program, átláthatóbbá válik és kevesebb az elgépelési hiba. Arról nem is beszélve, ha a tömb kezelés rossz lenne, nem 50helyen kell átírni hanem csak 1.

Nah erre egy példa, a dizájn ráhúzása a PHP-ra…

Pár változó, tömbbe sűrítve.. nem lényeg csak adat..

$temp["debug"] = var_export($res, true);
$temp["debug"] .= var_export($this, true);
$temp["debug"] .= var_export($url, true);
$temp["debug"] .= var_export($GLOBALS["db_debug"], true);
$temp["debug"] = preg_replace(“/”.$this->cconfig["mysql_passwd"].”/”,”*secret*”,$temp["debug"]);

Téma létrehozása html fájlból, “kernel” mint a kernel mappából, “error” mint az error.html és “fatal_html” csak egy változó amibe mentjük classon belül, így nem kell változókkal szarakodni.

$display->add(“kernel”, “error”, “fatal_html”);

Itt egészítem ki pl: a <{TITLE}> szócskát a html fájlban valami értelmesre..

$display->param(“fatal_html”, “TITLE”, $lang->get(“fatal_html_header”,”kernel”));
$display->param(“fatal_html”, “HEADER-TEXT”, $lang->get(“fatal_html_header”,”kernel”));
$display->param(“fatal_html”, “FOOTER-TEXT”, $lang->get(“fatal_html_footer”,”kernel”,$temp["footer"]));
$display->param(“fatal_html”, “ERROR-TITLE”, $lang->get(“fatal_html_title”,”kernel”,$temp["err-title"]));
$display->param(“fatal_html”, “ERROR-DESC-HTML”, $lang->get(“fatal_html_desc”,”kernel”));
$display->param(“fatal_html”, “ERROR-DESC-PRE”, $temp["debug"]);
$display->param(“fatal_html”, “GOBACK-TEXT”, $lang->get(“fatal_html_goback”,”kernel”));
$display->param(“fatal_html”, “GOBACK-URL”, $url->out($this->config(“main_module”)));

Képernyőre iratás, DIE parancsal.

$display->raw(“fatal_html”);

Holnap jön a login/register/fórum (ha minden jól alakul)

Nexus: Kernel

No csak nem bírtam ki, hogy dizájn elött ne phpzzak kcisit
Nagyjából felépült egy struktúra ami egyszerű és logikus.

Fájlrendszer:

drwxr-xr-x 2 rmweb-datas rmweb-datas 512 Feb 14 14:44 backup << biztonsági mentések (Trash)
drwxr-xr-x  2 rmweb-datas  rmweb-datas   512 Feb 14 14:45 cache << cache rendszer
drwxr-xr-x  4 rmweb-datas  rmweb-datas   512 Feb 14 14:45 data << avatar,torrent,upload
drwxr-xr-x  2 rmweb-datas  rmweb-datas   512 Feb 14 16:40 kernel << classes (core)
drwxr-xr-x  2 rmweb-datas  rmweb-datas   512 Feb 14 15:23 language << nyelvi fájlok
drwxr-xr-x  2 rmweb-datas  rmweb-datas   512 Feb 14 14:44 modules << forum,torrent,portal,stb…
drwxr-xr-x  2 rmweb-datas  rmweb-datas   512 Feb 14 14:45 setup << installer
drwxr-xr-x  2 rmweb-datas  rmweb-datas   512 Feb 14 14:44 themes << témák
drwxr-xr-x  4 rmweb-datas  rmweb-datas   512 Feb 14 14:59 utils << külső cuccok, pl: ajaxos vackok
-rw-r–r– 1 rmweb-datas rmweb-datas 664 Feb 14 19:01 config.inc.php
-rw-r–r– 1 rmweb-datas rmweb-datas 1134 Feb 14 22:40 index.php

config.inc.php:

<?php
/*—>
Engine: nexus
Author: Hlavaji Viktor
Location: Budapest, Hungary
Created with: notepad++
Date: 2010-02-14/14:49
<—*/
?>
<?php
$config = array();
$config["default_lang"] = “hu”;
$config["default_theme"] = “default”;
$config["session_cookie_name"] = “session”;

/* DATABASE SETTINGS */
$config["mysql_host"] = “:/tmp/mysql.sock”; //mySQL Hostname or Unix Socket path
$config["mysql_user"] = “impulsive_dev”; //mySQL Username
$config["mysql_passwd"] = “*****”;  //mySQL Password
$config["mysql_dbase"] = “impulsive_dev”; //mySQL Database
$config["mysql_presistent"] = true; //IF it true php will connect once at the start
/* DATABASE SETTINGS */
?>

mysql.class.php: (20%)


<?php
/*--->
Engine: nexus
Author: Hlavaji Viktor
Location: Budapest, Hungary
Created with: notepad++
Date: 2010-02-14/14:49
<---*/
?>
<?php

$db_socket = NULL;

$db_stat = array();
$db_stat["connected"] = 0;
$db_stat["closed"] = 0;

class database {
var
$socket;
var
$db;
var
$host;
var
$user;
var
$passwd;

/* DATABASE */
function database($db=NULL,$host=NULL,$user=NULL,$passwd=NULL) {
global
$kernel; global $db_stat; global $db_socket;

$this->socket = $db_socket;

if($db) { $this->db = $db; } else { $this->db = $kernel->config(“mysql_dbase”); }
if(
$host) { $this->host = $host; } else { $this->host = $kernel->config(“mysql_host”); }
if(
$user) { $this->user = $user; } else { $this->user = $kernel->config(“mysql_user”); }
if(
$passwd) { $this->passwd = $passwd; } else { $this->passwd = $kernel->config(“mysql_passwd”); }

if(!is_resource($this->socket)) { $db_stat["connected"]++;
$this->socket = mysql_connect($this->host, $this->user, $this->passwd);
if(!
$this->socket) { $kernel->fatal(mysql_error($this->socket)); }
if(!
mysql_select_db($this->db,$this->socket)) { $kernel->fatal(mysql_error($this->socket)); }
$db_socket = $this->db;
}
}
/* DATABASE */

/* CLOSE */
function close() {
global
$kernel;

if(is_resource($this->socket)) { $db_stat["closed"]++;
mysql_close($this->socket);
}
}
/* CLOSE */

/* GET */
function get($data) {
global
$kernel; global $db_stat;

if(!$data || !$data["table"] || !is_array($data) || !is_array($data["where"])) { $kernel->fatal(“Invalid SQL Array in Query”); }

$select = NULL;
$parser = NULL;

/* PARSING SELECT */
if(!$data["select"]) { $data["select"] = “*”; }
else {
$parser = $data["select"];
$parser = explode(“:”,$parser);
$pcount = count($parser);

$i = 0; $data["select"] = NULL;
while(isset(
$parser[$i])) { $i++;

if($i > 1) { $data["select"] .= “,”; }
$data["select"] .= “‘”.addslashes($parser[$i - 1]).“‘”;
}

}
/* PARSING SELECT */

/* PARSING WHERE */
$parser = NULL;
$parser = $data["where"];
$wcount = 0; $data["where"] = NULL;
while(list(
$key,$value) = each($parser)) {

$key_parser = NULL;
$key_parser = explode(“:”,$key);
$pcount = count($key_parser);
if(
$pcount < 2) { $kernel->fatal(“Invalid Where Clause in Query”); }
if(
$pcount > 2 && $wcount) {

if(strtolower($key_parser[0]) != “or” && strtolower($key_parser[0]) != “and”) { $kernel->fatal(“Invalid Where Clause in Query”); }
if(
strtolower($key_parser[0]) == “or”) { $data["where"] .= “ OR”; }
elseif(
strtolower($key_parser[0]) == “and”) { $data["where"] .= “ AND”; }
} else {

$temp = NULL;
$temp = $key_parser;
$key_parser = NULL;
$key_parser[0] = NULL;
$key_parser[1] = $temp[0];
$key_parser[2] = $temp[1];
unset(
$temp);

}

if(!is_numeric($value)) { $value = “‘”.addslashes($value).“‘”; }
if(
$key_parser[2] != “>” && $key_parser[2] != “<” && $key_parser[2] != “=” && $key_parser[2] != “!=”) { $kernel->fatal(“Invalid Where Clause in Query”); }

$data["where"] .= “ ’”.addslashes($key_parser[1]).“‘”;
$data["where"] .= “ ”.$key_parser[2].“”;
$data["where"] .= “ ”.$value;

$wcount++;
}

/* PARSING SELECT */

$squery = “SELECT ”.$data["select"].“ FROM `”.$data["table"].“` WHERE ”.$data["where"];
/*
while(list($key,$value) = each($data["where"])) {

$squery .= $key;

}
*/
$kernel->fatal($squery);

}
/* GET */

}

?>

1. Fázis

Találtam egy dizájnt, ami szerintem tetszetős, igaz, hogy sablon, de valamivel elkell kezdeni a munkát.
Legfőbb kitétel, hogy ténylegesen CSS, XHTML valid legyen, eddig eleget tesz neki.

Találtam egy jó kis JavaScript kódot amivel dinamikus tooltip-et vagy akár HTML menüt lehet faragni ajax segítségével.. BoxOver: http://boxover.swazz.org

Ennek is csak egy problémája volt, hogy ha ha HTML kódokat szúrok bele a nyitott HTML Tag-be akkor máris nem XHTML valid, sőőt igen csak invalid 900 hibával :/, megoldottam, hogy a JScriptbe raktam egy replace() függvényt ami { -> < ilyet csinál, és le cseréltem a HTML kódba, így nem kiabál, viszont működik.

Holnap megcsinálom a menüt, a fórumot és ha jól megy a főoldalt is.
Alig várom, hogy a PHP-hoz jussak, mert a dizájnhoz gyenge vagyok.

Közben kitaláltam neveket…
Szinte minden release-nek van neve, pl: CodeName: LongHorn.
Nohát akkor az első lesz, hogy énis ilyen hülyeséget fogok kitalálni:

Az nPulse engine -től elköszönünk (hoppá ez is egy név volt..) 6.0 -ig jutott el.. grat..
Jön helyette a nexus 1.0 , maga az impulsive pedig sunprise csúfnevet kapja majd.

Azért a V6-ot feltüntetem. Akkor egy kis nosztalgia mi ez a sok V.

Aki már sok weboldalt írt akár egyszerre is, annak valamilyen szinten nyomom kell követnie, hogy melyik hányas verzió szám alatt van.
Ha frissítem az oldalt, akkor máris pörgetek a számlálón…

Pl: 5.1.3 -> Az 5ös a főrendszert jelenti, az 1es pedig csak egy szám végül a 3as ez is egy szám, de ha páros akkor stabil ha páratlan akkor tesztelés alatt van.

1. -> BlackHack fórum (2005) Powered on: Linux/Invision Power Board
2. -> Impulsive (2006) Powered on Win2003/Simple Machines Forum
3. -> Impulsive(2007) Powered on FreeBSD 6.0/SMF+NON-XBT Torrent, Képfeltöltés..
4. -> Impulsive (2008) Powered on FreeBSD 6.2/nPulse 2.0 (Portál,Fórum,Torrent)
5.-> Impulsive(2009) Powered on FreeBSD 7.0/npulse 5.4 (Sok-Sok javítás)
6. -> Impulsive(2010) Powered on FreeBSD 8.0/nPulse 6.0 (cache, load-balancing)

OFF:
Igazából ha most nézem, Impulsive v7 -nek kéne lennie, de most csak a 6os lesz.
Közben felhívtam a kedves szervernet figyelmét arra, hogy nem megy az SMS szolgáltatásuk, (mostanában semmi se megy náluk)
és még azt is nem egyszer felajánlottam, hogy segítek nekik csak menjen minden, hát… leszarnak, sőt kihuzzák a gépeimet :/

Kezd nem tetszeni a dolog.

Helyzet jelentés

No mivel ez komoly munka lesz, ezért egy kis ütemterv magamnak fázisokra bontva:

- dizájn sablonok csinálása a modulokra 1. fázis
- dizájn darabolása html-ként 2. fázis
- dizájn összehozása a PHP-val 3. fázis
- alaprendszer (The Core) 4. fázis
- alap modulok (login,register,settings) 5.fázis
- portál újraírása 6. fázis
- fórum újraírása 7. fázis
- torrent újraírása 8. fázis
- plussz szolgáltatások integrálása 9. fázis
- tesztelés 10. fázis

Továbbá célkitűzés…

Társadalmi Cél: Egy hatalmas webes közösség létrehozása, amely rengeteg lehetőséget biztosít minden látogatónak, többek közt, hogy felfedezze az Internet világát, ezt rendszeres anyagi megkötések nélkül, tehát ingyen (a regisztrációt nem bele számolva)

Programozói Cél: Egy hatalmas, de mégis könnyű (lightweight) portál létrehozása, ami készen kell álljon az IT újításoknak, Web 2.0, Ajax és egyéb dinamikus tartalmaknak. Sok szolgáltatás integrálása (WebMail, Blog, WebTárhely).
A legfőbb célok: gyorsaság, dinamikusság, egyszerűség, átláthatóság, biztonság, SEO.
Gyorsaság: cache rendszerek (SQL,SQLite….), Ajax, Deflating.
Dinamikusság: Installer, Error-Handling, Debug Console, Full SQL based config. Sütikbe tárolni mindent serialize().
Egyszerűség: Lebegő AJAX admin/user menük mindenhol, így nem kell várni míg az oldal töltődik.

Átláthatóság: Bejelentkezés bármelyik oldalról. Jobb süti és session kezelés. Ajax Sugó minden mezőnél.
Biztonság: Komolyabb biztonsági modul, security log ?
SEO: Mindent a google-nek! ID-k lecserélése tagekre a GETnél.

Next Generation

Szokásomhoz híven minden évben akarok valamit újítani, most célzottan az oldal látogatottsága és a funkcióit fogom növelni.
Tehát készül az Impulsive v6.

Egyelőre tervezés stádiumban van, de folyamatosan csinálni fogom. Ami biztos, hogy a dev.impulsive.hu -n lesz az új oldal amíg elnem készül.

- első lépésben a dizájnt kell kijavítani, szebbre és jobbra csinálni. (Ez lesz a legutálatosabb és a legnehezebb része, számomra)
- utána átkell írni a hibás részeket, a torrent ahogy van szar, a fórum is szarakodik cleanupnál.
- cleanup rendszert teljesen elakarom tüntetni
- Portál kibővítése, látvány és tartalom terén
- Fórum kibővítése szavazással
- A motor újraírása
- Grafikonok torrentnél, felhasználónál, ajax stb..

+ szolgáltatások:
Dinamikus tárhely / felhasználó email címmel és aldomain domain delegálással
Választható opció kezdőknek vagy haladóknak

Szervernet: `Server Restart Toolkit` <- gyors reszet mindenkinek

Szerver Bővítés

Megfogadtam, hogy 10évig nem megyek be többet a szerverekért, de nem bírtam megállni, vettem a PC-be 2×1GB HyperX ramot. A másikba pedig lecseréltem az egyik merevlemezt, megelőzve ezzel a bajt. Így most rendkívül erősek és gyorsak lettek a gépek, egyelőre hagyom így nyáron pedig bevan tervezve a 8procis szervergép.

Ha valaki nem tudná mi az a HyperX akkor:
A HyperX a Kingston találmánya, miszerint hűtőbordával látja el a ramokat, hogy jobban vezesse a hőt és jobban is védi a külső behatásoktól, pl talán a gamma sugárzástól. Így nem hibázik annyit a RAM és stabilabb lesz mint a normál, de azért mégsem ECC, de nincs vele gond.

Helyzet jelentés

IMPULSIVE.HU – 2010 az új esztendő

Üdvözlünk XYZ!
Békés, szebb és jobb évet kívánunk 2010-es esztendőre!

Reméljük ebben az évben aktív tagja leszel az impulsive közösségnek.
Történt pár újítás amiről még nem tudsz:
- Tovább fejlesztettük a CHAT oldalunkat.
- Ingyenes( és ténylegesen ingyenes) reklám lehetőséget biztosítunk a bannercsere oldalunkon.
- Perfect World Pulse, Online és szintén ingyenes MMORPG is rengetek újítással várja az új és a régi játékosokat.
- Egyszerű és privát képfeltöltés, ahol egyszerűen bármilyen képet felrakhatsz a szerverre amit később felhasználhatsz bárhova, a ferakott képet mi bizalmasan kezeljük!
- GépHáz Blog, ahol nyomon követheted az impulsive fejlődését és betekinthetsz a kulisszák mögé.
- Továbbá: felújítottuk szerverünk hardverét és szoftverét ezzel felgyorsítva az oldal működését.
Még további újítások várhatóak!

Felhasználóneved: xyz (Ha elfelejtetted volna)
Amennyiben a jelszavadat nem tudod, esetleg a jelszó emlékeztető a segítségedre lesz.
Várunk vissza sok szeretettel: http://impulsive.hu


Ezt a levelet azért kaptad, mert fontos vagy számunkra és szeretnénk ha jól éreznéd magad a közösségi oldalunkon ahova te egyszer már regisztráltál.
Impulsive Staff.

A fenti levelet kapta meg pár ezer felhasználó aki már nagyon rég óta nem látogatta meg az impulsive.hu -t
Szerintem nagyon kulturált és reménykedem benne, hogy kivételesen a pozitív oldalát látják majd neki.
Másrészről beledobom a szervereket a mély vízbe kíváncsi leszek, hogy fogja bírni a 2 szerver, most jelen pillanatban átlagba 80-80 kérést teljesít másodpercenként.

core:

Current Time: Thursday, 28-Jan-2010 20:25:34 CET
Restart Time: Monday, 25-Jan-2010 17:12:00 CET
Parent Server Generation: 0
Server uptime: 3 days 3 hours 13 minutes 34 seconds
89 requests currently being processed, 150 idle workers
K__K_K_____K____KKK__W__K_K___K_K_K___K___K__CK__K__KKK_K____KK_
________K_KK___K__W___KK_K_____KK_C_K__K_KKK__K_K__K_____K_.__K.
_._..K_._..____K_.__KK_KKKK__K___._KK____K__.K_K..___KK_K.K_KK._
___K.K._K__K_K__K__K.KK_W___...._._K._.__KK_._K.K___.__.K._.K...
.K__K___K._...KK_.K.W___........................................
................................................................
................................................................
....................................................

core2:

Current Time: Thursday, 28-Jan-2010 20:23:55 CET
Restart Time: Wednesday, 27-Jan-2010 19:54:51 CET
Parent Server Generation: 0
Server uptime: 1 day 29 minutes 4 seconds
93 requests currently being processed, 133 idle workers
_K_KKK_KKKK_K_K___K_K___WKK___KKKK_KK_K_K__K_____K_KKKK__KK____K
__K____KKK____K_K______K__K__KK___KK____K__KKK__K_K_K___K_KKC_KK
__K_K________KK___KK_____KK_KKKC_K_KK_K_K__C_K.._..._.__..___K_.
_K___WK.K._.__C._.___K__KK__K___K.K__K_K____.__CKK..............
................................................................
................................................................
................................................................
....................................................

Test Project: tracker.mydev.hu

Elindult a teszt projectem a http://tracker.mydev.hu.
Igazából tök egyszerű kis program, beír az ember neki egy weboldal címet és az azt futtató szerberről minden információt leszed amit csak lehet, és az IP alapján behatárolja a google mapon.

Az oldal kíválóan megy, 6óránként újracsekkolja az összes oldalt.

Return top

FONTOS

Jah igen, a gépház blog nem azt jelenti, hogy megint fejlesztések és egyéb finomságok várhatóak az oldallal és a szerverrel kapcsolatban, csak csupán, ide kerülnek az érdekességek azon kívül, hogy egyéb fejlesztések és egyéb finomságok várhatóak az oldallal és a szerverrel kapcsolatban.