Advertisement
Guest User

Untitled

a guest
Jul 7th, 2017
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 16.32 KB | None | 0 0
  1. <?PHP
  2. // ###################### CONFIG ########################
  3. $config['site'] = parse_ini_file('config/config.ini');
  4. include('config/config.php');
  5. if($config['site']['install'] != "no") {
  6.     header("Location: install.php");
  7.     exit;
  8. }
  9.  
  10. $config['server'] = parse_ini_file($config['site']['server_path'].'config.lua');
  11. if(isset($config['server']['mysqlHost'])) {
  12.     $mysqlhost = $config['server']['mysqlHost'];
  13.     $mysqluser = $config['server']['mysqlUser'];
  14.     $mysqlpass = $config['server']['mysqlPass'];
  15.     $mysqldatabase = $config['server']['mysqlDatabase'];
  16. }
  17. elseif(isset($config['server']['sqlHost'])) {
  18.     $mysqlhost = $config['server']['sqlHost'];
  19.     $mysqluser = $config['server']['sqlUser'];
  20.     $mysqlpass = $config['server']['sqlPass'];
  21.     $mysqldatabase = $config['server']['sqlDatabase'];
  22. }
  23. $sqlitefile = $config['server']['sqliteDatabase'];
  24. $passwordency = '';
  25. if(strtolower($config['server']['useMD5Passwords']) == 'yes' || strtolower($config['server']['encryptionType']) == 'md5')
  26.     $passwordency = 'md5';
  27. if(strtolower($config['server']['encryptionType']) == 'sha1')
  28.     $passwordency = 'sha1';
  29. // ####################### POT #########################
  30. include('pot/OTS.php');
  31. $ots = POT::getInstance();
  32. if(strtolower($config['server']['sqlType']) == "mysql") {
  33.     try {
  34.         $ots->connect(POT::DB_MYSQL, array('host' => $mysqlhost, 'user' => $mysqluser, 'password' => $mysqlpass, 'database' => $mysqldatabase) );
  35.     }
  36.     catch(PDOException $error) {
  37.             echo 'Database error - can\'t connect to MySQL database. Possible reasons:<br>1. MySQL server is not running on host.<br>2. MySQL user, password, database or host isn\'t configured in: <b>'.$config['site']['server_path'].'config.lua</b> .<br>3. MySQL user, password, database or host is wrong.';
  38.         exit;
  39.     }
  40. }
  41. elseif(strtolower($config['server']['sqlType']) == "sqlite") {
  42.     $link_to_sqlitedatabase = $config['site']['server_path'].$sqlitefile;
  43.     try {
  44.         $ots->connect(POT::DB_SQLITE, array('database' => $link_to_sqlitedatabase));
  45.     }
  46.     catch(PDOException $error) {
  47.         echo 'Database error - can\'t open SQLite database. Possible reasons:<br><b>'.$link_to_sqlitedatabase.'</b> - file isn\'t valid SQLite database.<br><b>'.$link_to_sqlitedatabase.'</b> - doesn\'t exist.<br><font color="red">Wrong PHP configuration. Default PHP does not work with SQLite databases!</font>';
  48.         exit;
  49.     }
  50. } else {
  51.     echo 'Database error. Unknown database type in <b>'.$config['site']['server_path'].'config.lua</b> . Must be equal to: "<b>mysql</b>" or "<b>sqlite</b>". Now is: "<b>'.strtolower($config['server']['sqlType']).'"</b>';
  52.     exit;
  53. }
  54.  
  55. $SQL = POT::getInstance()->getDBHandle();
  56. $layout_name = "layouts/".$layout_name = $config['site']['layout'];;
  57. $layout_ini = parse_ini_file($layout_name.'/layout_config.ini');
  58. foreach($layout_ini as $key => $value)
  59.     $config['site'][$key] = $value;
  60.  
  61. //###################### FUNCTIONS ######################
  62. function isPremium($premdays, $lastday) {
  63.     return ($premdays - (date("z", time()) + (365 * (date("Y", time()) - date("Y", $lastday))) - date("z", $lastday)) > 0);
  64. }
  65. function saveconfig_ini($config) {
  66. $file = fopen("config/config.ini", "w");
  67. foreach($config as $param => $data) {
  68. $file_data .= $param.' = "'.str_replace('"', '', $data).'"';
  69. }
  70. rewind($file);
  71. fwrite($file, $file_data);
  72. fclose($file);
  73. }
  74. function password_ency($password) {
  75.     $ency = $GLOBALS['passwordency'];
  76.     if($ency == 'sha1')
  77.         return sha1($password);
  78.     elseif($ency == 'md5')
  79.         return md5($password);
  80.     elseif($ency == '')
  81.         return $password;
  82. }
  83. function delete_player($name) {
  84.     $SQL = $GLOBALS['SQL'];
  85.     $player = new OTS_Player();
  86.     $player->find($name);
  87.     if($player->isLoaded()) {
  88.         try { $SQL->query("DELETE FROM player_skills WHERE player_id = '".$player->getId()."';"); } catch(PDOException $error) {}
  89.         try { $SQL->query("DELETE FROM guild_invites WHERE player_id = '".$player->getId()."';"); } catch(PDOException $error) {}
  90.         try { $SQL->query("DELETE FROM player_items WHERE player_id = '".$player->getId()."';"); } catch(PDOException $error) {}
  91.         try { $SQL->query("DELETE FROM player_depotitems WHERE player_id = '".$player->getId()."';"); } catch(PDOException $error) {}
  92.         try { $SQL->query("DELETE FROM player_spells WHERE player_id = '".$player->getId()."';"); } catch(PDOException $error) {}
  93.         try { $SQL->query("DELETE FROM player_storage WHERE player_id = '".$player->getId()."';"); } catch(PDOException $error) {}
  94.         try { $SQL->query("DELETE FROM player_viplist WHERE player_id = '".$player->getId()."';"); } catch(PDOException $error) {}
  95.         try { $SQL->query("DELETE FROM player_deaths WHERE player_id = '".$player->getId()."';"); } catch(PDOException $error) {}
  96.         try { $SQL->query("DELETE FROM player_deaths WHERE killed_by = '".$player->getId()."';"); } catch(PDOException $error) {}
  97.         $rank = $player->getRank();
  98.         if(!empty($rank)) {
  99.             $guild = $rank->getGuild();
  100.             if($guild->getOwner()->getId() == $player->getId()) {
  101.                 $rank_list = $guild->getGuildRanksList();
  102.                 if(count($rank_list) > 0) {
  103.                     $rank_list->orderBy('level');
  104.                     foreach($rank_list as $rank_in_guild) {
  105.                         $players_with_rank = $rank_in_guild->getPlayersList();
  106.                         $players_with_rank->orderBy('name');
  107.                         $players_with_rank_number = count($players_with_rank);
  108.                         if($players_with_rank_number > 0) {
  109.                             foreach($players_with_rank as $player_in_guild) {
  110.                                 $player_in_guild->setRank();
  111.                                 $player_in_guild->save();
  112.                             }
  113.                         }
  114.                         $rank_in_guild->delete();
  115.                     }
  116.                     $guild->delete();
  117.                 }
  118.             }
  119.         }
  120.         $player->delete();
  121.         return TRUE;
  122.     }
  123. }
  124.  
  125. function delete_guild($id) {
  126.     $guild = new OTS_Guild();
  127.     $guild->load($id);
  128.     if($guild->isLoaded()) {
  129.         $rank_list = $guild->getGuildRanksList();
  130.         if(count($rank_list) > 0) {
  131.             $rank_list->orderBy('level');
  132.             foreach($rank_list as $rank_in_guild) {
  133.                 $players_with_rank = $rank_in_guild->getPlayersList();
  134.                 if(count($players_with_rank) > 0) {
  135.                     foreach($players_with_rank as $player_in_guild) {
  136.                         $player_in_guild->setRank();
  137.                         $player_in_guild->save();
  138.                     }
  139.                 }
  140.                 $rank_in_guild->delete();
  141.             }
  142.         }
  143.         $guild->delete();
  144.         return TRUE;
  145.     }
  146.     else
  147.     return FALSE;
  148. }
  149.  
  150. function check_name($name) {
  151.     $temp = strspn("$name", "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM- [ ] '");
  152.     if ($temp != strlen($name)) {
  153.         return false;
  154.     } else {
  155.         $ok = "/[a-zA-Z ']{1,25}/";
  156.         return (preg_match($ok, $name))? true: false;
  157.     }
  158. }
  159.  
  160. function check_account_name($name) {
  161.     $temp = strspn("$name", "QWERTYUIOPASDFGHJKLZXCVBNM0123456789");
  162.     if ($temp != strlen($name))
  163.         return false;
  164.     if(strlen($name) > 32)
  165.         return false;
  166.     else {
  167.         $ok = "/[A-Z0-9]/";
  168.         return (preg_match($ok, $name))? true: false;
  169.     }
  170. }
  171.  
  172. function check_name_new_char($name) {
  173.     $name_to_check = strtolower($name);
  174.     $names_blocked = array('gm','cm', 'god', 'tutor');
  175.     $first_words_blocked = array('gm ','cm ', 'god ','tutor ', "'", '-');
  176.     $words_blocked = array('gamemaster', 'game master', 'game-master', "game'master", '--', "''","' ", " '", '- ', ' -', "-'", "'-", 'fuck', 'sux', 'suck', 'noob', 'tutor');
  177.     foreach($first_words_blocked as $word)
  178.         if($word == substr($name_to_check, 0, strlen($word)))
  179.             return false;
  180.     if(substr($name_to_check, -1) == "'" || substr($name_to_check, -1) == "-")
  181.         return false;
  182.     if(substr($name_to_check, 1, 1) == ' ')
  183.         return false;
  184.     if(substr($name_to_check, -2, 1) == " ")
  185.         return false;
  186.     foreach($names_blocked as $word)
  187.         if($word == $name_to_check)
  188.             return false;
  189.     foreach($GLOBALS['config']['site']['monsters'] as $word)
  190.         if($word == $name_to_check)
  191.             return false;
  192.     foreach($GLOBALS['config']['site']['npc'] as $word)
  193.         if($word == $name_to_check)
  194.             return false;
  195.     for($i = 0; $i < strlen($name_to_check); $i++)
  196.         if($name_to_check[$i-1] == ' ' && $name_to_check[$i+1] == ' ')
  197.             return false;
  198.     foreach($words_blocked as $word)
  199.         if (!(strpos($name_to_check, $word) === false))
  200.             return false;
  201.     for($i = 0; $i < strlen($name_to_check); $i++)
  202.         if($name_to_check[$i] == $name_to_check[($i+1)] && $name_to_check[$i] == $name_to_check[($i+2)])
  203.             return false;
  204.     for($i = 0; $i < strlen($name_to_check); $i++)
  205.         if($name_to_check[$i-1] == ' ' && $name_to_check[$i+1] == ' ')
  206.             return false;
  207.     $temp = strspn("$name", "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM- '");
  208.     if ($temp != strlen($name))
  209.         return false;
  210.     else {
  211.         $ok = "/[a-zA-Z ']{1,25}/";
  212.         return (preg_match($ok, $name))? true: false;
  213.     }
  214. }
  215.  
  216. function check_rank_name($name) {
  217.     $temp = strspn("$name", "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM0123456789-[ ] ");
  218.     if ($temp != strlen($name)) {
  219.         return false;
  220.     } else {
  221.         $ok = "/[a-zA-Z ]{1,60}/";
  222.         return (preg_match($ok, $name))? true: false;
  223.     }
  224. }
  225.  
  226. function check_guild_name($name) {
  227.     $temp = strspn("$name", "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM0123456789- ");
  228.     if ($temp != strlen($name)) {
  229.         return false;
  230.     } else {
  231.         $ok = "/[a-zA-Z ]{1,60}/";
  232.         return (preg_match($ok, $name))? true: false;
  233.     }
  234. }
  235.  
  236. function check_password($pass) {
  237.     $temp = strspn("$pass", "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890");
  238.     if ($temp != strlen($pass)) {
  239.         return false;
  240.     } else {
  241.         $ok = "/[a-zA-Z0-9]{1,40}/";
  242.         return (preg_match($ok, $pass))? true: false;
  243.     }
  244. }
  245.  
  246. function check_mail($email) {
  247.     $ok = "/[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z]{2,4}/";
  248.     return (preg_match($ok, $email))? true: false;
  249. }
  250.  
  251. function items_on_player($characterid, $pid)
  252. {
  253.         global $SQL;
  254.         $item = $SQL->query("SELECT `itemtype` FROM `player_items` WHERE `pid` = '".$pid."' AND `player_id` = '".$characterid."'")->fetch();
  255.         return '<img src="images/items/' . $item['itemtype'] . '.gif" />';
  256. }
  257.  
  258. function showCommentsCount( $date )
  259. {
  260.         global $SQL;
  261.         $result = $SQL->query("SELECT COUNT(*) as `count` FROM `z_news_comments` WHERE `news_date` = " . (int)$date . ";")->fetch();
  262.         return (int)$result['count'];
  263. }
  264.  
  265. function getReason($reasonId)
  266. {
  267.         switch($reasonId)
  268.         {
  269.                 case 0:
  270.                         return "Offensive Name";
  271.                 case 1:
  272.                         return "Invalid Name Format";
  273.                 case 2:
  274.                         return "Unsuitable Name";
  275.                 case 3:
  276.                         return "Name Inciting Rule Violation";
  277.                 case 4:
  278.                         return "Offensive Statement";
  279.                 case 5:
  280.                         return "Spamming";
  281.                 case 6:
  282.                         return "Illegal Advertising";
  283.                 case 7:
  284.                         return "Off-Topic Public Statement";
  285.                 case 8:
  286.                         return "Non-English Public Statement";
  287.                 case 9:
  288.                         return "Inciting Rule Violation";
  289.                 case 10:
  290.                         return "Bug Abuse";
  291.                 case 11:
  292.                         return "Game Weakness Abuse";
  293.                 case 12:
  294.                         return "Using Unofficial Software to Play";
  295.                 case 13:
  296.                         return "Hacking";
  297.                 case 14:
  298.                         return "Multi-Clienting";
  299.                 case 15:
  300.                         return "Account Trading or Sharing";
  301.                 case 16:
  302.                         return "Threatening Gamemaster";
  303.                 case 17:
  304.                         return "Pretending to Have Influence on Rule Enforcement";
  305.                 case 18:
  306.                         return "False Report to Gamemaster";
  307.                 case 19:
  308.                         return "Destructive Behaviour";
  309.                 case 20:
  310.                         return "Excessive Unjustified Player Killing";
  311.                 case 21:
  312.                         return "Invalid Payment";
  313.                 case 22:
  314.                         return "Spoiling Auction";
  315.                 default:
  316.                         break;
  317.         }
  318.         return "Unknown Reason";
  319. }
  320.  
  321. //################### DISPLAY FUNCTIONS #####################
  322. function short_text($text, $chars_limit) {
  323.     if (strlen($text) > $chars_limit)
  324.         return substr($text, 0, strrpos(substr($text, 0, $chars_limit), " ")).'...';
  325.     else return $text;
  326. }
  327. function logo_monster() {
  328.     return str_replace(" ", "", trim(mb_strtolower($GLOBALS['layout_ini']['logo_monster'])));
  329. }
  330.  
  331.  
  332. $statustimeout = 1;
  333. foreach(explode("*", str_replace(" ", "", $config['server']['statusTimeout'])) as $status_var)
  334.     if($status_var > 0)
  335.         $statustimeout = $statustimeout * $status_var;
  336. $statustimeout = $statustimeout / 1000;
  337. $config['status'] = parse_ini_file('config/serverstatus');
  338. if($config['status']['serverStatus_lastCheck']+$statustimeout < time())
  339. {
  340.     $config['status']['serverStatus_checkInterval'] = $statustimeout+3;
  341.     $config['status']['serverStatus_lastCheck'] = time();
  342.     $info = chr(6).chr(0).chr(255).chr(255).'info';
  343.     $sock = fsockopen("127.0.0.1", $config['server']['statusPort'], $errno, $errstr, 1);
  344.     if ($sock)
  345.     {
  346.         fwrite($sock, $info);
  347.         $data='';
  348.         while (!feof($sock))
  349.             $data .= fgets($sock, 1024);
  350.         fclose($sock);
  351.         preg_match('/players online="(\d+)" max="(\d+)"/', $data, $matches);
  352.         $config['status']['serverStatus_online'] = 1;
  353.         $config['status']['serverStatus_players'] = $matches[1];
  354.         $config['status']['serverStatus_playersMax'] = $matches[2];
  355.         preg_match('/uptime="(\d+)"/', $data, $matches);
  356.         $h = floor($matches[1] / 3600);
  357.         $m = floor(($matches[1] - $h*3600) / 60);
  358.         $config['status']['serverStatus_uptime'] = $h.'h '.$m.'m';
  359.         preg_match('/monsters total="(\d+)"/', $data, $matches);
  360.         $config['status']['serverStatus_monsters'] = $matches[1];
  361.     }
  362.     else
  363.     {
  364.         $config['status']['serverStatus_online'] = 0;
  365.         $config['status']['serverStatus_players'] = 0;
  366.         $config['status']['serverStatus_playersMax'] = 0;
  367.     }
  368.     $file = fopen("config/serverstatus", "w");
  369.     foreach($config['status'] as $param => $data)
  370.     {
  371. $file_data .= $param.' = "'.str_replace('"', '', $data).'"
  372. ';
  373.     }
  374.     rewind($file);
  375.     fwrite($file, $file_data);
  376.     fclose($file);
  377. }
  378.  
  379. $views_counter = "usercounter.dat";
  380. if (file_exists($views_counter)) {
  381.     $actie = fopen($views_counter, "r+");
  382.     $page_views = fgets($actie, 9);
  383.     $page_views++;
  384.     rewind($actie);
  385.     fputs($actie, $page_views, 9);
  386.     fclose($actie);
  387. } else {
  388.     $actie = fopen($views_counter, "w");
  389.     $page_views = 1;
  390.     fputs($actie, $page_views, 9);
  391.     fclose($actie);
  392. }
  393. // Functions by Colandus
  394. function makeOrder($arr, $order, $default) {
  395.     $type = 'asc';
  396.     if(isset($_GET['order'])) {
  397.             $v = explode('_', strrev($_GET['order']), 2);
  398.         if(count($v) == 2)
  399.         if($orderBy = $arr[strrev($v[1])])
  400.             $default = $orderBy;
  401.     $type = (strrev($v[0]) == 'asc' ? 'desc' : 'asc');
  402.     }
  403. return 'ORDER BY ' . $default . ' ' . $type;
  404. }
  405. function getOrder($arr, $order, $this) {
  406.     $type = 'asc';
  407.     if($orderBy = $arr[$this])
  408.         if(isset($_GET[$order])) {
  409.             $v = explode('_', strrev($_GET[$order]), 2);
  410.             if(strrev($v[1]) == $this)
  411.             $type = (strrev($v[0]) == 'asc' ? 'desc' : 'asc');
  412.         }
  413.     return $this . '_' . $type;
  414. }  
  415.  
  416. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement