<?php if(!defined("MCR")){ exit("Hacking Attempt!"); } class module{ private $install, $cfg, $lng, $methods; public function __construct($install){ $this->install = $install; $this->cfg = $install->cfg; $this->lng = $install->lng; $this->methods = array('MD5', 'SHA1', 'SHA256', 'SHA512', 'Double MD5 [ md5(md5(PASS)) ]', 'Salted MD5 [ md5(PASS+SALT) ]', 'Salted MD5 [ md5(SALT+PASS) ]', 'Salted Double MD5 [ md5(md5(SALT)+PASS) ]', 'Salted Double MD5 [ md5(md5(PASS)+SALT) ]', 'Salted Double MD5 [ md5(PASS+md5(SALT)) ]', 'Salted Double MD5 [ md5(SALT+md5(PASS)) ]', 'Salted SHA1 [ sha1(PASS+SALT) ]', 'Salted SHA1 [ sha1(SALT+PASS) ]', 'Triple salted MD5 [ md5(md5(SALT)+md5(PASS)) ]', 'Salted SHA256 [ sha256(PASS+SALT) ]', 'Salted SHA512 [ sha512(PASS+SALT) ]'); $this->install->title = $this->lng['mod_name'].' — '.$this->lng['step_2']; } private function encrypt_methods($selected=0){ ob_start(); foreach($this->methods as $key => $title){ $select = ($key==$selected) ? 'selected' : ''; echo '<option value="'.$key.'" '.$select.'>'.$title.'</option>'; } return ob_get_clean(); } public function content(){ if(!isset($_SESSION['step_1'])){ $this->install->notify('', '', 'install/?do=step_1'); } if(isset($_SESSION['step_2'])){ $this->install->notify('', '', 'install/?do=step_3'); } $time = time(); $_SESSION['f_login'] = (isset($_POST['login'])) ? $this->install->HSC(@$_POST['login']) : 'admin'; $_SESSION['f_adm_pass'] = @$_POST['password']; $_SESSION['f_repass'] = $this->install->HSC(@$_POST['repassword']); $_SESSION['f_email'] = (isset($_POST['email'])) ? $this->install->HSC(@$_POST['email']) : 'admin@'.$_SERVER['SERVER_NAME']; $method = intval(@$_POST['method']); if($_SERVER['REQUEST_METHOD']=='POST'){ if(!preg_match("/^[\w\-]{3,}$/i", @$_POST['login'])){ $this->install->notify($this->lng['e_login_format'], $this->lng['e_msg'], 'install/?do=step_2'); } if(mb_strlen(@$_POST['password'], "UTF-8")<6){ $this->install->notify($this->lng['e_pass_len'], $this->lng['e_msg'], 'install/?do=step_2'); } if(@$_POST['password'] !== @$_POST['repassword']){ $this->install->notify($this->lng['e_pass_match'], $this->lng['e_msg'], 'install/?do=step_2'); } if(!filter_var(@$_POST['email'], FILTER_VALIDATE_EMAIL)){ $this->install->notify($this->lng['e_email_format'], $this->lng['e_msg'], 'install/?do=step_2'); } if(!isset($this->methods[$method])){ $this->install->notify($this->lng['e_method'], $this->lng['e_msg'], 'install/?do=step_2'); } $this->cfg['main']['crypt'] = $method; if(!$this->install->savecfg($this->cfg['main'], 'main.php', 'main')){ $this->install->notify($this->lng['e_settings'], $this->lng['e_msg'], 'install/?do=step_2'); } require_once(DIR_ROOT.'engine/db/'.$this->cfg['db']['backend'].'.class.php'); $db = new db($this->cfg['db']['host'], $this->cfg['db']['user'], $this->cfg['db']['pass'], $this->cfg['db']['base'], $this->cfg['db']['port']); $error = $db->error(); if(!empty($error)){ $this->install->notify($this->lng['e_connection'].' | '.$db->error(), $this->lng['e_msg'], 'install/?do=step_2'); } $login = $db->safesql(@$_POST['login']); $email = $db->safesql(@$_POST['email']); $salt = $db->safesql($this->install->random()); $password = $this->install->gen_password(@$_POST['password'], $salt, $method); $uuid = $db->safesql($this->install->logintouuid(@$_POST['login'])); $ip = $this->install->ip(); $ctables = $this->cfg['db']['tables']; $ic_f = $ctables['iconomy']['fields']; $us_f = $ctables['users']['fields']; $query = $db->query("INSERT INTO `{$ctables['users']['name']}` (`{$us_f['group']}`, `{$us_f['login']}`, `{$us_f['email']}`, `{$us_f['pass']}`, `{$us_f['uuid']}`, `{$us_f['salt']}`, `{$us_f['ip_create']}`, `{$us_f['ip_last']}`, `{$us_f['date_reg']}`, `{$us_f['date_last']}`, `{$us_f['fname']}`, `{$us_f['lname']}`) VALUES ('3', '$login', '$email', '$password', '$uuid', '$salt', '$ip', '$ip', '$time', '$time', '', '')"); if(!$query){ $this->install->notify($this->lng['e_add_admin'], $this->lng['e_msg'], 'install/?do=step_2'); } $query = $db->query("INSERT INTO `{$ctables['iconomy']['name']}` (`{$ic_f['login']}`, `{$ic_f['money']}`, `{$ic_f['rm']}`, `{$ic_f['bank']}`) VALUES ('$login', 0, 0, 0)"); if(!$query){ $this->install->notify($this->lng['e_add_economy'], $this->lng['e_msg'], 'install/?do=step_2'); } $_SESSION['step_2'] = true; $this->install->notify('', '', 'install/?do=step_3'); } $data = array( 'METHODS' => $this->encrypt_methods($method), ); return $this->install->sp('step_2.html', $data); } } ?>