Globalna zmiana czasu w phpbb3

Gry potrzebujemy zmienić czas z zimowego na letni (lub odwrotnie) zmiana strefy czasowej w panelu administracyjnym nie jest wystarczająca. Użytkownicy którzy są już zarejestrowani muszą ręcznie samemu zmienić swoją strefę czasową w profilu użytkownika. Możemy im to ułatwić zmieniając globalnie wszystkim użytkownikom strefę czasową wykonując odpowiednio poniższe zapytania SQL:

Zmiana ustawień strefy czasowej w panelu administracji nie wystarczy. Różnice zauważą wtedy tylko goście. Zarejestrowani użytkownicy muszą samemu zmienić ustawienia swojego profilu (Moje konto => Ustawienia witryny). Mając dostęp do phpMyAdmina, możemy dokonać masowej zmiany czasu dla użytkowników, przez odpowiednie zapytanie SQL.

Zmiana czasu na zimowy:

UPDATE forum_users SET user_dst = 0 WHERE user_timezone = 1.00;

zmiana czasu na letni:

UPDATE forum_users SET user_dst = 1 WHERE user_timezone = 1.00;

Dodatkowo opakowałem oba SQL’e w procedury -> dzięki temu nie trzeba ich wklepywać od zera tylko wykonujemy procedurę.

 

 

funkcja generująca hasło

Często w naszych systemach potrzebujemy wygenerować hasło/hasła.

Napisałem przydatną funkcję generującą hasło – używam jej przy generowaniu haseł generatorem http://aljandor.unixstorm.org/pwgen/ oraz w innych miejscach.

/**
 * generowanie hasła
 * dostępne $zestawy znaków: 'l' - małe listery
                             'u' - duże litery
                             'd' - cyfry
                             's' - znaki specjalne
 * @param int $dlugosc
 * @param array $zestawy
 */
function generujHaslo($dlugosc=25, $zestawy=array('l','u','d','s'))
{
 $sets = array();
 if(in_array('l', $zestawy) !== false) 
 $sets[] = 'abcdefghjkmnpqrstuvwxyz'; 
 
 if(in_array('u', $zestawy) !== false) 
 $sets[] = 'ABCDEFGHJKMNPQRSTUVWXYZ';

 if(in_array('d', $zestawy) !== false)
 $sets[] = '23456789';

 if(in_array('s', $zestawy) !== false)
 $sets[] = '!@#$%&*?';
 

 $wszystkie = '';
 $haslo = '';
 
 foreach($sets as $set)
 {
 $haslo.= $set[array_rand(str_split($set))];
 $wszystkie .= $set;
 }
 $wszystkie = str_split($wszystkie);
 for($i = 0; $i < $dlugosc - count($sets); $i++)
 {
 $haslo .= $wszystkie[array_rand($wszystkie)];
 }
 $password = str_shuffle($haslo);
 
 return $haslo; 
}

przykładowe wywołanie:

echo generujHaslo(25, array('l', 'u','d','s'));

 

 

Gnokii – smsy z serwera

Niedawno wpadłem na pomysł wysyłania sms’ów bezpośrednio z serwera  – początkowo miały być to tylko alerty informujące o przerwie w dostępie do internetu lecz szybko rozwinąłem funkcjonalność do informowania mnie o braku zasilania na UPSie. Mój mogem to huawei e3131 + karta prepaid (polecam Play: http://www.play.pl/promocja/rok-waznosci-konta/). Ogólnie konfiguracja sprowadzała się zainstalowania aktualnego pakietu Gnokii oraz kliku przydatnych skryptów.
Przykładowa konfiguracja Gnokii służąca do wysyłania sms.

Konfiguracja:

[global]
model = AT
port = /dev/ttyUSB0
connection = serial

Testujemy czy gnokii wykryl poprawnie modem:

 #gnokii --identify
GNOKII Version 0.6.21
IMEI : *****
Manufacturer : huawei
Model : E3131
Product name : E3131
Revision : 21.157.11.00.264

jeśli wszystko jest ok, możemy zacząć wysyłkę sms 🙂

 

Skrypt realizujący wysyłkę:

#!/bin/sh
LOG="/var/log/sms/sms.log"
LOG_ALL="/var/log/sms/sms_all.log"

DATA=`date +%Y-%m-%d:%H:%M:%S`
MSG=$1
NUMER=$2

#wysyłka
echo "echo $MSG | gnokii --sendsms $NUMER" >> $LOG_ALL

#logowanie wysyłki
echo "$DATA SMS:$MSG DO: $NUMER" >> $LOG

Do tego wszystkiego przydał by się skrypt zakładający / zdejmujący locka – tutaj zależnie od potrzeb 🙂

Dokumentacja Gnokii: http://www.gnokii.org/docs.shtml

 

Edit (12.07.2015):
Instalowałem Gnokii na ruterze pracującym pod OpenWrt (taki sam model modemu). Instalacja jest bardzo prosta, analogiczna do instalacji przeprowadzonej na serwerze pracującym pod Debianem. Niestety nie obyło się bez drobnego problemu. System nie chciał wykryć modemu mimo obecność wszystkich potrzebnych sterowników USB. Pomocne okazało się rozwiazanie znalezione na tracu openwrt: https://dev.openwrt.org/ticket/16778

Tworzymy plik:

/etc/modules.d/60-usb-serial

z wpisem:

usbserial vendor=0x12d1 product=0x1c07

Dzięku temu system bez problemu wykrył mój E3131 🙂

 

informacyjnie

Blog powstał głównie z zamysłem prowadzenia notatnika – często coś gdzieś zrobię, a za pół roku potrzebuję do tego wrócić… Na stronie pojawiać się też będą informacje dotyczące sewisów których jestem wydawcą / operatorem.

test