Advertisement
Guest User

[ALS]Tion

a guest
Nov 23rd, 2010
439
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 17.20 KB | None | 0 0
  1. <?php
  2.     @require'settings.php';
  3.     $version = '1.0 Beta';
  4.     session_start();
  5. ?>
  6. <html>
  7.     <head>
  8.         <title><?php echo $projektname; ?></title>
  9.         <link rel="stylesheet" type="text/css" href="style.css">
  10.     </head>
  11.     <body>
  12.         <div id="head">
  13.             <center><a href="index.php?page=home"><img src="header.png" border="0"></a></center>
  14.         </div>
  15.         <div id="navi">
  16.             <?php
  17.                 $path = $userverzeichnis .'/'. $_SESSION['user'] .'.ini';
  18.                 $Player = parse_ini_file($path);
  19.                 if(isset($_SESSION['logedin']) && $_SESSION['logedin'] == 1)
  20.                 {
  21.                     echo'<center>';
  22.                     echo'[ <a href="index.php?page=stats">Meine Stats</a> ] ';
  23.                     echo'[ <a href="index.php?page=pw">Passwort &auml;ndern</a> ] ';
  24.                     echo'[ <a href="index.php?page=server">Serverinfos</a> ] ';
  25.                     echo'[ <a href="index.php?page=logout">Logout</a> ] ';
  26.                     if($Player['AdminLevel'] >= 1)
  27.                     {
  28.                         echo'[ <a href="index.php?page=version">CP Version ( Admins only )</a> ] ';
  29.                     }
  30.                     echo'</center>';
  31.                 }
  32.                 else
  33.                 {
  34.                     echo'<center>';
  35.                     echo'[ <a href="index.php">Login</a> ]';
  36.                     echo'</center>';
  37.                 }
  38.             ?>
  39.         </div>
  40.         <div id="quickview">
  41.             <?php
  42.                 if(isset($_SESSION['logedin']) && $_SESSION['logedin'] == 1)
  43.                 {
  44.                     $path = $userverzeichnis .'/'. $_SESSION['user'] .'.ini';
  45.                     $Player =  @parse_ini_file($path);
  46.                     if($Player['DonateRank'] != 0) { $Account = 'Premium'; }    else { $Account = 'Normal'; }
  47.                     if($Player['Sex'] == 1) { $Geschlecht = 'M&auml;nnlich'; } else if($Player['Sex'] == 2) { $Geschlecht = 'Weiblich'; } else { if($locker == 1 ) { $Geschlecht = 'Das hast du etwa ?'; } else { $Geschlecht = 'Nicht definiert'; } }
  48.                     if($Player['Adjustable'] == 1) { $Status = 'Offline'; } else { $Status = 'Online'; }
  49.                     echo'<i>Eingeloggt als:</i> '. $_SESSION['user'];
  50.                     echo' Status:<i>'. $Status .'</i>';
  51.                     echo' Level:<i>'. $Player['Level'].'</i>';
  52.                     echo' Account:<i>'. $Account .'</i>';
  53.                     echo' Alter:<i> '. $Player['Age'].'</i>';
  54.                     echo' Geschlecht: <i>'. $Geschlecht.'</i>';
  55.                 }
  56.                 else
  57.                 {
  58.                     echo'<i>Status:</i> Nicht eingeloggt';
  59.                 }
  60.             ?>
  61.         </div>
  62.         <div id="content">
  63.             <?php
  64.                 if(!isset($_SESSION['logedin']) && !isset($_POST['loginuser']))
  65.                 {
  66.                     ueberschrift('Bitte loggen Sie sich ein:');
  67.                     echo'<center>'."\n";
  68.                     createform('index.php');
  69.                     createtable();
  70.                     inserttable(2, 'Benutzername:', '<input type="input" name="loginuser">');
  71.                     inserttable(2, 'Passwort:', '<input type="password" name="loginpass">');
  72.                     inserttable(2, '<input type="submit" value="Login">', '<input type="reset" value="Reset">');
  73.                     destroytable();
  74.                     destroyform();
  75.                     echo'</center>'."\n";
  76.                 }
  77.                 else if(!isset($_SESSION['logedin']) && isset($_POST['loginuser']))
  78.                 {
  79.                     $tmpuser = $_POST['loginuser'];
  80.                     $tmppass = $_POST['loginpass'];
  81.                     $path = $userverzeichnis .'/'. $tmpuser .'.ini';
  82.                     $tmpPlayer = parse_ini_file($path);
  83.                     if($pwtyp == 0)
  84.                     {
  85.                         $tmppass = cryptpw($tmppass);
  86.                     }
  87.                     else if($pwtyp == 1)
  88.                     {
  89.                         $tmppass = md5($tmppass);
  90.                     }
  91.                     if($tmppass == $tmpPlayer['Key'])
  92.                     {
  93.                         ueberschrift('Wilkommen <i>'. $tmpuser .'</i>');
  94.                         $_SESSION['logedin'] = 1;
  95.                         $_SESSION['user'] = $tmpuser;
  96.                         echo '<meta http-equiv="refresh" content="3; URL=index.php?page=stats">';
  97.  
  98.  
  99.                     }
  100.                     else
  101.                     {
  102.                         ueberschrift('Ein Fehler trat auf');
  103.                         echo'Sie haben einen ung&uuml;litigen Benutzernamen / ein ung&uuml;ltiges Passwort eingegeben'."\n";
  104.                     }
  105.                 }
  106.                 else if(isset($_SESSION['logedin']) && $_SESSION['logedin'] == 1)
  107.                 {
  108.                     $path = $userverzeichnis .'/'. $_SESSION['user'] .'.ini';
  109.                     $Player = parse_ini_file($path);
  110.                     $page = $_GET['page'];
  111.                     if(!isset($page))
  112.                     {
  113.                         if(isset($_SESSION['form']))
  114.                         {
  115.                             $form = $_SESSION['form'];
  116.                             if($form == 'newpw')
  117.                             {
  118.                                 $oldpw = $_POST['oldpw'];
  119.                                 $newpw = $_POST['newpw'];
  120.                                 $newpw2 = $_POST['rechange'];
  121.                                 if($pwtyp == 0)
  122.                                 {
  123.                                     $oldpw = cryptpw($oldpw);
  124.                                 }
  125.                                 else if($pwtyp == 1)
  126.                                 {
  127.                                     $oldpw = md5($oldpw);
  128.                                 }
  129.                                 if($oldpw == $Player['Key'])
  130.                                 {
  131.                                     if($newpw == $newpw2)
  132.                                     {
  133.                                         if($pwtyp == 0)
  134.                                         {
  135.                                             $pwset = cryptpw($newpw);
  136.                                         }
  137.                                         else if($pwtyp == 1)
  138.                                         {
  139.                                             $pwset = md5($newpw);
  140.                                         }
  141.                                         $Player['Key'] = $pwset;
  142.                                         $content = '';
  143.                                         foreach ($Player as $key => $data)
  144.                                         {
  145.                                             $content .= "$key=$data\n";
  146.                                         }
  147.                                         if (!$file = @fopen($userverzeichnis .'/'. $_SESSION['user'] .'.ini', 'w'))
  148.                                         {
  149.                                             echo 'Ups - Der admin hat da wohl was falsch gemacht...<br />';
  150.                                             echo '<meta http-equiv="refresh" content="3; URL=index.php?page=stats">';
  151.  
  152.  
  153.                                         }
  154.                                         else
  155.                                         {
  156.                                             if (!fwrite($file, $content))
  157.                                             {
  158.                                                 echo 'Deine Benutzerdateien konnten nicht ge&ouml;ffnet werden';
  159.                                             }
  160.                                             else
  161.                                             {
  162.                                                 echo 'Du hast dein Passwort ge&auml;ndert<br />';
  163.                                                 echo 'Bitte logge dich gleich erneut ein ...<br />';
  164.                                             echo '<meta http-equiv="refresh" content="3; URL=index.php">';
  165.  
  166.  
  167.                                                 echo'';
  168.                                                 session_unset();
  169.                                             }
  170.                                         }
  171.                                         fclose($file);
  172.                                     }
  173.                                     else
  174.                                     {
  175.                                         ueberschrift('Hinweis');
  176.                                         echo'Die neuen Passw&ouml;rter stimmen niht &uuml;berein';
  177.                                         echo '<meta http-equiv="refresh" content="3; URL=index.php?page=pw">';
  178.  
  179.  
  180.                                     }
  181.                                 }
  182.                                 else
  183.                                 {
  184.                                     ueberschrift('Hinweis');
  185.                                     echo'Das alte Passwort ist falsch';
  186.                                     echo '<meta http-equiv="refresh" content="3; URL=index.php?page=pw">';
  187.  
  188.  
  189.                                 }
  190.                             } // ende newpw
  191.                         }// ende Formulare
  192.                         else
  193.                         {  
  194.                             echo '<meta http-equiv="refresh" content="0; URL=index.php?page=stats">';
  195.  
  196.  
  197.                         }
  198.                     }
  199.                     else if($page == 'home')
  200.                     {
  201.                         ueberschrift('Wilkommen im ControlPanel');
  202.                         echo'Bitte w&auml;hle in der Navigation die gew&uuml;nschte Aktion aus';
  203.                     }
  204.                     else if($page == 'stats')
  205.                     {
  206.                         if($Player['DonateRank'] != 0) { $Account = 'Premium'; } else { $Account = 'Normal'; }
  207.                         if($Player['Sex'] == 1) { $Geschlecht = 'M&auml;nnlich'; } else if($Player['Sex'] == 2) { $Geschlecht = 'Weiblich'; } else { if($locker == 1 ) { $Geschlecht = 'Ist das Wetter nicht sch&ouml;n ?'; } else { $Herkunft = 'Nicht definiert'; } }
  208.                         if($Player['Adjustable'] == 1) { $Status = 'Offline'; } else { $Status = 'Online'; }
  209.                         if($Player['Origin'] == 1) { $Herkunft = 'USA'; } else if($Player['Origin'] == 2) { $Herkunft = 'Europa'; } else if($Player['Origin'] == 3) { $Herkunft = 'Asien'; } else { if($locker == 1 ) { $Herkunft = 'Schlaraffenland neben dem Puff'; } else { $Herkunft = 'Nicht definiert'; }; }
  210.                         if($Player['CarLic'] == 1) { $Fuehrer = 'Bestanden'; } else { $Fuehrer = 'nicht abgelegt'; }
  211.                         if($Player['FlyLic'] == 1) { $Flug = 'Bestanden'; } else { $Flug = 'nicht abgelegt'; }
  212.                         if($Player['BoatLic'] == 1) { $Boot = 'Bestanden'; } else { $Boot = 'nicht abgelegt'; }
  213.                         if($Player['FishLic'] == 1) { $Fisch = 'Bestanden'; } else { $Fisch = 'nicht abgelegt'; }
  214.                         if($Player['GunLic'] == 1) { $Waffe = 'Bestanden'; } else { $Waffe = 'nicht abgelegt'; }
  215.                         $moneyges = $Player['Bank'] + $Player['Money'];
  216.                         ueberschrift('Deine Stats');
  217.                         createtable();
  218.                         inserttable(2, 'Benutzername:', $_SESSION['user']);
  219.                         inserttable(1, 'Status:', $Status);
  220.                         inserttable(2, '<hr />', '<b>Pers&ouml;hnliches</b>');
  221.                         inserttable(1, 'Alter:', $Player['Age'] .' Jahre');
  222.                         inserttable(2, 'Geschlecht:', $Geschlecht);
  223.                         inserttable(1, 'Herkunft:', $Herkunft);
  224.                         inserttable(2, '<hr />', '<b>Serverspezifisch</b>');
  225.                         inserttable(1, 'Level:', $Player['Level']);
  226.                         inserttable(2, 'Respekt:', $Player['Respect']);
  227.                         inserttable(1, 'Kopfgeld', '$'. $Player['HeadValue']);
  228.                         inserttable(2, '<hr />', '<b>Geld ( in USD )</b>');
  229.                         inserttable(1, 'Bargeld:', $Player['Money']);
  230.                         inserttable(2, 'Bank:', $Player['Bank']);
  231.                         inserttable(1, 'Gesammt:', $moneyges);
  232.                         inserttable(2, '<hr />', '<b>Skillungen</b>');
  233.                         inserttable(1, 'Detektiv:', $Player['DetSkill']);
  234.                         inserttable(2, 'Nuttenskill:', $Player['SexSkill']);
  235.                         inserttable(1, 'Boxerskill:', $Player['BoxSkill']);
  236.                         inserttable(2, 'Anwaltsskill:', $Player['LawSkill']);
  237.                         inserttable(1, 'Mechanikerskill:', $Player['MechSkill']);
  238.                         inserttable(2, 'Autodiebskill:', $Player['JackSkill']);
  239.                         inserttable(1, 'Newsreporterskill:', $Player['NewsSkill']);
  240.                         inserttable(2, 'Kochskill:', $Player['CookSkill']);
  241.                         inserttable(1, 'Angelskill:', $Player['FishSkill']);
  242.                         inserttable(2, '<hr />', '<b>Einzelnde Lizensen</b>');
  243.                         inserttable(1, 'F&uuml;hrerschein:', $Fuehrer);
  244.                         inserttable(2, 'Flugschein:', $Flug);
  245.                         inserttable(1, 'Bootschein:', $Boot);
  246.                         inserttable(2, 'Waffenschein:', $Waffe);
  247.                         inserttable(1, 'Angelschein:', $Fisch);
  248.                         destroytable();
  249.                     }
  250.                     else if($page == 'pw')
  251.                     {
  252.                         ueberschrift('Passwort &auml;ndern');
  253.                         if($Player['Adjustable'] != 0)
  254.                         {
  255.                             createform('index.php');
  256.                             $_SESSION['form'] = 'newpw';
  257.                             createtable();
  258.                             inserttable(2, 'Altes Passwort:', '<input type="password" name="oldpw">');
  259.                             inserttable(2, 'Neues Passwort:', '<input type="password" name="newpw">');
  260.                             inserttable(2, 'Wiederholen:', '<input type="password" name="rechange">');
  261.                             inserttable(2, '<input type="submit" value="&Auml;ndern">', '<input type="reset" value="Reset">');
  262.                             destroytable();
  263.                             destroyform();
  264.                         }
  265.                         else
  266.                         {
  267.                             echo'Sorry, f&uuml;r dieses Tool musst du offline sein ...'."\n";
  268.                         }
  269.                     }
  270.                     else if($page == 'server')
  271.                     {
  272.                         ueberschrift('Serverinfos');
  273.                         createtable();
  274.                         inserttable(2, 'IP:', $host .':'. $port);
  275.                         destroytable();
  276.                         echo'<hr />';
  277.                         require 'SampQueryAPI.php';
  278.                         $query = new SampQueryAPI($ost,$port);
  279.                         if($query->IsOnline())
  280.                         {
  281.                             $sInfo = $query->getInfo();
  282.                             $dinfo = $query->getRules();
  283.                             $Target = $query->getDetailedPlayers();
  284.                             createtable();
  285.                             inserttable(1, 'Hostname:', $sInfo['hostname']);
  286.                             inserttable(2, 'Gamemode:', $sInfo['gamemode']);
  287.                             inserttable(1, 'Spieler online:', $sInfo['players'] .' / '. $sInfo['maxplayers']);
  288.                             destroytable();
  289.                             echo'<hr />';
  290.                             if(@is_array($Target))
  291.                             {
  292.                                 $start = 1; // Um verschiedene Farben in der Spielerliste zu verwenden ^^
  293.                                 createtable();
  294.                                 inserttable(1, 'Nickname:', 'Level:');
  295.                                 foreach($Target as $players)
  296.                                 {
  297.                                     if($start == 1)
  298.                                     {
  299.                                         inserttable(1, $players['nick'], $players['score']);
  300.                                         $start = 2;
  301.                                     }
  302.                                     else
  303.                                     {
  304.                                         inserttable(2, $players['nick'], $players['score']);
  305.                                         $start = 1;
  306.                                     }
  307.                                 }
  308.                                 destroytable();
  309.                             }
  310.                             else
  311.                             {
  312.                                 createtable();
  313.                                 inserttable(1, 'Nickname:', 'Level:');
  314.                                 inserttable(2, '<i>Keiner</i>', '<i>online</i>');
  315.                                 destroytable();
  316.                             }
  317.                         }
  318.                         else
  319.                         {
  320.                             if($sendofflinemsg != 0)
  321.                             {
  322.                                 $string = 'Kann den Server nicht erreichen<br />Bitte pr&uuml;fe, ob dein Webspace-Anbieter fsockopen() akzeptiert<br />Oder ob dein Server offline ist<br />';
  323.                                 senderrormail($string);
  324.                             }
  325.                             createtable();
  326.                             inserttable(1, 'Hostname:', '<i>Nicht erreichbar</i>');
  327.                             inserttable(2, 'Gamemode:', '<i>Nicht erreichbar</i>');
  328.                             inserttable(1, 'Spieler online:', '<i>Nicht erreichbar</i>');
  329.                             destroytable();
  330.                             echo'<hr />';
  331.                             createtable();
  332.                             inserttable(1, 'Nickname:', 'Level:');
  333.                             inserttable(2, '<i>Keiner</i>', '<i>online</i>');
  334.                             destroytable();
  335.                         }
  336.                     }
  337.                     else if($page == 'version')
  338.                     {
  339.                         if($Player['AdminLevel'] >= 1)
  340.                         {
  341.                             $updatehost = 'http://cpupdate.als-samp.de/';
  342.                             $berstart = '<meta>';
  343.                             $berend = '</meta>';
  344.                             $url = $updatehost .'/header.txt';
  345.                             $fd = fopen("$url", "r");
  346.                             $file = fread($fd, 200000);
  347.                             $grabData = preg_match("'$berstart(.*)$berend' si", $file, $data);
  348.                             $data = $data[1];
  349.                             echo $data;
  350.                             ueberschrift('Aktuelle Version');
  351.                             echo'<i>Aktuelle Version: </i> '. $version .'<hr />';
  352.                             echo'<i>Neueste Version: </i>';
  353.                             $url = $updatehost .'/newest.txt';
  354.                             $fd = fopen("$url", "r");
  355.                             $file = fread($fd, 200000);
  356.                             $grabData = preg_match("'$berstart(.*)$berend' si", $file, $data);
  357.                             $data = $data[1];
  358.                             echo $data;
  359.                             echo'<hr />';
  360.                             echo'<i>Aktuelle Bugs: </i><br />';
  361.                             $url = $updatehost .'/bugs.txt';
  362.                             $fd = fopen("$url", "r");
  363.                             $file = fread($fd, 200000);
  364.                             $grabData = preg_match("'$berstart(.*)$berend' si", $file, $data);
  365.                             $data = $data[1];
  366.                             echo $data;
  367.                             echo'<hr />';
  368.                             echo'<i>Aktuelle Sicherheitsl&ouml;cher: </i><br />';
  369.                             $url = $updatehost .'/safety.txt';
  370.                             $fd = fopen("$url", "r");
  371.                             $file = fread($fd, 200000);
  372.                             $grabData = preg_match("'$berstart(.*)$berend' si", $file, $data);
  373.                             $data = $data[1];
  374.                             echo $data;
  375.                             echo'<hr />';
  376.                             echo'<i>Kompatible Godfather: </i><br />';
  377.                             $url = $updatehost .'/newest.txt';
  378.                             $fd = fopen("$url", "r");
  379.                             $file = fread($fd, 200000);
  380.                             $grabData = preg_match("'$berstart(.*)$berend' si", $file, $data);
  381.                             $data = $data[1];
  382.                             echo $data;
  383.                             echo'Wenn dein GF funktioniert, so teile ihn hier bitte mit';
  384.                             echo'<hr />';
  385.                             echo'<i>Notiz by Tion: </i><br />';
  386.                             @include($updatehost .'/godfathers.txt');
  387.                         }
  388.                         else
  389.                         {
  390.                             ueberschrift('Ung&uuml;ltige Seite');
  391.                             echo'Stelle bitte sicher dass der Link stimmt oder du die Rechte f&uuml;r diese Seite hast';
  392.                         }
  393.                     }
  394.                     else if($page == 'credits')
  395.                     {
  396.                         ueberschrift('Mitwirkung Godfather ControlPanel');
  397.                         createtable();
  398.                         inserttable(1, '<hr />', 'Aufbau / Scripts');
  399.                         inserttable(2, 'Programierer CP:', '[ALS]Tion *');
  400.                         inserttable(1, 'Serverview:', 'Westies SA:MP Server API');
  401.                         inserttable(2, 'Design:', '[ALS]Tion *');
  402.                         inserttable(1, 'Godfather verschl&uuml;sslung:', 'Wei&szlig; ich nicht mehr');
  403.                         inserttable(2, 'Als besispiel-GF diente:', 'Originales Englisches Godfather');
  404.                         inserttable(1, '<hr />', 'Gamemodes');
  405.                         inserttable(2, 'Kompatible GMs:', 'z.T. Godfather edits');
  406.                         inserttable(1, '<hr />', 'Ideen');
  407.                         inserttable(2, 'ControlPanel:', '[ALS]Tion *');
  408.                         inserttable(1, 'Serverview:', '[ALS]ClRuler *');
  409.                         inserttable(2, 'Funktionen:', '[ALS]Tion *');
  410.                         destroytable();
  411.                         echo'Mit hilfe der oben genannten Menschen kann der Serverbetreiber nun auch seine Internetpresentation erweitern ^^';
  412.                         echo'<small>* = Admins des <i>American Live Storys</i> - Servers';
  413.                     }
  414.                     else if($page == 'logout')
  415.                     {
  416.                         ueberschrift('Bis dann');
  417.                         session_unset();
  418.                     }
  419.                     else
  420.                     {
  421.                         ueberschrift('Ung&uuml;ltige Seite');
  422.                         echo'Stelle bitte sicher dass der Link stimmt oder du die Rechte f&uuml;r diese Seite hast';
  423.                     }
  424.                 } // ende isset($_SESSION['logedin'])
  425.             ?>
  426.         </div>
  427.         <div id="foot">
  428.             ControlPanel by [ALS]Tion - <a href="http://forum.als-samp.de">American Live Storys</a>
  429.         </div>
  430.     </body>
  431. </html>
  432.  
  433. <?php
  434.     function ueberschrift($header)
  435.     {
  436.         echo'<div class="ueberschrift">'."\n";
  437.         echo'<h2>'. $header .'</h2><br />'."\n";
  438.         echo'</div>'."\n";
  439.         return 1;
  440.     }
  441.     function createform($link)
  442.     {
  443.         echo'<form action="'. $link .'" method="post">'."\n";
  444.         return 1;
  445.     }
  446.     function destroyform()
  447.     {
  448.         echo'</form>'."\n";
  449.         return 1;
  450.     }
  451.     function createtable()
  452.     {
  453.         echo'<table border="0">'."\n";
  454.         return 1;
  455.     }
  456.     function inserttable($typ, $var, $value)
  457.     {
  458.         echo'<tr>'."\n";
  459.         if($typ == 1)
  460.         {
  461.             echo'<td class="table1" bgcolor=grey>'. $var .'</td><td bgcolor=grey>'. $value .'</td>'."\n";
  462.         }
  463.         else
  464.         {
  465.             echo'<td class="table2" bgcolor=white>'. $var .'</td><td bgcolor=white>'. $value .'</td>'."\n";
  466.         }
  467.         echo'</tr>'."\n";
  468.         return 1;
  469.     }
  470.     function destroytable()
  471.     {
  472.         echo'</table>'."\n";
  473.         return 1;
  474.     }
  475.     function senderrormail($error)
  476.     {
  477.         $errorstring = 'Im ControlPanel wurde scheinbar ein bis jetzt unbekannter Fehler gefunden...<br />';
  478.         $errorstring .= 'Bitte siehe nach ob eventuell neue Upodates raus sind oder melde diesen Bug im Forum...';
  479.         $errorstring .= 'Der Errorcode zum posten lautet wie folgt:<br />';
  480.         $errorstring .= '<br />';
  481.         $errorstring .= '<i>'. $error .'</i><br />';
  482.         $errorstring .= '<br />';
  483.         $errorstring .= 'Mit freundlichen Gr&uuml;&szlig;en,<br />';
  484.         $errorstring .= '[ALS]Tion - der ersteller des ControlPanels<br />';
  485.         main();
  486.         return 1;
  487.     }
  488.     function cryptpw($password)
  489.     {
  490.         for($i=0; $i < strlen($password); $i++)
  491.         {
  492.             $temp = ord($password[$i]);
  493.             $temp += (3^$i) * ($i % 15);
  494.             if($temp > (0xff))
  495.             {
  496.                 $temp -= 256;
  497.             }
  498.             $password[$i] = chr($temp);
  499.         }
  500.         return $password;
  501.     }
  502. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement