Beispiel #1
0
/**
 * GUID生成算法
 *
 * 前10位为时间戳,精确到0.001s
 * 11-14位为机器名称(也可用ip)和 当前进程号做crc16编码
 * 15-17位为随机数
 * 18-20位为计数器
 *
 * @author luorenbin
 */
function guid()
{
    static $cal = 0;
    //计数器+1
    $cal++;
    $cal >= 4096 ? $cal = 1 : '';
    //毫秒保证时间的唯一
    $time_dec = 1259510400000.0;
    $micro = microtime(true) * 1000;
    $micro = $micro - $time_dec;
    $time = substr($micro, 0, 13);
    $time_str = dechex($time);
    //获取机器名称
    $dec1 = crc16(gethostname());
    //获取进程号
    $dec2 = posix_getpid();
    $proc_str = dechex($dec1 + $dec2);
    $proc_str = substr($proc_str, -4);
    //生成随机数2位
    $rand = dechex(mt_rand(0, 4095));
    //计数器3位
    $cal_str = dechex($cal);
    return sprintf('%010s%04s%03s%03s', $time_str, $proc_str, $rand, $cal_str);
}
Beispiel #2
0
 /**
  * loads user data for template processing 
  * 
  * @return void
  */
 public function loadAllUserData()
 {
     $userdata = array();
     $alluserdata = zb_UserGetAllStargazerData();
     $tariffspeeds = zb_TariffGetAllSpeeds();
     $tariffprices = zb_TariffGetPricesAll();
     $multinetdata = zb_MultinetGetAllData();
     $allcontracts = zb_UserGetAllContracts();
     $allcontracts = array_flip($allcontracts);
     $contractDates = $this->getContractDatesAll();
     $allphonedata = zb_UserGetAllPhoneData();
     $allrealnames = zb_UserGetAllRealnames();
     $alladdress = zb_AddressGetFulladdresslist();
     $allemails = zb_UserGetAllEmails();
     $allnasdata = zb_NasGetAllData();
     $allcfdata = cf_FieldsGetAll();
     $allpdata = zb_UserPassportDataGetAll();
     $curdate = curdate();
     $lastDocId = $this->getDocumentLastId();
     $newDocId = $lastDocId + 1;
     if ($this->altcfg['OPENPAYZ_REALID']) {
         $allopcustomers = zb_TemplateGetAllOPCustomers();
     }
     if (!empty($alluserdata)) {
         foreach ($alluserdata as $io => $eachuser) {
             $userdata[$eachuser['login']]['LOGIN'] = $eachuser['login'];
             $userdata[$eachuser['login']]['PASSWORD'] = $eachuser['Password'];
             $userdata[$eachuser['login']]['USERHASH'] = crc16($eachuser['login']);
             $userdata[$eachuser['login']]['TARIFF'] = $eachuser['Tariff'];
             @($userdata[$eachuser['login']]['TARIFFPRICE'] = $tariffprices[$eachuser['Tariff']]);
             $userdata[$eachuser['login']]['CASH'] = $eachuser['Cash'];
             $userdata[$eachuser['login']]['CREDIT'] = $eachuser['Credit'];
             $userdata[$eachuser['login']]['DOWN'] = $eachuser['Down'];
             $userdata[$eachuser['login']]['PASSIVE'] = $eachuser['Passive'];
             $userdata[$eachuser['login']]['AO'] = $eachuser['AlwaysOnline'];
             @($userdata[$eachuser['login']]['CONTRACT'] = $allcontracts[$eachuser['login']]);
             @($userdata[$eachuser['login']]['CONTRACTDATE'] = $contractDates[$eachuser['login']]['contractdate']);
             @($userdata[$eachuser['login']]['REALNAME'] = $allrealnames[$eachuser['login']]);
             @($userdata[$eachuser['login']]['ADDRESS'] = $alladdress[$eachuser['login']]);
             @($userdata[$eachuser['login']]['EMAIL'] = $allemails[$eachuser['login']]);
             @($userdata[$eachuser['login']]['PHONE'] = $allphonedata[$eachuser['login']]['phone']);
             @($userdata[$eachuser['login']]['MOBILE'] = $allphonedata[$eachuser['login']]['mobile']);
             //openpayz payment ID
             if ($this->altcfg['OPENPAYZ_REALID']) {
                 @($userdata[$eachuser['login']]['PAYID'] = $allopcustomers[$eachuser['login']]);
             } else {
                 @($userdata[$eachuser['login']]['PAYID'] = ip2int($eachuser['IP']));
             }
             //traffic params
             $userdata[$eachuser['login']]['TRAFFIC'] = $eachuser['D0'] + $eachuser['U0'];
             $userdata[$eachuser['login']]['TRAFFICDOWN'] = $eachuser['D0'];
             $userdata[$eachuser['login']]['TRAFFICUP'] = $eachuser['U0'];
             //net params
             @($userdata[$eachuser['login']]['IP'] = $eachuser['IP']);
             @($userdata[$eachuser['login']]['MAC'] = $multinetdata[$eachuser['IP']]['mac']);
             @($userdata[$eachuser['login']]['NETID'] = $multinetdata[$eachuser['IP']]['netid']);
             @($userdata[$eachuser['login']]['HOSTID'] = $multinetdata[$eachuser['IP']]['id']);
             //nas data
             @($usernas = zb_NasGetParams($multinetdata[$eachuser['IP']]['netid'], $allnasdata));
             @($userdata[$eachuser['login']]['NASID'] = $usernas['id']);
             @($userdata[$eachuser['login']]['NASIP'] = $usernas['nasip']);
             @($userdata[$eachuser['login']]['NASNAME'] = $usernas['nasname']);
             @($userdata[$eachuser['login']]['NASTYPE'] = $usernas['nastype']);
             if (isset($tariffspeeds[$eachuser['Tariff']])) {
                 $userdata[$eachuser['login']]['SPEEDDOWN'] = $tariffspeeds[$eachuser['Tariff']]['speeddown'];
                 $userdata[$eachuser['login']]['SPEEDUP'] = $tariffspeeds[$eachuser['Tariff']]['speedup'];
             } else {
                 //if no tariff speed defined zero speed by default
                 $userdata[$eachuser['login']]['SPEEDDOWN'] = 0;
                 $userdata[$eachuser['login']]['SPEEDUP'] = 0;
             }
             //passport data
             @($userdata[$eachuser['login']]['PBIRTH'] = $allpdata[$eachuser['login']]['birthdate']);
             @($userdata[$eachuser['login']]['PNUM'] = $allpdata[$eachuser['login']]['passportnum']);
             @($userdata[$eachuser['login']]['PDATE'] = $allpdata[$eachuser['login']]['passportdate']);
             @($userdata[$eachuser['login']]['PWHO'] = $allpdata[$eachuser['login']]['passportwho']);
             @($userdata[$eachuser['login']]['PCITY'] = $allpdata[$eachuser['login']]['pcity']);
             @($userdata[$eachuser['login']]['PSTREET'] = $allpdata[$eachuser['login']]['pstreet']);
             @($userdata[$eachuser['login']]['PBUILD'] = $allpdata[$eachuser['login']]['pbuild']);
             @($userdata[$eachuser['login']]['PAPT'] = $allpdata[$eachuser['login']]['papt']);
             //other document data
             @($userdata[$eachuser['login']]['CURDATE'] = $curdate);
             @($userdata[$eachuser['login']]['DOCID'] = $newDocId);
         }
     }
     $this->userData = $userdata;
 }
Beispiel #3
0
{
    //"CRC16_CCITT_FALSE"
    $crc = 0xffff;
    for ($i = 0; $i < strlen($data); ++$i) {
        $x = ($crc >> 8 ^ ord($data[$i])) & 0xff;
        $x ^= $x >> 4;
        $crc = ($crc << 8 ^ $x << 12 ^ $x << 5 ^ $x) & 0xffff;
    }
    return $crc;
}
if (isset($_GET["code"])) {
    $hashchars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ?!";
    //remove "bad" characters from the given code:
    $code = preg_replace("/[^_\\-\\/\\a-z0-9]/i", "", $_GET["code"]);
    //append code's crc16 to the code
    $crc = crc16($code);
    $code .= $hashchars[$crc & 0x3f];
    $code .= $hashchars[($crc & 0xfc0) >> 6];
    $code .= $hashchars[($crc & 0xf000) >> 12];
    //break the code into pieces of 6 chars
    //and calculate the checksum character for each piece
    $len = strlen($code);
    $new_code = "";
    for ($i = 0; $i < $len; $i += 6) {
        $bits = 0x2a;
        for ($j = 0; $j < 6 && $i + $j < $len; ++$j) {
            $byte = ord($code[$i + $j]);
            $bits = $bits ^ $byte;
            $new_code .= $code[$i + $j];
        }
        $new_code .= $hashchars[$bits % 64] . " ";
function decode_PICC_byte($data)
{
    static $crc, $packet;
    global $time;
    if ($data < 0) {
        if ($packet) {
            printf("PICC: packet=%s (%u) CRC=%s:[0x%04X]\n\n", strtoupper(bin2hex($packet)), strlen($packet), strlen($packet) > 2 ? $crc == 0xc316 ? 'OK' : 'FAILED' : 'NONE', $crc);
        }
        $packet = '';
        $crc = 0xffff;
    } else {
        $packet .= pack('C', $data);
        $crc = crc16($data, $crc);
        //	    printf("PICC: data=0x%02X crc=0x%04X\n",$data,$crc);
    }
}
/**
 *  Returns all data about current userbase
 *  which used for templatizing functions
 * 
 *  @return  array
 */
function zb_TemplateGetAllUserData()
{
    $altcfg = rcms_parse_ini_file(CONFIG_PATH . "alter.ini");
    $userdata = array();
    $alluserdata = zb_UserGetAllStargazerData();
    $tariffspeeds = zb_TariffGetAllSpeeds();
    $tariffprices = zb_TariffGetPricesAll();
    $multinetdata = zb_MultinetGetAllData();
    $allcontracts = zb_UserGetAllContracts();
    $allcontracts = array_flip($allcontracts);
    $allrealnames = zb_UserGetAllRealnames();
    $alladdress = zb_AddressGetFulladdresslist();
    $allemails = zb_UserGetAllEmails();
    $allnasdata = zb_NasGetAllData();
    $allcfdata = cf_FieldsGetAll();
    $allpdata = zb_UserPassportDataGetAll();
    if ($altcfg['OPENPAYZ_REALID']) {
        $allopcustomers = zb_TemplateGetAllOPCustomers();
    }
    if (!empty($alluserdata)) {
        foreach ($alluserdata as $io => $eachuser) {
            $userdata[$eachuser['login']]['login'] = $eachuser['login'];
            $userdata[$eachuser['login']]['password'] = $eachuser['Password'];
            $userdata[$eachuser['login']]['userhash'] = crc16($eachuser['login']);
            $userdata[$eachuser['login']]['tariff'] = $eachuser['Tariff'];
            @($userdata[$eachuser['login']]['tariffprice'] = $tariffprices[$eachuser['Tariff']]);
            $userdata[$eachuser['login']]['cash'] = $eachuser['Cash'];
            $userdata[$eachuser['login']]['credit'] = $eachuser['Credit'];
            $userdata[$eachuser['login']]['down'] = $eachuser['Down'];
            $userdata[$eachuser['login']]['passive'] = $eachuser['Passive'];
            $userdata[$eachuser['login']]['ao'] = $eachuser['AlwaysOnline'];
            @($userdata[$eachuser['login']]['contract'] = $allcontracts[$eachuser['login']]);
            @($userdata[$eachuser['login']]['realname'] = $allrealnames[$eachuser['login']]);
            @($userdata[$eachuser['login']]['address'] = $alladdress[$eachuser['login']]);
            @($userdata[$eachuser['login']]['email'] = $allemails[$eachuser['login']]);
            //openpayz payment ID
            if ($altcfg['OPENPAYZ_REALID']) {
                @($userdata[$eachuser['login']]['payid'] = $allopcustomers[$eachuser['login']]);
            } else {
                @($userdata[$eachuser['login']]['payid'] = ip2int($eachuser['IP']));
            }
            //traffic params
            $userdata[$eachuser['login']]['traffic'] = $eachuser['D0'] + $eachuser['U0'];
            $userdata[$eachuser['login']]['trafficdown'] = $eachuser['D0'];
            $userdata[$eachuser['login']]['trafficup'] = $eachuser['U0'];
            //net params
            $userdata[$eachuser['login']]['ip'] = $eachuser['IP'];
            @($userdata[$eachuser['login']]['mac'] = $multinetdata[$eachuser['IP']]['mac']);
            @($userdata[$eachuser['login']]['netid'] = $multinetdata[$eachuser['IP']]['netid']);
            @($userdata[$eachuser['login']]['hostid'] = $multinetdata[$eachuser['IP']]['id']);
            //nas data
            @($usernas = zb_NasGetParams($multinetdata[$eachuser['IP']]['netid'], $allnasdata));
            @($userdata[$eachuser['login']]['nasid'] = $usernas['id']);
            @($userdata[$eachuser['login']]['nasip'] = $usernas['nasip']);
            @($userdata[$eachuser['login']]['nasname'] = $usernas['nasname']);
            @($userdata[$eachuser['login']]['nastype'] = $usernas['nastype']);
            if (isset($tariffspeeds[$eachuser['Tariff']])) {
                $userdata[$eachuser['login']]['speeddown'] = $tariffspeeds[$eachuser['Tariff']]['speeddown'];
                $userdata[$eachuser['login']]['speedup'] = $tariffspeeds[$eachuser['Tariff']]['speedup'];
            } else {
                //if no tariff speed defined zero speed by default
                $userdata[$eachuser['login']]['speeddown'] = 0;
                $userdata[$eachuser['login']]['speedup'] = 0;
            }
            //CF data
            $usercfdata = zb_cfGetContent($eachuser['login'], $allcfdata);
            if (!empty($usercfdata)) {
                foreach ($usercfdata as $cd => $eachcf) {
                    $userdata[$eachuser['login']]['cf'][$cd] = $eachcf;
                }
            }
            //passport data
            @($userdata[$eachuser['login']]['birthdate'] = $allpdata[$eachuser['login']]['birthdate']);
            @($userdata[$eachuser['login']]['passportnum'] = $allpdata[$eachuser['login']]['passportnum']);
            @($userdata[$eachuser['login']]['passportdate'] = $allpdata[$eachuser['login']]['passportdate']);
            @($userdata[$eachuser['login']]['passportwho'] = $allpdata[$eachuser['login']]['passportwho']);
            @($userdata[$eachuser['login']]['pcity'] = $allpdata[$eachuser['login']]['pcity']);
            @($userdata[$eachuser['login']]['pstreet'] = $allpdata[$eachuser['login']]['pstreet']);
            @($userdata[$eachuser['login']]['pbuild'] = $allpdata[$eachuser['login']]['pbuild']);
            @($userdata[$eachuser['login']]['papt'] = $allpdata[$eachuser['login']]['papt']);
        }
    }
    return $userdata;
}
Beispiel #6
0
# $pi_id - ID пользователя (по версии биллинга) (число)
# $pmas_mac[$pi_id][n] - MAC-адрес номер n.... для IP-адреса n.... , т.е. $pmas_mac[$pi_id][1] - это MAC-адрес для IP-адреса $pmas_ip[$pi_id][1]
#================================================================================================================
*/
//Если в биллинге хранится обширная статистика, то тогда не имеет смысла обрабатывать её всю.
//Достаточно обрабатывать не более 5 суток для получения актуальных данных
//Если скрипт работает постоянно - то этой информации избыточно
printlog("формируем из БД биллинга массив с пользователями");
$ps_constr = "SELECT * from `users`";
printlog_sql($ps_constr);
$rs = sqa($conn1, $ps_constr);
$pi1 = 0;
if (!empty($rs)) {
    foreach ($rs as $io => $eachuser) {
        $pi1++;
        $userid = crc16($eachuser['login']);
        $pmas5[$pi1][1] = $userid;
        $pmas5[$pi1][2] = $eachuser['Tariff'];
        $pmas5[$pi1][3] = $eachuser['login'];
        $pmas5[$pi1][4] = 1;
        @($pmas5[$pi1][5] = $allcontracts[$eachuser['login']]);
        @($pmas5[$pi1][6] = $allregs[$eachuser['login']]);
        @($pmas5[$pi1][7] = enccorr($allrealnames[$eachuser['login']]));
        @($pmas5[$pi1][8] = enccorr($allnotes[$eachuser['login']]));
        $pmas5[$pi1][9] = $eachuser['Cash'];
        $pmas5[$pi1][10] = $eachuser['Down'];
        @($pmas5[$pi1][11] = $allregs[$eachuser['login']]);
        $pmas5[$pi1][12] = $eachuser['D0'];
        $pmas5[$pi1][13] = $eachuser['U0'];
        $pmas5[$pi1][14] = date("Y-m-d H:i:s", $eachuser['LastActivityTime']);
        @($pmas5[$pi1][18] = enccorr($alladdress[$eachuser['login']]['apt']));