Waar bemoeit xs4all zich mee

Door josvane op maandag 05 november 2012 15:54 - Reacties (30)
Categorie: -, Views: 5.791

Deze blog is voornamelijk om mijn frustratie jegens xs4all te uiten. (Misschien niet goed maar wel lekker)

Een relatie van mij, te weten een basissschool krijgt van xs4all een speciaal tarief en hebben daarom een verbinding van xs4all. Vanochtend wordt ik gebeld dat ze geen internet hebben, surfen naar www.xs4all.nl werkte dan weer wel.

We doorlopen een aantal tests en concluderen dat het bij xs4all moet liggen, de school neemt contact op met xs4all en noemt de postcode en huisnummer en vermelden tevens de naam van de school, dit omdat er in hetzelfde gebouw een andere contractant zit welke ook gebruik maakt van xs4all.

De verbinding wordt nagezien en er wordt geconstateerd door de xs4all medewerker dat de verbinding in orde is, en het een lokaal probleem is.

De school meldt zich vervolgens weer bij mij en ik ga onderzoek op locatie doen. Ik koppel het modem los van het LAN en hang er direct mijn laptop aan. Hetzelfde probleem doet zich voor.
Na controle in de Cisco kom ik weer tot de conclusie dat het bij xs4all ligt. DNS werkt namelijk volledig en kan diverse websites gewoon resolven, maar niet bezoeken.

We nemen volgens opnieuw contact met xs4all en vermelden opnieuw postcode, huisnummer en naam. Wederom krijg ik te horen met de verbinding is niks mis. In een ingeving vraag ik om het ip waarna hij kijkt, en rara hij kijkt naar verbinding van de andere contractant. Maar hij blijft wel bij zijn mening dat de verbinding in orde is. Ik wijs hem op mijn resultaten met traceroute en maak hem duidelijk dat het in hun netwerk ergens blijft hangen. Hij besluit mij vervolgens door te verbinden met een 2e lijns medewerker.

Wederom een tijd in de wacht en het hele verhaal voorgelegd. Wat blijkt ze zijn vanwege abuse geblokkeerd. De klant heeft een mailtje gehad op de account mailbox en is per direct geblokkeerd.

Wat een irritante functie is dit zeg, de xs4all diensten laten werken, en internet afkappen. We betalen toch voor een verbinding van een bepaalde bandbreedte en wat daar over heen gaat is toch niet voor hun zorg, laat staan dat het een rede is om een school af te sluiten van internet.

Is er dan niemand die bedenkt dat een school van tegenwoordig met smartboarden e.d. afhankelijk is van internet. Wat zou xs4all hiermee willen bereiken.

Een mail laten sturen naar systeembeheer is niet mogelijk, terwijl die verantwoordelijk is voor de het netwerk. Het blijft een feit dat er ergens een geïnfecteerde pc staat in het netwerk die het veroorzaakt en dat moet opgelost worden, maar de oplossing van xs4all is zo resoluut.

Tot zover mijn frustratie over de veiligheidsdienst van xs4all.

Omschakelen van Windows naar Mac

Door josvane op maandag 01 oktober 2012 13:39 - Reacties (24)
Categorie: -, Views: 4.994

Helaas heeft de backlight van mijn uit 2009 stammende laptop het begeven. Gelukkig heb ik voor deze laptop een dock, dus voor op de zaak is hij nog prima te gebruiken.

Al langere tijd wou ik iets wat snel, licht en niet al te groot is. Ik heb dus ook al langere tijd de macbook air in de gaten gehouden. Uiteindelijk is hier dus ook de keus op gevallen, en tot op heden ben ik dus ook tevreden over mijn keuze.

Maar voordat je onder OSX alles werkend heb valt toch niet helemaal mee. Eerlijkheid biedt mij te zeggen dat ik dit ook niet echt uitgezocht heb van te voren. Office voor Mac een TS client spreken voor zich, maar de overige applicaties heb ik nauwelijks naar gekeken. Keepass is beschikbaar onder mac.

Toch blijken er nog wel wat hobbels te nemen.

Keepass
Het openen van mijn Keepass file lukte niet, na wat onderzoek blijkt dat keepassx niet geschikt is voor kdbx files. Simpel exporteren naar kdb was gelukkig voldoende.

Putty
Hier heb ik nog geen relaxed programma voor gevonden, onder windows gebruik ik putty. Nu zit er in osx terminal van waaruit we kunnen SSH'en, maar ssh icm een ppk key lukt mij nog niet.

[notepad++]
Vervangen voor textwrangler, lijkt mij prima. Ik heb er nog niet mee gewerkt maar we gaan het zien.

Overige apps
Voor de overige apps heb ik vmware fusion geïnstalleerd met daarin windows 7 virtueel, ik heb gewoon een aantal applicaties die het alleen doen onder windows. Dit draait prima.

Tot zover de door mij veel gebruikte programma's nu nog wat over hardware.
Zoals gezegd moest het een licht en niet al te grote laptop worden. Die voorwaarden is wat mij betreft aan voldaan. Het opstarten van de laptop gaat erg snel, wel duurt het lang voordat ik mijn wachtwoord mag intoetsen. Het duurt zeker 5 seconden voordat ik ook echt kan typen. Reeds gemaakte toets aanslagen wordt niet op gereageerd.

Het verlichte toetsenbord is erg prettig, daarnaast voelt het geheel stevig aan. De accuduur is prima, ik kan gewoon 1 dag per lading werken.

De touchpad werkt erg goed, het scrollen is even wennen. Dit omdat het in windows precies andersom gaat.

[b]het grote gemis[b]
De rechte muisknop en de DEL toets.De rechtermuisknop is met behulp van control toch wel, dit is even wennen maar ik wist dat osx maar een knop heeft. Je merkt echter nu pas hoe vaak je deze gebruikt.
De del knop heeft gewoon geen vervanger, ik hoop maar dat hij het met een volledig toetsenbord wel doet.

Voor de rest ga ik wel merken wat ik nog allemaal tegen kom en tot zover mijn relaas over mijn macbook air.

Verder met PHP

Door josvane op dinsdag 07 augustus 2012 00:07 - Reacties (13)
Categorie: -, Views: 4.653

Naar aanleiding van mijn vorige post Seo vriendelijk met PHP heb ik een boek gekocht, en wel deze. link

Tegerlijkertijd heb ik mij ook verdiept in PDO, wat met onder andere met het prepare statement een hoop doet om sql injecties e.d. te voorkomen.

In de vorige post werd ik gewezen op het gebruik van globals (in negatieve zin), een zoektocht op internet met gevolg. De 1e opzet heb ik inmiddels werkend. Voor mij gevoel is de aanroep naar de DB goed. De connectie wordt eenmalig opgebouwd e.d.

De query's kan ik volgens mij beter, alleen vindt ik daar verschillende meningen over en niet alle varianten krijg ik werkend.

Vanuit de testFunction wordt de connectie met de DB gemaakt. Vervolgens moet ik de gehele query ook naar de Database class sturen, vervolgens zou ik eigenlijk al extra waardes mee moeten zenden om een verschil te kunnen maken tussen single row of een array.

Eigenlijk wil ik de query en de prepare statement in de testFunction zelf houden, of is dit de beste manier en moet ik inderdaad dit zo laten. Graag jullie mening daarover of wellicht een oplossing. Als dit met een bepaalde php term op te lossen is hoor ik die graag, dan ik daarop verder zoeken.

Waarom een blog en geen topic
De reden dat ik het in een blog plaats is omdat het een vervolg is op mijn vorige topic, en ik een blog uiteindelijk beter vindt voor kennisdeling



PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<?php
// Example of a Singleton Database class
class Database
{
    // Store the single instance of Database
    private static $m_pInstance;
    private $db_con;

    // Private constructor to limit object instantiation to within the class
    private function __construct() 
    { 
        $DBserver         = 'localhost';
        $DBusername         = 'username';
        $DBpassword        = 'password';
        $DBdatabase        = 'database';
        
        try
        {
            $this->db_con = new PDO('mysql:host='$DBserver . ';dbname=' . $DBdatabase . ';charset=UTF-8'$DBusername$DBpassword);
            $this->db_con->setAttribute(PDO::ATTR_PERSISTENTtrue);
            $this->db_con->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
        }
        catch ( PDOException $e ) 
        {
            print "Error!: " . $e->getMessage () . "\n" ;
            die () ;
        }
    }

    // Getter method for creating/returning the single instance of this class
    public static function getInstance()
    {
        if (!self::$m_pInstance)
        {
            self::$m_pInstance = new Database();
        }

        return self::$m_pInstance;
    }
    
    // Test function to simulate a query
    public function query($query)
    {
        $statement = $this->db_con->prepare($query);
        $statement->execute();
        $row = $statement->fetch(); // Use fetchAll() if you want all results, or just iterate over the statement, since it implements Iterator
        return $row;
    }
    
}

// Wrap the test code in a function 
class user
{
    function testFunction()
    {
        // Get the single instance of the Database class using the gettor 
        // method we created.  Then call it's query method to output some text
        $db = Database::getInstance();
        print '<pre>';
        print_r($db->query("select * from jstl_cms_menu where is_link = '1'"));
        print '</pre>';
    }
}

// Start the test
$user = new user();
$user->testFunction();

// After running this script you will see that the constructor was only called
// once, showing that only one instance of the class was created.

?>

seo vriendelijk met PHP

Door josvane op zondag 03 juni 2012 20:30 - Reacties (16)
Categorie: -, Views: 4.901

SEO vriendelijke URL
Wellicht voor vele bekend, je hebt een hobby en probeert dit steeds groter en vooral beter aan te pakken. Naast dat ik het dus erg leuk vindt om te racefietsen is een van de andere dingen waar ik van kan genieten het bouwen van een CMS.

Doorgaands (eigenlijk altijd) maak ik gebruik van PHP en MySql dit alles wordt af en toe ondersteund door Jquery. Persoonlijk ligt de uitdagingen altijd om een mooi maar vooral functioneel te programmeren. Met mooi bedoel ik dan voornamelijk het design. Naarmate ik meer ben gaan programmeren stijgt ook de drang om de code ook netjes te maken. Dus niet rouwe code achter el elkaar, maar gecommentarieerde code, en uiteraard gebruik makend van OOP.

Het CMS heeft zijn weg inmiddels gevonden naar een aantal klanten/vrienden van mij. Belangrijk om te weten is dat ik het nooit commercieel verkocht heb, en dat is ook helemaal niet mijn intentie.

Voor mijn eigen websites maak ik natuurlijk ook gebruik van mijn eigen CMS. Het huidige CMS is geschreven in PHP en maakt gebruik van PEAR, met daarbij de modules DB en DataObject. Juist van de laatste module heb ik nu spijt. Dit is een drama om op andere systemen werkend te krijgen. Vooral als de desbetreffende hoster DataObject er niet op wil zetten. De template wordt beheerd met Smarty. Dit met als doel om een terugkerend patroon zoals formulieren en tabellen universeel te laden.

Op de websites zelf wordt er gebruik gemaakt van SEO vriendelijke url’s. Dus: www.example.com/over/contact

Dit principe wil ik nu ook gaan gebruiken voor mijn CMS, hier loop ik nu tegen problemen aan. De opbouw van url betekend niet altijd hetzelfde. Waar op de website zelf het patroon altijd hetzelfde is, dus www.example.com/catagorie/subcatagorie is dit in het cms wel anders. Tenminste zoals ik het nu zie.

Een basis frontcontroller heb ik al. Deze code heb ik overigens niet volledig zelf geschreven.

Bron: http://www.pfz.nl/wiki/frontcontroller/

PHP:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<?php
class FrontController 

    function __construct () 
    { 
        global $path_length,$root_path;
        if ($_SERVER['REQUEST_URI'] != '/'
        { 
            /*
            * Maak van de url een array
            */

            $parts = explode ( '/'strtolower ( trim ( $_SERVER['REQUEST_URI'], '/' ) ) ); 
            /*
            * Folder en index.php uit de array halen
            */

            for($i = $path_length$i < count($path); $i++) 
            {
                $v = $path[$i]; 
                $parts[] .= $v
            }
            switch(count($parts))
            {
                case 0:
                    /*
                    * Standaard waardes als er niets ingegeven wordt
                    */

                    $controller = 'dashboard';
                    $action = 'index';
                    $vars = array('home');
                    break;
                
                /*
                * Alles groter als 2
                */

                default:
                    $controller = (current($parts));
                    /*
                    * Alles anders dan custom_handling naar content.php
                    */

                    if (!file_exists ( $root_path . $controller . '.php' ))
                    {
                        $controller = 'dashboard';
                        $action = 'index';
                        /*
                        * Rest van array door de pagina af handelen
                        */

                        $vars = $parts;
                    }
                    else
                    {
                        $controller = ( current ( $parts ) ) ? array_shift ( $parts ) : 'dashboard';
                        $action = (current ( $parts ) ) ? array_shift ( $parts ) : 'index';
                        /*
                        * Rest van array door de pagina af handelen
                        */

                        $vars = $parts;
                    }
                    break;
            }
            
        } 
        else
        {
            $controller = 'dashboard';
            $action = 'index';
            $vars = array('home');
        }
        $this ->dispatch ( $controller$action ,$vars); 

    } 
    
    
    function dispatch ( $controller$action$vars = null
    {
            global $full_path;
            /*
            * Het verwachtte bestand bestaat 
            */
 
            require_once ( $full_path . $controller . '.php' ); 
            
            $controllername = ucfirst ( $controller ); 

            /*
            * Controleren of de controller bestaat
            */

            if ( class_exists ( $controllername ) ) { 
                if ( in_array ( $actionget_class_methods ( $controllername ) ) ) { 
                    /*
                    * Als de functie bestaat dan uitvoeren
                    */

                    $controllerobject = new $controllername(); 
                    
                    $controllerobject->$action($vars); 
                    /*
                    * Na uitvoering afsluiten
                    */

                    return
                } 
            }
        /*
        * Als de functie niet bestaat in éém van custom_handlers uitzondering dan naar 404
        */
 
        $error = 'Verkeerde parameters. Ongeldige controller. Vier nul vier, dus';
        $this->show_404($error);
    } 
    
    function show_404($error = null)
    {
        global $vars;    
        /*
        * Zelf bepalen hoe mij 404 er uit ziet
        */

        $this->template = new TemplateSystem('error.phtml');
        $smarty = $this->template->smarty;
        $smarty->assign('error''Not Found');
        $smarty->assign('data''De pagina kon niet gevonden worden. Klik <a href="http://www.eijsdentelecom.nl">hier</a> om terug te gaan.');
        $this->template->display();
    }
?>


Om duidelijk te blijven onderstaande url als voorbeeld, waarbij je moet bedenken dat mijn CMS een menu boven heeft en een menu aan de linkerzijde. Bovenin het met keuze als bijvoorbeeld websites, webshops en dashboard. Het linkermenu kan bijvoorbeeld bevatten websites beheren, menu beheer, afbeeldingen beheren e.d.
http://www.example.com/level_1/level_2/level_3/level_4/level_5

level_1 = grove keuze (websites,webshops e.d.)
level_2 = fijne keuze (website beheer, content beheer e.d.)

level_3, level_4 en level_5 kan meerdere dingen doen.
Bijvoorbeeld een overzicht opvragen van alle sites gesorteerd op naam
http://www.example.com/websites/beheer-websites/naam/asc

een website bewerken zou er dan zo uit moeten zien.
http://www.example.com/websites/beheer-websites/edit/1

Het idee is dus dat de url binnen het cms ook seo vriendelijk wordt. Het biedt natuurlijk geen voordelen voor bijvoorbeeld google, maar het toont gewoon erg netjes.

De vraag is dus ook zijn er andere mensen die dit probleem opgelost hebben of kunnen we werken aan een breed gedragen systeem die universeel ingezet kan worden, voor allerlei andere systemen.

Het is dus duidelijk niet mijn bedoeling om het CMS gezamenlijk te schrijven, puur en alleen de frontcontroller.

Nou is dit een vraag die ook had kunnen stellen op het forum, maar juist wil ik de discussie op gang brengen om te zien hoe andere dit doen, en wellicht het zover schoppen om het algemeen beschikbaar te stellen van de techniek.

Gehackt, het is ook nooit goed,

Door josvane op woensdag 18 april 2012 14:23 - Reacties (11)
Categorie: -, Views: 5.211

Afgelopen week kwam Argeweb in het nieuws, dat er bij één van hun klanten een inbraak gedetecteerd is, hierop hebbben hun verzocht je wachtwoord te wijzigen.

Als je dan vervolgense de reactie bekijkt, dan zie je diverse reactie.

-Mensen die het vertrouwen kwijt zijn.
-Mensen die vinden dat het goed aangepakt is door hun.
-Mensen die menen dat ze het in de doofpot wilden stoppen.
-enz. Enz

Zelf ben ik ook klant bij hun, maar desondanks denk ik dat ze het goed hebben aangepakt door fox it in te schakelen. Deze partij kijkt geheel neutraal naar het netwerk, en haalt zo de eventuele zwakheden eruit..

Een reactie dat het dus prutsers zijn omdat ze fox it nodig hebben vindt ik dus niet terecht. Alles binnen mijn eigen netwerk bekijk vanuit een security oogpunt, ik denk dus dat ik het goed geregeld heb, maar het kan zomaar anders zijn. Ik zou maar wat graag door foxit een audit laten doen op mijn netwerk.

Desondanks ben ik wel benieuwd hoe collega netwerkbeheerders het aanpakken.

Om maar met mijzelf te beginnen.
Ik heb een cisco router waar middels acls bepaald wordt welke poorten door mogen naar pfsense firewall, daar wordt voor het productie netwerk alleen 443 door gestuurd naar de server. Verder gaat alleen poort 80 door naar een webserver in de dmz.

Binnen mijn netwerk heeft elk apparaat een eigen uniek wachtwoord, en is op mijn swich dhcp snooping actief. Verder wordt er gebruikt gemaakt van vlans, om op deze manier voice,cctv productie en testnetwerk apart te houden.

Hopelijk willen meedere mensen vertellen hoe ze het een en ander aanpakken.