示例#1
0
 /**
  * Hent Facebook-cache
  */
 protected function get_facebook_cache()
 {
     // har vi cache?
     $data = cache::fetch("facebook_posts");
     if ($data) {
         return $data;
     }
     // authentiser
     $app_id = KOF_FB_APP_ID;
     $app_secret = KOF_FB_APP_SECRET;
     if (!$app_id || !$app_secret) {
         return null;
     }
     $ret = @file_get_contents("https://graph.facebook.com/oauth/access_token?client_id={$app_id}&client_secret={$app_secret}&grant_type=client_credentials");
     if ($ret === false) {
         // kunne ikke hente data
         putlog("CREWCHAN", "Henting av Facebook-data feilet.");
         cache::store("facebook_posts", array());
     }
     $info = null;
     parse_str($ret, $info);
     // hent JSON
     $json = @file_get_contents("https://graph.facebook.com/kofradia/posts?access_token={$info['access_token']}");
     $data = json_decode($json, true);
     cache::store("facebook_posts", $data);
     return $data;
 }
 /**
  * Sjekk etter nye ting
  */
 public static function check_new($data)
 {
     global $_base, $_game;
     $last_prev = isset(game::$settings['wordpress_last']) ? intval(game::$settings['wordpress_last']['value']) : false;
     $last = 0;
     // hent siste data
     $last_data = isset(game::$settings['wordpress_last_data']) ? unserialize(game::$settings['wordpress_last_data']['value']) : NULL;
     // reverser data så nyeste kommer til slutt
     $data = array_reverse($data);
     // gå gjennom og se om noe er nyere
     $time_old = time() - 600;
     foreach ($data as $row) {
         $last = max($row['time'], $last);
         // ny?
         if ($last_prev !== false && $row['time'] > $last_prev) {
             // loggmelding
             $time = $row['time'] < $time_old ? ' (' . $_base->date->get($row['time'])->format() . ')' : '';
             putlog("INFO", '%bNytt innlegg i bloggen:%b %u' . $row['title'] . '%u' . $time . ' ' . $row['link']);
         }
     }
     // lagre hvis det var noe nytt
     if ($last > 0 && ($last_prev === false || $last_prev < $last || isset($last_data) && ($row['link'] != $last_data['link'] || $row['title'] != $last_data['title']))) {
         $data = \Kofradia\DB::quote(serialize($row));
         \Kofradia\DB::get()->exec("REPLACE INTO settings SET name = 'wordpress_last', value = {$last}");
         \Kofradia\DB::get()->exec("REPLACE INTO settings SET name = 'wordpress_last_data', value = {$data}");
     }
 }
示例#3
0
 /**
  * Oppdater en Hall of Fame (oppnådd)
  */
 protected static function set_data($name, $sub, $data, $extra = null)
 {
     $a = \Kofradia\DB::get()->exec("\n\t\t\tINSERT IGNORE INTO hall_of_fame\n\t\t\tSET\n\t\t\t\thof_name = " . \Kofradia\DB::quote($name) . ",\n\t\t\t\thof_sub = " . \Kofradia\DB::quote($sub) . ",\n\t\t\t\thof_time = " . time() . ",\n\t\t\t\thof_data = " . \Kofradia\DB::quote(serialize($data)));
     $affected = $a > 0;
     // logg
     list($subject, $url) = self::get_subject($name, $extra);
     $text = self::get_text($name, $sub, $data);
     putlog("INFO", "%bHALL OF FAME:%b %u" . $subject . "%u ble " . $text . " {$url}");
     // spillerlogg
     $up = null;
     if ($name != "familie" && $name != "familie_rank") {
         $up = $extra;
     }
     if ($name == "ff_owner") {
         $up = $extra[1];
     }
     if ($up) {
         $up->add_log("hall_of_fame", $text);
     }
     // ff-logg
     if ($name == "familie") {
         $extra->add_log("info", 'Broderskapet ble det første broderskap i spillet og havnet på <a href="&rpath;/hall_of_fame">Hall of Fame</a>!');
     } elseif ($name == "familie_rank") {
         $extra->add_log("info", 'Broderskapet har for øyeblikket flest poeng av alle broderskap på spillet i historien og havnet på <a href="&rpath;/hall_of_fame">Hall of Fame</a>!');
     }
     self::cache_load(true);
     return $affected;
 }
    /** Send en bestemt artikkel på e-post */
    protected function send_email($row)
    {
        $this->email->text('Hei,

Siden du ikke lengre er med i avisfirmaet "' . $row['ff_name'] . '" har din artikkel blitt slettet fordi den ikke tilhørte noen utgivelse. I tilfelle du kanskje ønsker å beholde teksten fra artikkelen, sender vi den på e-post.

Avisfirma: ' . $row['ff_name'] . ' <' . ess::$s['path'] . '/ff/?ff_id=' . $row['ff_id'] . '>

Tittel: ' . $row['ffna_title'] . '
Opprettet: ' . ess::$b->date->get($row['ffna_created_time'])->format(date::FORMAT_SEC) . ($row['ffna_updated_time'] ? '
Sist oppdatert: ' . ess::$b->date->get($row['ffna_updated_time'])->format(date::FORMAT_SEC) : '') . ($row['ffna_published'] ? '
Publisert: ' . ess::$b->date->get($row['ffna_published_time'])->format(date::FORMAT_SEC) : '') . '
Pris: ' . game::format_cash($row['ffna_price']) . '

Innhold:

-- START --
' . $row['ffna_text'] . '
-- SLUTT --

--
Kofradia.no
Denne e-posten er sendt til ' . $row['u_email'] . ' som ' . ($row['up_access_level'] == 0 ? 'tidligere tilhørte' : 'tilhører') . ' ' . $row['up_name'] . '
' . ess::$s['path']);
        $this->email->format();
        mailer::add_emails($this->email, $row['u_email'], "Din tidligere artikkel: {$row['ffna_title']} - Kofradia", true);
        putlog("CREWCHAN", "AVISARTIKKEL SLETTET: E-post planlagt for utsendelse. %c4Mailer scriptet må kjøres!");
    }
示例#5
0
 /**
  * Juster kapasiteten i bomberommene
  */
 public static function adjust_capacity()
 {
     // finn antall pålogget siste 48 timer
     $expire = time() - 86400 * 2;
     $result = \Kofradia\DB::get()->query("SELECT COUNT(*) FROM users_players WHERE up_access_level != 0 AND up_last_online > {$expire}");
     $ant_online = $result->fetchColumn(0);
     // for julaften og nyttår
     $d = array("12-24", "12-30", "12-31");
     $f = 1;
     if (in_array(ess::$b->date->get()->format("m-d"), $d)) {
         $f = 3;
         // 3 ganger så mange plasser
     }
     // antall som skal fordeles (minimum 5 stk)
     $ant_fordeles = max(5, ceil($ant_online * self::CAPACITY_FACTOR * $f));
     \Kofradia\DB::get()->beginTransaction();
     // hent ut alle bomberommene
     $result = \Kofradia\DB::get()->query("SELECT ff_id, ff_params FROM ff WHERE ff_type = 4 AND ff_inactive = 0 FOR UPDATE");
     $bomberom = array();
     while ($row = $result->fetch()) {
         $row['rest'] = 0;
         // antall ekstra plasser det skal settes av (de som blir fordelt tilfeldig)
         $bomberom[] = $row;
     }
     // ingen bomberom?
     $ant_bomberom = count($bomberom);
     if ($ant_bomberom == 0) {
         putlog("LOG", "BOMBEROM KAPASITET: Ingen bomberom eksisterer.");
         \Kofradia\DB::get()->commit();
         return;
     }
     // fordel plasser på bomberommene
     $per_bomberom = floor($ant_fordeles / $ant_bomberom);
     $rest = $ant_fordeles % $ant_bomberom;
     // eksta å fordele tilfeldig?
     if ($rest > 0) {
         // plukk ut tilfeldige bomberom
         $tilfeldige = (array) array_rand($bomberom, $rest);
         foreach ($tilfeldige as $key) {
             $bomberom[$key]['rest']++;
         }
     }
     // oppdater bomberommene
     foreach ($bomberom as $row) {
         // antall bomberommet skal ha plass til
         $ant = $row['rest'] + $per_bomberom;
         // frihavnen får dobbelt så mange plasser
         if ($row['ff_id'] == 44) {
             $ant += $per_bomberom;
         }
         // oppdater
         $params = new params($row['ff_params']);
         $params->update("bomberom_kapasitet", $ant);
         // lagre
         \Kofradia\DB::get()->exec("UPDATE ff SET ff_params = " . \Kofradia\DB::quote($params->build()) . " WHERE ff_id = {$row['ff_id']}");
     }
     // lagre
     \Kofradia\DB::get()->commit();
 }
示例#6
0
文件: Log.php 项目: Kuzat/kofradia
 /**
  * Tunnel til putlog funksjonen
  * @return unknown
  */
 protected static function putlog(Category $forum, $location, $msg)
 {
     // ff?
     if ($forum->ff) {
         return putlog("FF", ucfirst($forum->ff->type['refobj']) . " {$forum->ff->data["ff_name"]} - " . $msg);
     }
     return putlog($location, $msg);
 }
示例#7
0
 /**
  * Legg til søknad
  */
 public static function add($type, $params, $reason, $rel_id = NULL)
 {
     global $_base, $__server;
     $type = (int) $type;
     $rel_id = $rel_id === NULL ? 'NULL' : intval($rel_id);
     // kontroller typen
     if (!isset(self::$types[$type])) {
         throw new HSException("Fant ikke typen.");
     }
     // legg til
     \Kofradia\DB::get()->exec("INSERT INTO div_soknader SET ds_type = {$type}, ds_up_id = " . self::up_id() . ", ds_rel_id = {$rel_id}, ds_time = " . time() . ", ds_reason = " . \Kofradia\DB::quote($reason) . ", ds_params = " . \Kofradia\DB::quote(serialize($params)));
     // oppdater cache
     tasks::set("soknader", \Kofradia\DB::get()->query("SELECT COUNT(ds_id) FROM div_soknader WHERE ds_reply_decision = 0")->fetchColumn(0));
     // logg
     putlog("NOTICE", "%bNY SØKNAD:%b {$__server['https_path']}{$__server['relative_path']}/crew/soknader");
     return \Kofradia\DB::get()->lastInsertId();
 }
示例#8
0
 public function __construct()
 {
     // fjern alle kulene som ikke er kjøpt allerede
     \Kofradia\DB::get()->exec("TRUNCATE bullets");
     // sett opp tidsperiode
     $this->get_time_period();
     // sett opp firmaene hvor kulene skal bli fordelt mellom
     $this->get_ff_list();
     // har vi ingen firmaer?
     if (count($this->ff_list) == 0) {
         putlog("CREWCHAN", "KULEPLANLEGGING: Det er ingen firmaer som kan selge kuler.");
         return;
     }
     // finn ut antall kuler vi skal fordele til hvert firma
     $this->get_count();
     // logg antall kuler
     putlog("CREWCHAN", "KULEPLANLEGGING: {$this->count_total} kuler planlagt for salg.");
     // legg til kulene i databasen
     $this->add();
 }
示例#9
0
    protected function load_user()
    {
        $user = login::$user;
        // vise en spesiell bruker?
        if (isset($_GET['u_id']) && access::has("admin")) {
            // hent bruker
            $user = user::get((int) $_GET['u_id']);
            // fant ikke?
            if (!$user) {
                echo '
<h1>Meldinger</h1>
<p>Fant ingen bruker med ID <b>' . htmlspecialchars($_GET['u_id']) . '</b>.</p>';
                $this->load_page();
            }
            $this->show_deleted = true;
        }
        $this->inbox = new user_innboks($user);
        // logg visning av innboks
        putlog("PROFILVIS", "%c5%bVIS-MELDINGER:%b%c %u" . login::$user->player->data['up_name'] . "%u ({$_SERVER['REQUEST_URI']})");
        // lagre redirect adresse
        redirect::store($this->addr());
    }
示例#10
0
 /**
  * Handle notify URLs from PayPal
  */
 public function action_notify()
 {
     file_put_contents(PATH_ROOT . "/paypal.log", print_r($_POST, true), FILE_APPEND);
     // TODO: remove this when tested on production
     if (!isset($_POST['receiver_email']) || $_POST['receiver_email'] != '*****@*****.**') {
         die;
     }
     // should really check for duplicates, but we don't
     // but it must be "completed"
     if (!isset($_POST['payment_status']) || $_POST['payment_status'] != 'Completed') {
         die;
     }
     // verify it
     $verify = Donation::verifyPayPalData($_POST);
     if (!$verify) {
         die;
     }
     // check for user etc
     $custom = postval("custom");
     if (!preg_match('~^(.*):(.*);public=(0|1)$~', $custom, $matches)) {
         die;
     }
     trigger_error("should add");
     $player = null;
     if ($matches[1] != "gjest") {
         // find this player
         $result = DB::get()->query("\n\t\t\t\tSELECT up_id\n\t\t\t\tFROM users_players\n\t\t\t\t\tLEFT JOIN users ON up_u_id = u_id\n\t\t\t\t\tLEFT JOIN sessions ON u_id = ses_u_id\n\t\t\t\tWHERE ses_id = " . DB::quote($matches[1]) . " AND up_id = " . DB::quote($matches[2]) . " LIMIT 1");
         if ($up_id = $result->fetchColumn(0)) {
             $player = \player::get($up_id);
         }
     }
     $time = \ess::$b->date->parse(postval("payment_date"));
     // add it
     $d = Donation::create(postval("mc_gross"), $time, $matches[3] ? $player->id : null);
     putlog("CREWCHAN", sprintf("%%uDONASJON:%%u %s %s ble donert av %s", postval("mc_currency"), postval("mc_gross"), $player ? $player->data['up_name'] . ($matches[3] ? ' (synlig)' : ' (som anonym)') : 'anonym gjest'));
     // no output
     die;
 }
示例#11
0
文件: angrip.php 项目: Kuzat/kofradia
 /**
  * Behandle angrep
  */
 protected function handle_attack()
 {
     // har vi ingen kuler?
     if (login::$user->player->data['up_weapon_bullets'] == 0) {
         return;
     }
     $bullets = max(0, (int) postval("kuler"));
     // har vi ikke så mange kuler?
     if ($bullets > login::$user->player->data['up_weapon_bullets']) {
         ess::$b->page->add_message("Du har ikke så mange kuler.", "error");
         return;
     }
     // har ikke skrevet inn noe?
     if ($bullets == 0) {
         ess::$b->page->add_message("Du må fylle inn antall kuler du ønsker å benytte.", "error");
         return;
     }
     // er offeret i fengsel?
     if ($this->up_offer->fengsel_check()) {
         ess::$b->page->add_message('<user id="' . $this->up_offer->id . '" /> er i fengsel og kan ikke angripes nå.', "error");
         return;
     }
     // kontroller skjema
     if (!$this->form->validateHashOrAlert(null, "Angrip spiller: {$this->up_offer->data['up_name']}")) {
         return;
     }
     // oppdater tidspunkt for siste angrep
     \Kofradia\DB::get()->exec("UPDATE users_players SET up_df_time = " . time() . " WHERE up_id = " . login::$user->player->id);
     // er i annen bydel, bomberom eller vi klarte ikke å finne spilleren?
     $not_found_b = $this->up_offer->data['up_b_id'] != login::$user->player->data['up_b_id'];
     $not_found_brom = $this->up_offer->bomberom_check();
     $prob = rand(1, 100);
     $find_prob = $this->up_offer->calc_find_player_prob() * 100;
     $not_found_prob = $prob > $find_prob;
     if ($not_found_b || $not_found_brom || $not_found_prob) {
         // logg
         if ($not_found_b) {
             $reason = 'Ikke i samme bydel (' . login::$user->player->bydel['name'] . ' mot ' . $this->up_offer->bydel['name'] . ').';
             if ($not_found_brom) {
                 $reason .= ' Offeret er også i bomberom.';
             }
         } elseif ($not_found_brom) {
             $reason = 'Offeret er i bomberom.';
         } else {
             $reason = 'Traff ikke på sannsynligheten (' . $prob . ' > ' . ceil($find_prob) . ').';
         }
         putlog("DF", "ANGREP FEILET: " . login::$user->player->data['up_name'] . " skulle angripe%c3 " . $this->up_offer->data['up_name'] . "%c med {$bullets} " . fword("kule", "kuler", $bullets) . ". {$reason}");
         // øk telleren over antall ganger vi ikke har funnet spiller
         \Kofradia\DB::get()->exec("UPDATE users_players SET up_attack_failed_num = up_attack_failed_num + 1 WHERE up_id = " . login::$user->player->id);
         // øk telleren over antall ganger vi ikke har funnet spiller (for familien spilleren er medlem i)
         login::$user->player->attack_ff_update("failed");
         // øk teller for ff for offeret
         $this->up_offer->attacked_ff_update("failed");
         // sett i fengsel i 2-4 minutter
         $fengsel = login::$user->player->fengsel_rank(100, true, true, rand(120, 240));
         // mist energi
         login::$user->player->energy_use(self::ENERGY_NOT_FOUND);
         // øk anti-bot
         $this->antibot->increase_counter();
         // trigger
         login::$user->player->trigger("attack_notfound", array("not_found_b" => $not_found_b, "not_found_brom" => $not_found_brom, "not_found_prob" => $not_found_prob, "bullets" => $bullets, "up" => $this->up_offer));
         // vis resultat og last inn siden
         $this->attack_result_notfound_show($fengsel, $bullets);
         redirect::handle();
     }
     // angrip spilleren
     $result = login::$user->player->weapon->attack($this->up_offer, $bullets);
     // sett ned antall kuler spilleren har
     \Kofradia\DB::get()->exec("UPDATE users_players SET up_weapon_bullets = GREATEST(0, up_weapon_bullets - {$bullets}) WHERE up_id = " . login::$user->player->id);
     login::$user->player->data['up_weapon_bullets'] = max(0, login::$user->player->data['up_weapon_bullets'] - $bullets);
     // trigger
     login::$user->player->trigger("attack", array("attack" => $result, "up" => $this->up_offer));
     // vis resultat og last inn siden
     $this->attack_result_show($result, $bullets);
 }
示例#12
0
    function step4()
    {
        global $__server, $_game;
        // er skjemaet sendt inn?
        if ($_SERVER['REQUEST_METHOD'] == "POST") {
            // sjekk for gyldig trinn
            if (!isset($_POST['step']) || $_POST['step'] != 4) {
                redirect::handle();
            }
            // betingelser, alder, forste_bruker
            $betingelser = isset($_POST['betingelser']);
            $alder = isset($_POST['alder']);
            $forste_bruker = isset($_POST['forste_bruker']);
            // er ikke betingelsene godtatt?
            if (!$betingelser) {
                ess::$b->page->add_message("Hvis du ikke godtar betingelsene kan du dessverre ikke registrere deg her.", "error");
            } elseif (!$alder) {
                ess::$b->page->add_message("Hvis du ikke har fylt 13 år kan du dessverre ikke registrere deg her.", "error");
            } elseif (!$forste_bruker) {
                ess::$b->page->add_message("Hvis du allerede har en bruker fra før så bruk den! Å opprette ny konto gjør det bare dumt for deg selv og kan i værste tilfelle føre til politianmeldelse.", "error");
            } else {
                // finn en tilfeldig bydel
                $result = \Kofradia\DB::get()->query("SELECT id FROM bydeler WHERE active = 1 ORDER BY RAND()");
                $bydel = $result->fetchColumn(0);
                // sett opp nødvendig info
                $user = \Kofradia\DB::quote($this->info['user']);
                $pass = \Kofradia\DB::quote($this->info['pass']);
                $email = \Kofradia\DB::quote($this->info['email']);
                $referer = \Kofradia\DB::quote($this->info['referer']);
                $tos_version = intval(game::$settings['tos_version']['value']);
                $birth = \Kofradia\DB::quote($this->info['birth']);
                $recruiter = array("up_id" => 'NULL', "up_u_id" => 'NULL');
                global $__server;
                // er denne brukeren vervet?
                if (isset($_COOKIE[$__server['cookie_prefix'] . "rid"])) {
                    $rid = $_COOKIE[$__server['cookie_prefix'] . "rid"];
                    // finnes denne brukeren?
                    $result = \Kofradia\DB::get()->query("SELECT up_id, up_u_id FROM users_players WHERE up_id = " . \Kofradia\DB::quote($rid));
                    if ($row = $result->fetch()) {
                        $recruiter = $row;
                    }
                }
                \Kofradia\DB::get()->beginTransaction();
                // deaktiver kontroll av foreign key
                \Kofradia\DB::get()->exec("SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0");
                // opprett bruker
                $time = time();
                \Kofradia\DB::get()->exec("INSERT INTO users SET u_email = {$email}, u_pass = {$pass}, u_birth = {$birth}, u_tos_version = {$tos_version}, u_created_time = {$time}, u_created_ip = " . \Kofradia\DB::quote($_SERVER['REMOTE_ADDR']) . ", u_created_referer = {$referer}, u_recruiter_u_id = {$recruiter['up_u_id']}, u_recruiter_points_last = 0");
                $u_id = \Kofradia\DB::get()->lastInsertId();
                // opprett spiller og tilknytt brukeren
                \Kofradia\DB::get()->exec("INSERT INTO users_players SET up_u_id = {$u_id}, up_name = {$user}, up_created_time = {$time}, up_recruiter_up_id = {$recruiter['up_id']}, up_b_id = {$bydel}");
                $up_id = \Kofradia\DB::get()->lastInsertId();
                \Kofradia\DB::get()->exec("UPDATE users SET u_active_up_id = {$up_id} WHERE u_id = {$u_id}");
                // aktiver kontroll av foreign key
                \Kofradia\DB::get()->exec("SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS");
                // sett opp riktig rank plassering
                #\Kofradia\DB::get()->exec("UPDATE users_players AS main, (SELECT COUNT(users_players.up_id)+1 AS pos, ref.up_id FROM users_players AS ref LEFT JOIN users_players ON users_players.up_points > ref.up_points AND users_players.up_access_level < {$_game['access_noplay']} AND users_players.up_access_level != 0 WHERE ref.up_id = $up_id GROUP BY ref.up_id) AS rp SET main.up_rank_pos = rp.pos WHERE main.up_id = rp.up_id");
                \Kofradia\DB::get()->exec("INSERT INTO users_players_rank SET upr_up_id = {$up_id}");
                ranklist::update();
                // slett registrasjonsoppføringen
                \Kofradia\DB::get()->exec("DELETE FROM registration WHERE id = {$this->id}");
                \Kofradia\DB::get()->commit();
                // send e-post
                $email = new email();
                $email->text = 'Hei,

Du har registrert deg som ' . $this->info['user'] . ' på Kofradia.

Velkommen til spillet!

--
www.kofradia.no';
                $email->headers['X-SMafia-IP'] = $_SERVER['REMOTE_ADDR'];
                $email->headers['Reply-To'] = "*****@*****.**";
                $email->send($this->info['email'], "Velkommen til Kofradia");
                ess::$b->page->add_message('Velkommen til Kofradia!<br /><br />Du er nå registrert som <b>' . $this->info['user'] . '</b> og automatisk logget inn.<br /><br />Sjekk ut menyen til venstre så ser du hva vi har å tilby i dag.<br /><br />Hvis du har noen spørsmål ta en titt under <a href="' . ess::$s['relative_path'] . '/node">hjelp</a> og ta evt. kontakt med <a href="support/">support</a> om du ikke finner svar på det du lurer på!<br /><br />Ikke glem og les gjennom <a href="' . ess::$s['relative_path'] . '/node/6">reglene for forumene</a> før du skriver i forumet. Lykke til i spillet!');
                // hent antall medlemmer
                $result = \Kofradia\DB::get()->query("SELECT COUNT(up_id) FROM users_players WHERE up_access_level < {$_game['access_noplay']} AND up_access_level != 0");
                putlog("INFO", "%bNY SPILLER:%b (#{$up_id} - Nummer %b" . $result->fetchColumn(0) . "%b) %u{$this->info['user']}%u registrerte seg! {$__server['absolute_path']}{$__server['relative_path']}/p/" . rawurlencode($this->info['user']));
                // logg inn brukeren
                login::do_login($u_id, $this->info['pass'], LOGIN_TYPE_TIMEOUT, false);
                // slett registrasjonsoppføringen fra session etc
                $this->trash();
                // sjekk om det er mulig multi
                $result = \Kofradia\DB::get()->query("\n\t\t\t\t\tSELECT up_name\n\t\t\t\t\tFROM users_players, users\n\t\t\t\t\tWHERE u_online_ip = " . \Kofradia\DB::quote($_SERVER['REMOTE_ADDR']) . "\n\t\t\t\t\t\tAND u_id != {$u_id}\n\t\t\t\t\t\tAND u_active_up_id = up_id AND up_access_level != 0\n\t\t\t\t\t\tAND up_last_online > " . (time() - 86400 * 30) . "\n\t\t\t\t\tLIMIT 10");
                if ($result->rowCount() > 0) {
                    $names = array();
                    while ($row = $result->fetch()) {
                        $names[] = $row['up_name'];
                    }
                    putlog("CREWCHAN", "%b%c4NY REGISTERT, MULIG MULTI:%c%b (#{$up_id}) %u{$this->info['user']}%u registrerte seg. Andre spillere på IP-en: " . implode(", ", $names) . ". {$__server['path']}/admin/brukere/finn?ip=" . rawurlencode($_SERVER['REMOTE_ADDR']));
                }
                // videresend til hovedsiden
                redirect::handle("", redirect::ROOT);
            }
        }
        echo '
<form action="registrer" method="post">
	<input type="hidden" name="abort" />
	<h1>Bekreftelse av betingelsene</h1>
	<p class="h_right">' . show_sbutton("Avbryt registrering", 'onclick="return confirm(\'Er du sikker på at du vil AVBRYTE?\')"') . '</p>
</form>
<p>
	På denne siden finner du en oversikt over betingelsene. Betingelsene er ikke lange og er kjapt å lese igjennom. Det er viktig at du er klar over innholdet i disse betingelsene og at du følger dem. Følger du ikke disse betingelsene vil brukeren din bli deaktivert. For å kunne opprette må du godta betingelsene.
</p>
<boxes />
<form action="registrer" method="post">
	<input type="hidden" name="step" value="4" />
	<p>
		Betingelser:<br />
		<div id="betingelser_content">' . game::$settings['tos']['value'] . '</div>
	</p>
	<p>
		<input type="checkbox" name="betingelser" id="betingelser" /><label for="betingelser"> Jeg har lest gjennom og aksepterer betingelsene</label>
	</p>
	<p>
		<input type="checkbox" name="alder" id="alder" /><label for="alder"> Jeg har fylt 13 år</label>
	</p>
	<p>
		<input type="checkbox" name="forste_bruker" id="forste_bruker" /><label for="forste_bruker"> Jeg har ingen bruker som er aktivert fra før av</label> <span class="dark">(Hvis du allerede har en bruker, må du deaktivere den <u>før</u> du registrerer deg på nytt.)</span>
	</p>
	<p>
		' . show_sbutton("Opprett bruker") . '
	</p>
</form>
<form action="registrer" method="post">
	<input type="hidden" name="abort" />
	<p>
		' . show_sbutton("Avbryt registrering", 'onclick="return confirm(\'Er du sikker på at du vil AVBRYTE?\')"') . '
	</p>
</form>';
    }
示例#13
0
 /**
  * Sett opp og kontroller mottakere
  */
 protected function parse_receivers()
 {
     // sett opp søk
     $where = $this->get_receivers();
     if (!$where) {
         return null;
     }
     // hent brukere og evt. blokk
     $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT u_active_up_id, u_access_level, up_id, up_name, up_access_level, uc_id, uc_info\n\t\t\tFROM (\n\t\t\t\tSELECT u_active_up_id, u_access_level, up_id, up_name, up_access_level, uc_id, uc_info\n\t\t\t\tFROM users_players, users LEFT JOIN users_contacts ON u_id = uc_u_id AND uc_contact_up_id = " . login::$user->player->id . " AND uc_type = 2\n\t\t\t\tWHERE up_u_id = u_id AND {$where}\n\t\t\t\tORDER BY up_access_level = 0, up_last_online DESC\n\t\t\t) ref\n\t\t\tGROUP BY up_name");
     $this->errors = array();
     $this->infos = array();
     $receivers = array();
     while ($row = $result->fetch()) {
         // seg selv?
         if ($row['up_id'] == login::$user->player->id) {
             $this->remove_player($row);
             $this->errors[] = 'Du kan ikke legge til deg selv som mottaker. Du er mottaker av meldingen automatisk.';
         } elseif ($row['up_access_level'] == 0 && (!access::has("crewet") || $row['u_access_level'] == 0 || count($this->players_list) > 1 || $row['u_active_up_id'] != $row['up_id'])) {
             if (!access::has("crewet") || $row['u_access_level'] == 0 || $row['u_active_up_id'] != $row['up_id']) {
                 $this->remove_player($row);
                 $this->errors[] = '<user id="' . $row['up_id'] . '" /> er død og kan ikke motta meldinger.';
             } else {
                 $receivers[] = $row;
                 $this->errors[] = '<user id="' . $row['up_id'] . '" /> er død, men brukeren er aktivert. Kan motta meldinger hvis spilleren er den eneste mottakeren.';
             }
         } elseif ($row['uc_id'] && !access::has("crewet")) {
             $this->remove_player($row);
             // sett opp begrunnelse
             $info = $row['uc_info'];
             $reason = game::bb_to_html($info);
             $reason = empty($reason) ? '' : ' Begrunnelse: ' . $reason;
             $this->errors[] = '<user id="' . $row['up_id'] . '" /> har blokkert deg og kan ikke legges til som mottaker.' . $reason;
         } else {
             // forbeholdt mot å motta meldinger? -> men crew
             if (in_array($row['up_access_level'], ess::$g['access']['block_pm']) && access::has("crewet")) {
                 $this->infos[] = '<user id="' . $row['up_id'] . '" /> er egentlig reservert mot meldinger.';
             } elseif (in_array($row['up_access_level'], ess::$g['access']['block_pm'])) {
                 $result2 = \Kofradia\DB::get()->query("\n\t\t\t\t\t\tSELECT uc_contact_up_id\n\t\t\t\t\t\tFROM users_players, users_contacts\n\t\t\t\t\t\tWHERE up_id = {$row['up_id']}\n\t\t\t\t\t\t  AND up_u_id = uc_u_id\n\t\t\t\t\t\t  AND uc_contact_up_id = " . login::$user->player->id . "\n\t\t\t\t\t\t  AND uc_type = 1");
                 $kontakt = $result2->rowCount() > 0;
                 // ikke kontakt? sjekk for mottatt melding innen 24 timer
                 if (!$kontakt) {
                     $expire = time() - 86400;
                     $result2 = \Kofradia\DB::get()->query("\n\t\t\t\t\t\t\tSELECT MAX(ir2.ir_restrict_im_time)\n\t\t\t\t\t\t\tFROM inbox_rel AS ir1, inbox_rel AS ir2\n\t\t\t\t\t\t\tWHERE ir1.ir_up_id = {$row['up_id']} AND ir1.ir_it_id = ir2.ir_it_id AND ir2.ir_up_id = " . login::$user->player->id . " AND ir1.ir_deleted = 0");
                     // for lenger enn 24 timer siden? --> kan ikke sende melding
                     if ($result2->rowCount() == 0 || $result2->fetchColumn(0) < $expire) {
                         $this->remove_player($row);
                         $this->errors[] = '<user id="' . $row['up_id'] . '" /> kan ikke legges til som mottaker fordi spilleren er reservert mot dette. For å kunne sende melding til denne spilleren må du være i kontaklisten til personen, eller ha mottatt en melding fra personen i løpet av de siste 24 timene.';
                         putlog("NOTICE", "%bMELDING SPERRET%b: %u" . login::$user->player->data['up_name'] . "%u forsøkte å sende melding til %u{$row['up_name']}%u men var ikke i kontaktlisten!");
                         // lagre logg
                         $file = GAMELOG_DIR . "/message_reject_" . date("Ymd_His") . ".log";
                         $fh = @fopen($file, "w");
                         if ($fh) {
                             fwrite($fh, "Melding fra " . login::$user->player->data['up_name'] . " (ID: " . login::$user->player->id . ")\n\n\n" . print_r($_POST, true));
                             fclose($fh);
                             putlog("NOTICE", "%c4%bMESSAGE LOG SAVED TO %u{$file}%u");
                         } else {
                             putlog("NOTICE", "%c0,4%bERROR SAVING MESSAGE LOG TO FILE {$file}");
                         }
                         continue;
                     }
                 }
             }
             // kan sende melding
             $receivers[] = $row;
             // blokkert men vi er crew? (testet ovenfor hvis man ikke var crew)
             if ($row['uc_id']) {
                 $info = $row['uc_info'];
                 $reason = game::bb_to_html($info);
                 $reason = empty($reason) ? '' : ' Begrunnelse: ' . $reason;
                 $this->infos[] = '<user id="' . $row['up_id'] . '" /> har egentlig blokkert deg.' . $reason;
             }
         }
     }
     $this->receivers = $receivers;
 }
示例#14
0
}
$q = $_POST['q'];
// limit
$limit = intval(min(100, max(1, postval("limit", 10))));
// ekskluder?
$exclude = "";
$exclude_ids = array();
if (isset($_POST['exclude'])) {
    $exclude_ids = array_unique(array_map("intval", explode(",", $_POST['exclude'])));
    if (count($exclude_ids) > 0) {
        $exclude = "up_id NOT IN (" . implode(",", $exclude_ids) . ") AND ";
    }
}
// ignorere egne deaktiverte spillere?
if (isset($_POST['is'])) {
    $exclude .= "up_u_id != " . login::$user->id . " AND ";
}
// hent brukere
$q2 = \Kofradia\DB::quote(str_replace("_", "\\_", $q));
$result = \Kofradia\DB::get()->query("SELECT SQL_CALC_FOUND_ROWS up_id, up_name, up_access_level FROM users_players WHERE {$exclude}up_name LIKE {$q2} ORDER BY LENGTH(up_name), up_name LIMIT {$limit}");
$result2 = \Kofradia\DB::get()->query("SELECT FOUND_ROWS()");
$num = $result2->fetchColumn(0);
// logg
putlog("LOG", "%c3%bFINN-SPILLER:%b%c %u" . login::$user->player->data['up_name'] . "%u søkte etter %u{$q}%u!");
// xml
$data = '<userlist query="' . htmlspecialchars($q) . '" limit="' . $limit . '" results="' . $num . '">';
while ($row = $result->fetch()) {
    $data .= '<user up_id="' . $row['up_id'] . '" up_name="' . htmlspecialchars($row['up_name']) . '">' . htmlspecialchars(game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level'])) . '</user>';
}
$data .= '</userlist>';
ajax::xml($data);
示例#15
0
文件: crewet.php 项目: Kuzat/kofradia
            ess::$b->page->add_message('Brukeren til <user id="' . $up['up_id'] . '" /> er deaktivert. Endringer må gjøres manuelt.', "error");
            redirect::handle();
        }
        // er spilleren deaktivert?
        if ($up['up_access_level'] == 0) {
            ess::$b->page->add_message('Spilleren <user id="' . $up['up_id'] . '" /> er deaktivert. Endringer må gjøres manuelt.', "error");
            redirect::handle();
        }
        // overfør nivå
        \Kofradia\DB::get()->exec("UPDATE users, users_players SET up_access_level = u_access_level WHERE u_active_up_id = up_id AND up_id = {$up['up_id']} AND u_access_level != 0 AND up_access_level != 0");
        ess::$b->page->add_message('Tilgangsnivået til brukeren <user id="' . $up['up_id'] . '" /> ble overført til spilleren.');
        // ranklista
        \Kofradia\DB::get()->exec("UPDATE users, users_players_rank SET upr_up_access_level = u_access_level WHERE upr_up_id = {$up['up_id']} AND upr_up_id = u_active_up_id");
        ranklist::update();
        // logg
        putlog("CREWCHAN", "TILGANGSNIVÅ OVERFØRT: Tilgangsnivået til {$up['up_name']} ble overført fra brukeren (nivå: {$up['u_access_level']}) til spilleren (gammelt nivå: {$up['up_access_level']}).");
        redirect::handle();
    }
    $result = \Kofradia\DB::get()->query("\n\t\tSELECT u_id, u_access_level, up_access_level, up_id, up_name, up_last_online\n\t\tFROM users, users_players\n\t\tWHERE u_active_up_id = up_id AND up_u_id = u_id AND u_access_level != up_access_level AND (up_access_level != 0 || u_access_level != 1)\n\t\tORDER BY up_name");
    if ($result->rowCount() > 0) {
        $admin = access::has("admin");
        echo '
<div class="bg1_c medium">
	<h1 class="bg1">Forskjell mellom brukernivå og spillernivå<span class="left2"></span><span class="right2"></span></h1>
	<div class="bg1">
		<boxes />' . ($admin ? '
		<form action="" method="post">' : '') . '
		<table class="table ' . ($admin ? 'tablemt' : 'tablem') . ' center">
			<thead>
				<tr>
					<th>U_ID</th>
示例#16
0
 /**
  * Internt: Legg til en rapportering
  * @param int $up_id
  * @param int $type
  * @param int $type_id
  * @param string $message
  * @return int r_id
  */
 private static function add($up_id, $type, $type_id, $message)
 {
     global $__server;
     // sørg for at brukeren er logget inn
     if (!login::$logged_in) {
         throw new HSException("Brukeren er ikke logget inn.");
     }
     // samle sammen data
     $source_up_id = intval(login::$user->player->id);
     $up_id = intval($up_id);
     $type = intval($type);
     $type_id = intval($type_id);
     $message = \Kofradia\DB::quote($message);
     // legg til
     \Kofradia\DB::get()->exec("INSERT INTO rapportering SET r_source_up_id = {$source_up_id}, r_up_id = {$up_id}, r_type = {$type}, r_type_id = {$type_id}, r_time = " . time() . ", r_note = {$message}");
     $id = \Kofradia\DB::get()->lastInsertId();
     // melding på IRC
     putlog("CREWCHAN", "%bNY RAPPORTERING:%b {$__server['path']}/crew/rapportering");
     // øk rapporteringstelleren
     tasks::increment("rapporteringer");
     // returner iden
     return $id;
 }
示例#17
0
 /** Redirecte */
 public static function handle($location = false, $from = NULL, $https = NULL)
 {
     global $__server, $_base;
     if ($from === NULL) {
         $from = self::CURRENT;
     }
     if ($location === false) {
         // refresh
         if (self::$location !== false) {
             $location = self::$location;
             $from = self::$from;
         } else {
             $location = $_SERVER['REQUEST_URI'];
             //$location = PHP_SELF;
             $from = self::SERVER;
         }
     }
     // prefix
     $prefix = (HTTPS && $https !== false || $https) && $__server['https_support'] ? $__server['https_path'] : $__server['http_path'];
     // fra sideroot
     if ($from == self::ROOT) {
         if (mb_substr($location, 0, 1) != "/") {
             $location = "/" . $location;
         }
         $location = $prefix . $__server['relative_path'] . $location;
     } elseif ($from == self::SERVER) {
         if (mb_substr($location, 0, 1) != "/") {
             $location = "/" . $location;
         }
         $location = $prefix . $location;
     } elseif ($from != self::ABSOLUTE) {
         $p = str_replace("\\", "/", dirname(PHP_SELF));
         if ($p == "/") {
             $p = "";
         }
         if (mb_substr($location, 0, 1) != "/") {
             $location = "/" . $location;
         }
         $location = $prefix . $p . $location;
     }
     // definer brukernavnet
     $user = login::$logged_in ? login::$user->player->data['up_name'] : false;
     if (empty($user)) {
         if (defined("AUTOSCRIPT")) {
             $user = "******";
         } else {
             $user = "******";
         }
     }
     // lagre logg
     putlog("INT", "(" . str_pad($_SERVER['REMOTE_ADDR'], 15, "_") . ") (" . str_pad($user, 15, "_") . ") (REDIRECT) (" . str_pad($_SERVER['REQUEST_METHOD'], 4, "_") . ") (http" . (isset($_SERVER["SERVER_PORT_SECURE"]) ? 's' : '') . "://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}) for {$location}");
     // oppdater brukerinfo
     if (login::$logged_in) {
         \Kofradia\DB::get()->exec("UPDATE users_players SET up_hits_redirect = up_hits_redirect + 1 WHERE up_id = " . login::$user->player->id);
         \Kofradia\DB::get()->exec("UPDATE users_hits SET uhi_hits_redirect = uhi_hits_redirect + 1 WHERE uhi_up_id = " . login::$user->player->id . " AND uhi_secs_hour = " . login::$info['secs_hour']);
     } else {
         $date = $_base->date->get()->format("Y-m-d");
         // oppdater
         \Kofradia\DB::get()->exec("\n\t\t\t\tINSERT INTO stats_daily SET sd_date = '{$date}', sd_hits_redirect_g = 1\n\t\t\t\tON DUPLICATE KEY UPDATE sd_hits_redirect_g = sd_hits_redirect_g + 1");
     }
     // send til siden
     @header("Location: {$location}");
     @ob_clean();
     die('<HTML><HEAD><TITLE>302 Found</TITLE></HEAD><BODY><H1>Found</H1>You have been redirected <A HREF="' . $location . '">here</A>.<P></BODY></HTML>');
 }
示例#18
0
文件: loggut.php 项目: Kuzat/kofradia
<?php

require "base.php";
global $_base;
// kontroller link
if (getval("sid") != login::$info['ses_id']) {
    $_base->page->add_message("Ugyldig inntasting. Prøv på nytt.", "error");
    $_base->page->load();
}
// loggmelding
putlog("NOTICE", "%c5%bLOGG UT%b%c: (%u{$_SERVER['REMOTE_ADDR']}%u) %u" . login::$user->player->data['up_name'] . "%u (" . login::$user->data['u_email'] . ") ({$_SERVER['HTTP_USER_AGENT']})");
// logg ut
login::logout();
redirect::handle("");
示例#19
0
文件: Option.php 项目: Kuzat/kofradia
 /**
  * Try to attack a specific player
  *
  * @param array Data about the player
  * @param int Cash to get
  * @return bool|null True on success
  */
 protected function handleSuccessPlayer($player, $cash)
 {
     $rank = \Kofradia\Game\Rank\Points::getRank($player['up_points']);
     $affect = $this->ut->getAffectedTable($rank);
     // can not have too little energy
     if ($player['up_energy'] < $affect['energy'] * 2) {
         return;
     }
     // now take money
     $a = \Kofradia\DB::get()->prepare("\n\t\t\tUPDATE users_players\n\t\t\tSET up_bank = IF(up_cash < ?, up_bank - ?, up_bank),\n\t\t\t\tup_cash = IF(up_cash >= ?, up_cash - ?, up_cash)\n\t\t\tWHERE up_id = ? AND (up_cash >= ? OR up_bank >= ?)");
     if (!$a->execute(array($cash, $cash, $cash, $cash, $player['up_id'], $cash, $cash))) {
         // did not succeed
         return;
     }
     $this->result->up = \player::get($player['up_id']);
     $this->result->cashLost = $cash;
     $this->result->fromBank = $this->result->up->data['up_cash'] < $cash;
     // TODO: this cannot be checked this way?
     // notify victim
     $this->result->up->add_log("utpressing", $this->ut->up->id, $cash);
     // log
     putlog("SPAMLOG", "%c11%bUTPRESSING:%b%c %u{$this->ut->up->data['up_name']}%u presset %u{$this->result->up->data['up_name']}%u for %u" . \game::format_cash($cash) . "%u" . ($this->result->fromBank ? ' (fra bankkonto)' : ''));
     \Kofradia\DB::get()->prepare("\n\t\t\tINSERT INTO utpressinger\n\t\t\tSET\n\t\t\t\tut_action_up_id = ?,\n\t\t\t\tut_affected_up_id = ?,\n\t\t\t\tut_b_id = ?,\n\t\t\t\tut_time = ?")->execute(array($this->ut->up->id, $this->result->up->id, $this->ut->up->data['up_b_id'], time()));
     // the victim always looses energy
     // but only health if the money comes from the hand
     // (don't really know why we made it this way)
     $this->result->up->energy_use($affect['energy']);
     if (!$this->result->fromBank) {
         $this->result->attack = $this->result->up->health_decrease($affect['health'], $this->ut->up, \player::ATTACK_TYPE_UTPRESSING);
     }
     return true;
 }
示例#20
0
文件: index.php 项目: Kuzat/kofradia
			</dl>
			<h3 class="c">
				' . show_sbutton("Hent informasjon") . '
			</h3>';
    }
    echo '
		</form>
	</div>
</div>';
} else {
    $wpInfo = $result->fetch();
    // fjerne fra Kofradia kontoen?
    if (isset($_POST['wpFjern'])) {
        \Kofradia\DB::get()->exec("DELETE FROM stats_whatpulse WHERE sw_up_id = " . $player->id);
        $_base->page->add_message("WhatPulse informasjonen er nå fjernet fra din konto.");
        putlog("NOTICE", "%c12%bWHATPULSE-FJERNING:%b%c (%u" . $player->data['up_name'] . "%u) fjernet WhatPulse fra sin profil (WPID: %u{$wpInfo['sw_userid']}%u).");
        redirect::handle();
    }
    $wp = new whatpulse($wpInfo['sw_userid']);
    $wp->set_user_data($wpInfo);
    $wp->update();
    // les data (XML)
    if (!$wp->update()) {
        echo '
<h1>WhatPulse</h1>
<div style="width: 300px" class="center">
	<div class="section">
		<h3>Feil oppstått med WhatPulse</h3>
		<p>Noe gikk feil ved henting og lesing av data fra WhatPulse serveren.</p>
		<p>Du kan forsøke å laste inn data med en annen brukerkonto ved å fjerne tilknytningen til WhatPulse og deretter legge den til på nytt.</p>
		<form action="" method="post">
示例#21
0
<?php

require dirname(dirname(__FILE__)) . "/essentials.php";
$user = getenv("USER");
try {
    @putlog("CREWCHAN", "%bPRODUCTION PULL:%b %u{$user}%u oppdaterte koden mot master.");
} catch (Exception $e) {
}
try {
    @putlog("INFO", "%bPRODUCTION PULL:%b %u{$user}%u oppdaterte koden mot master.");
} catch (Exception $e) {
}
示例#22
0
 /**
  * Oppdater anti-bot status - for å loggføre de som bruker lang tid mellom anti-bot handlingene
  */
 public function update_status($step, $param = NULL)
 {
     global $__server;
     $n = time();
     // steps:
     //   redir
     //   new_img
     //   new_img_wait
     //   test_init
     //   test_repeat
     //   failed
     //   success
     // har vi noe status fra før?
     if (isset($_SESSION[$__server['session_prefix'] . 'antibot_status'][$this->name])) {
         $p = array_reverse($_SESSION[$__server['session_prefix'] . 'antibot_status'][$this->name]);
         if (count($p) > 6) {
             putlog("ABUSE", "%c10%bANTIBOT-LOG%b: %u" . login::$user->player->data['up_name'] . "%u har utført mange forskjellige handlinger på rad uten å ha fullført anti-boten (%u{$this->name}%u) - handlingslogg:");
             putlog("ABUSE", "%c10%bANTIBOT-LOG%b: {$step}");
             $time_last = $n;
             foreach ($p as $row) {
                 $time = $time_last - $row['time'];
                 $time_last = $row['time'];
                 putlog("ABUSE", "%c10%bANTIBOT-LOG%b: {$time} sekunder --> {$row['step']}");
             }
             $_SESSION[$__server['session_prefix'] . 'antibot_status'][$this->name] = array_slice($_SESSION[$__server['session_prefix'] . 'antibot_status'][$this->name], -2);
         }
         $last = $p[0];
         $last_time = $n - $last['time'];
         // utført anti-bot, men forrige handling var ikke init/repeat?
         if ($step == "success" && $last['step'] != "test_init" && $last['step'] != "test_repeat") {
             putlog("ABUSE", "%c10%bANTIBOT-LOG%b: %u" . login::$user->player->data['up_name'] . "%u utførte anti-bot vellykket, men forrige handling var ikke å vise anti-bot testen ({$last_time} sekunder siden forrige handling: {$last['step']}) (%u{$this->name}%u)");
         } elseif ($last_time > 60 && $step == "success") {
             putlog("ABUSE", "%c10%bANTIBOT-LOG%b: %u" . login::$user->player->data['up_name'] . "%u utførte anti-bot vellykket, men brukte lang tid ({$last_time} sekunder siden forrige handling: {$last['step']}) (%u{$this->name}%u)");
         }
     }
     // fjerne?
     if ($step == "success") {
         unset($_SESSION[$__server['session_prefix'] . 'antibot_status'][$this->name]);
     } else {
         $_SESSION[$__server['session_prefix'] . 'antibot_status'][$this->name][] = array("step" => $step, "time" => time());
     }
     switch ($step) {
         case "redir":
             // trenger sjekk
             putlog("ANTIBOT", "%c10%bVIDERESENDING%b: %u" . login::$user->player->data['up_name'] . "%u blir nå videresendt til anti-bot testen %u{$this->name}%u");
             break;
         case "new_img_wait":
             putlog("ANTIBOT", "%c8%bNYE BILDER%b: %u" . login::$user->player->data['up_name'] . "%u ba om nye bilder for %u{$this->name}%u men må vente %u{$param}%u sekunder");
             break;
         case "new_img":
             putlog("ANTIBOT", "%c9%bNYE BILDER%b: %u" . login::$user->player->data['up_name'] . "%u ba om nye bilder for %u{$this->name}%u");
             break;
         case "test_repeat":
             putlog("ANTIBOT", "%c13%bSJEKK%b: %u" . login::$user->player->data['up_name'] . "%u viste anti-boten for %u{$this->name}%u på nytt");
             break;
         case "test_init":
             putlog("ANTIBOT", "%bSJEKK OPPRETT BILDER%b: %u" . login::$user->player->data['up_name'] . "%u opprettet anti-bot bilder for %u{$this->name}%u");
             break;
         case "failed":
             putlog("ANTIBOT_ERROR", "%c4%bSJEKK MISLYKKET%b: %u" . login::$user->player->data['up_name'] . "%u mislykket anti-boten ({$this->name}) med %u{$param}%u " . fword("riktig alternativ", "riktige alternativer", $param));
             break;
         case "success":
             putlog("ANTIBOT", "%bSJEKK VELLYKKET%b: %u" . login::$user->player->data['up_name'] . "%u utførte anti-boten for %u{$this->name}%u");
             break;
     }
 }
示例#23
0
文件: lock.php 项目: Kuzat/kofradia
    /**
     * Behandle nytt passord
     */
    protected function solve_pass()
    {
        // lagre passord
        if (isset($_POST['save_pass'])) {
            // kontroller alle feltene
            $pass_new = trim(postval("pass_new"));
            $pass_repeat = trim(postval("pass_repeat"));
            // kontroller at alle feltene er fylt ut
            if ($pass_new == "" || $pass_repeat == "") {
                ess::$b->page->add_message("Alle feltene må fylles ut.", "error");
            } elseif ($pass_new != $pass_repeat) {
                ess::$b->page->add_message("De nye passordene var ikke like.", "error");
            } elseif (mb_strlen($pass_new) < 6) {
                ess::$b->page->add_message("Det nye passordet må inneholde minimum 6 tegn.", "error");
            } elseif (password::validate($pass_new, password::LEVEL_LOGIN) != 0) {
                ess::$b->page->add_message("Du må velge et vanskeligere passord.", "error");
            } elseif (password::verify_hash($pass_new, login::$user->data['u_bank_auth'], 'bank_auth')) {
                ess::$b->page->add_message("Velg et annet passord enn du har i banken.");
            } else {
                \Kofradia\DB::get()->exec("UPDATE users SET u_pass = "******", u_pass_change = NULL WHERE u_id = " . login::$user->id);
                // melding
                ess::$b->page->add_message("Du har nå lagret et nytt passord for brukeren din.");
                putlog("NOTICE", "%bPASSORD%b: %u" . login::$user->player->data['up_name'] . "%u lagret nytt passord på sin bruker (var nullstilt). " . ess::$s['path'] . "/min_side?u_id=" . login::$user->id);
                // send ut e-post for å informere
                $email = new email();
                $email->text = 'Hei,

Det er nå blitt opprettet et nytt passord fra ' . $_SERVER['REMOTE_ADDR'] . ' (' . $_SERVER['HTTP_USER_AGENT'] . ').

Bruker ID: ' . login::$user->data['u_id'] . '
E-post: ' . login::$user->data['u_email'] . '

Vi sender selvfølgelig ikke ditt nye passord på e-post. Det skal du kunne selv!

--
www.kofradia.no';
                $email->send(login::$user->data['u_email'], "Nytt passord");
                // logg ut alle andre brukere
                \Kofradia\DB::get()->exec("UPDATE sessions SET ses_active = 0, ses_logout_time = " . time() . " WHERE ses_active = 1 AND ses_u_id = " . login::$user->id . " AND ses_id != " . login::$info['ses_id']);
                redirect::handle();
            }
        }
        ess::$b->page->add_js_domready('$("lockpass").focus();');
        echo '
<div class="bg1_c small">
	<h1 class="bg1">Lagre nytt passord<span class="left"></span><span class="right"></span></h1>
	<p class="h_left"><a href="' . htmlspecialchars($this->url) . '">Tilbake</a></p>
	<div class="bg1">
		<p>Ditt passord har blitt nullstilt. Du vil ikke kunne logge inn uten å måtte benytte <i>glemt passord</i> funksjonen før du har opprettet et nytt passord.</p>
		<form action="" method="post" autocomplete="off">
			<dl class="dd_right dl_2x center" style="width: 80%">
				<dt>Nytt passord</dt>
				<dd><input type="password" class="styled w100" name="pass_new" id="lockpass" /></dd>
				<dt>Gjenta nytt passord</dt>
				<dd><input type="password" class="styled w100" name="pass_repeat" /></dd>
			</dl>
			<p class="c">' . show_sbutton("Lagre passordet", 'name="save_pass"') . '</p>
		</form>
	</div>
</div>';
    }
示例#24
0
文件: bb.php 项目: Kuzat/kofradia
<?php

require "../../app/ajax.php";
// mangler tekst?
if (!isset($_POST['text'])) {
    ajax::text("ERROR:MISSING", ajax::TYPE_INVALID);
}
global $__server;
ajax::essentials();
// logg
$name = login::$logged_in ? login::$user->player->data['up_name'] : '*ukjent spiller*';
$ref = isset($_SERVER['HTTP_REFERER']) ? ' - referer: ' . $_SERVER['HTTP_REFERER'] : ' - ingen referer';
putlog("LOG", "%c3%bMIN-STATUS:%b%c %u{$name}%u hentet HTML for BB-kode{$ref}");
// sett opp html
$bb = parse_html(game::bb_to_html($_POST['text']));
// send raw html?
if (isset($_POST['plain'])) {
    ajax::text($bb);
}
// send inni xml element
ajax::xml('<content>' . htmlspecialchars($bb) . '</content>');
<?php

global $files;
// kjør session for å unngå feil når player::get lastes
session_start();
// eksporter databasen med exportscriptet
require "export_to_devdb.php";
// initialiser crewfiles systemet med SYSTEM-brukeren
crewfiles::init(player::get(SYSTEM_USER_ID), true);
// hvilke filer i crewfiles som skal oppdateres
$data = array(array(190, $files[0], "main"));
// oppdaterer filene i crewfiles
foreach ($data as $r) {
    // hent filobjekt i crewfiles
    $file = crewfiles::get_file($r[0]);
    if (!$file) {
        echo "Fant ikke filen med ID {$r[0]}\n";
        continue;
    }
    echo "Kjører {$r[1]} gjennom gzip.\n";
    shell_exec("gzip -9 " . escapeshellarg($r[1]));
    $r[1] .= ".gz";
    echo "Laster opp {$r[1]} til crewfiles...\n";
    $revision = $file->upload($r[1], "Automatisk eksportert", "application/x-gzip-compressed", $r[1], true);
    $path = ess::$s['spath'] . '/crewstuff/f/rev/' . $revision->id . '-' . urlencode(crewfiles::generate_tagname($revision->info['cfr_title']));
    putlog("CREWCHAN", "Dev-database {$r[2]}: {$path}");
    echo "Lastet opp!\n";
    // slett filen
    unlink($r[1]);
}
示例#26
0
 /**
  * Deaktiver brukeren
  */
 public function deactivate($reason, $note, player $by_up = null)
 {
     global $_game, $__server;
     if (!$by_up) {
         $by_up = $this->player;
     }
     // er ikke aktivert?
     if ($this->data['u_access_level'] == 0) {
         return false;
     }
     // deaktivere spilleren?
     if ($this->player->active) {
         $this->player->deactivate($reason, $note, $by_up);
     }
     $this->data['u_access_level'] = 0;
     $this->data['u_deactivated_time'] = time();
     $this->data['u_deactivated_up_id'] = $by_up->id;
     $this->data['u_deactivated_reason'] = empty($reason) ? NULL : $reason;
     $this->data['u_deactivated_note'] = empty($note) ? NULL : $note;
     // deaktiver brukeren
     $a = \Kofradia\DB::get()->exec("UPDATE users SET u_access_level = 0, u_deactivated_time = {$this->data['u_deactivated_time']}, u_deactivated_up_id = {$by_up->id}, u_deactivated_reason = " . \Kofradia\DB::quote($reason) . ", u_deactivated_note = " . \Kofradia\DB::quote($note) . " WHERE u_id = {$this->id} AND u_access_level != 0");
     if ($a == 0) {
         return false;
     }
     // logg ut alle øktene
     \Kofradia\DB::get()->exec("UPDATE sessions SET ses_active = 0, ses_logout_time = " . time() . " WHERE ses_u_id = {$this->id} AND ses_active = 1");
     if ($by_up->id == $this->player->id) {
         $info = 'deaktiverte seg selv';
     } else {
         $info = 'ble deaktivert';
         if (login::$logged_in) {
             $info .= ' av ' . login::$user->player->data['up_name'];
         }
     }
     putlog("CREWCHAN", "%bDeaktivering%b: Brukeren {$this->data['u_email']} ({$this->player->data['up_name']}) {$info} {$__server['path']}/min_side?u_id={$this->id}");
     return true;
 }
示例#27
0
 /**
  * Opprett auksjon for FF
  */
 public static function create_auksjon_ff(ff $ff, $start = null, $end = null)
 {
     $time = time();
     if (!$start) {
         $start = $time;
     } else {
         $start = (int) $start;
     }
     if (!$end) {
         // varighet er til 21:00 med minimum 12 timer
         $date = ess::$b->date->get();
         $date->setTime(21, 0, 0);
         $min_time = 3600 * 12;
         if ($date->format("U") < $time + $min_time) {
             $date->modify("+1 day");
         }
         $expire = $date->format("U");
     } else {
         $expire = (int) $end;
     }
     // sett opp params for ff_id
     $params = new params();
     $params->update("ff_id", $ff->id);
     // opprett auksjonen
     \Kofradia\DB::get()->exec("INSERT INTO auksjoner SET a_type = " . self::TYPE_FIRMA . ", a_title = " . \Kofradia\DB::quote($ff->data['ff_name']) . ", a_start = {$start}, a_end = {$expire}, a_bid_start = 1000000, a_bid_jump = 500000, a_active = 1, a_params = " . \Kofradia\DB::quote($params->build()));
     $a_id = \Kofradia\DB::get()->lastInsertId();
     // logg
     putlog("INFO", "%bAUKSJON:%b Auksjon for %u" . $ff->data['ff_name'] . "%u ble opprettet " . ess::$s['spath'] . "/auksjoner?a_id={$a_id}");
     // live-feed
     livefeed::add_row('<a href="' . ess::$s['rpath'] . '/auksjoner?a_id=' . $a_id . '">Auksjon</a> for <a href="' . ess::$s['rpath'] . '/ff/?ff_id=' . $ff->id . '">' . htmlspecialchars($ff->data['ff_name']) . '</a> ble opprettet.');
     self::update_cache();
 }
示例#28
0
文件: profil.php 项目: Kuzat/kofradia
}
ess::$b->page->add_title($player->data['up_name']);
// moderasjon
if (access::has("crewet", NULL, NULL, true)) {
    // javascript
    ess::$b->page->add_js_domready('
	new KeySequence("esc,M,esc", function()
	{
		navigateTo(relative_path+"/min_side?up_id=' . $player->id . '&a=crew");
	});');
}
// loggfør visning
if (!login::$logged_in) {
    putlog("PROFILVIS", "%c6%bVIS-PROFIL:%b%c Ikke-innlogget-person viste profilen til %u{$player->data['up_name']}%u (up_id: " . $player->id . ")");
} elseif (login::$user->player->id != $player->id) {
    putlog("PROFILVIS", "%c6%bVIS-PROFIL:%b%c %u" . login::$user->player->data['up_name'] . "%u viste profilen til %u{$player->data['up_name']}%u (up_id: " . $player->id . ")");
}
// legg til som besøkende til denne profilen
if (!login::$logged_in || !access::is_nostat() && login::$user->id != $player->data['up_u_id']) {
    // anonym
    if (!login::$logged_in) {
        $siste = $player->data['up_profile_anon_time'];
        $player->data['up_profile_anon_time'] = time();
        \Kofradia\DB::get()->exec("UPDATE users_players SET up_profile_anon_time = {$player->data['up_profile_anon_time']} WHERE up_id = {$player->id}");
    } elseif (!access::is_nostat() && login::$user->id != $player->data['up_u_id']) {
        // når besøkte vi profilen sist?
        $siste = 0;
        $result = \Kofradia\DB::get()->query("SELECT time FROM users_views WHERE uv_up_id = {$player->id} AND uv_visitor_up_id = " . login::$user->player->id);
        if ($result->rowCount()) {
            $siste = $result->fetchColumn(0);
        }
示例#29
0
    }
}
set_time_limit(0);
define("SCHEDULER", true);
define("SCHEDULER_REPEATING", true);
sess_start();
echo "Utfører rutine regelmessig.\n";
// kjør rutiner (autoload klassen)
ess::$b->scheduler = new scheduler();
// utfør rutiner regelmessig
while (true) {
    // finn ut når neste rutine skal utføres
    $result = \Kofradia\DB::get()->query("\n\t\tSELECT GREATEST(s_next, s_expire) next\n\t\tFROM scheduler\n\t\tWHERE s_active = 1\n\t\tORDER BY next\n\t\tLIMIT 1");
    $row = $result->fetch();
    $next = false;
    if ($row) {
        $next = $row['next'];
    }
    $t = time();
    $s = ess::$b->date->get($t)->format("s");
    $max = $t + 60 - $s;
    if (!$next || $next > $max) {
        $next = $max;
    }
    printf("Neste: %s\n", ess::$b->date->get($next)->format(date::FORMAT_SEC));
    // sov
    $sleep = max(0.1, $next - microtime(true));
    putlog("LOG", sprintf("Venter %.2f sekunder til neste.\n", $sleep));
    usleep($sleep * 1000000);
    ess::$b->scheduler->__construct();
}
示例#30
0
    return;
}
$list = "(" . implode(",", $ff_ids) . ")";
\Kofradia\DB::get()->beginTransaction();
// deaktiver referansesjekk
\Kofradia\DB::get()->exec("/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS */");
\Kofradia\DB::get()->exec("/*!40014 SET UNIQUE_CHECKS=0 */");
\Kofradia\DB::get()->exec("/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS */");
\Kofradia\DB::get()->exec("/*!40014 SET FOREIGN_KEY_CHECKS=0 */");
// flytt all informasjon om familiene
\Kofradia\DB::get()->exec("INSERT INTO " . DBNAMEARCHIVE . ".ff SELECT * FROM ff WHERE ff_id IN {$list}");
\Kofradia\DB::get()->exec("INSERT INTO " . DBNAMEARCHIVE . ".ff_bank_log SELECT * FROM ff_bank_log WHERE ffbl_ff_id IN {$list}");
\Kofradia\DB::get()->exec("INSERT INTO " . DBNAMEARCHIVE . ".ff_log SELECT * FROM ff_log WHERE ffl_ff_id IN {$list}");
\Kofradia\DB::get()->exec("INSERT INTO " . DBNAMEARCHIVE . ".ff_members SELECT * FROM ff_members WHERE ffm_ff_id IN {$list}");
\Kofradia\DB::get()->exec("INSERT INTO " . DBNAMEARCHIVE . ".f_forum_log\n\tSELECT f_forum_log.* FROM f_forum_log JOIN f_forum_topics ON ffl_fft_id = fft_id\n\tWHERE fft_ff_id IN {$list}");
\Kofradia\DB::get()->exec("INSERT INTO " . DBNAMEARCHIVE . ".f_forum_replies\n\tSELECT f_forum_replies.* FROM f_forum_replies JOIN f_forum_topics ON ffr_fft_id = fft_id\n\tWHERE fft_ff_id IN {$list}");
\Kofradia\DB::get()->exec("INSERT INTO " . DBNAMEARCHIVE . ".f_forum_topics\n\tSELECT f_forum_topics.* FROM f_forum_topics\n\tWHERE fft_ff_id IN {$list}");
// slett gammel informasjon
\Kofradia\DB::get()->exec("DELETE FROM ff WHERE ff_id IN {$list}");
\Kofradia\DB::get()->exec("DELETE FROM ff_bank_log WHERE ffbl_ff_id IN {$list}");
\Kofradia\DB::get()->exec("DELETE FROM ff_log WHERE ffl_ff_id IN {$list}");
\Kofradia\DB::get()->exec("DELETE FROM ff_members WHERE ffm_ff_id IN {$list}");
\Kofradia\DB::get()->exec("DELETE f_forum_log FROM f_forum_log JOIN f_forum_topics ON ffl_fft_id = fft_id WHERE fft_ff_id IN {$list}");
\Kofradia\DB::get()->exec("DELETE f_forum_replies FROM f_forum_replies JOIN f_forum_topics ON ffr_fft_id = fft_id WHERE fft_ff_id IN {$list}");
\Kofradia\DB::get()->exec("DELETE f_forum_topics FROM f_forum_topics WHERE fft_ff_id IN {$list}");
// aktiver refernsesjekk
\Kofradia\DB::get()->exec("/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */");
\Kofradia\DB::get()->exec("/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */");
\Kofradia\DB::get()->commit();
putlog("CREWCHAN", "%bArkivering:%b Informasjon om broderskapene " . implode(", ", $ff_names) . " ble flyttet til arkivdatabasen.");