sendsms.php
资源名称:gateway-1.2.1 [点击查看]
上传用户:gzpyjq
上传日期:2013-01-31
资源大小:1852k
文件大小:15k
源码类别:
手机WAP编程
开发平台:
WINDOWS
- <html>
- <font size=-2>
- <?
- $kannel = array ( host => "localhost", port => "13013", user => "user", pass => "pass");
- $string="";
- while(list($k,$v) = each($_GET)) {
- if ( $v != "" ) {
- $fields[$k]= "$v";
- }
- }
- while(list($k,$v) = each($_POST)) {
- if ( $v != "" ) {
- $fields[$k]= "$v";
- }
- }
- if ( $fields['debug'] + 0 != "0" ) {
- $debug = 1;
- } else $debug=0;
- $fields['debug'] = "";
- if ( $fields['text'] != "" ) {
- if ( ! preg_match("/%/", $fields['text'])) {
- $fields['text'] = urlencode($fields['text']);
- }
- }
- if ( $fields['image'] != "" ) $fields['image'] = preg_replace("/(..)/", "%$1", $fields['image']);
- if ( $fields['tune'] != "" ) $fields['tune'] = preg_replace("/(..)/", "%$1", $fields['tune']);
- if ( $mode == "LOGO") {
- if ($fields['country'] == "" ) $fields['country']="268";
- if ($fields['operator'] == "" ) $fields['operator']="01";
- $fields['image'] = substr($fields['image'], 0, 72*14*3/8);
- $fields['udh'] = "%06%05%04%15%82%00%00";
- $fields['text'] = "%" .substr($fields['country'],1,1) .substr($fields['country'],0,1) ."%F" . substr($fields['country'],2,1) .
- "%". substr($fields['operator'],1,1) . substr($fields['operator'],0,1) .
- "%00%48%0E%01".$fields['image'];
- $fields['image'] = "";
- $fields['country'] = "";
- $fields['operator'] = "";
- sendsms();
- }
- else if ( $mode == "VCARD") {
- $fields['udh'] = "%06%05%04%23%F4%00%00";
- $fields['vcard'] = "";
- $fields['text'] = "BEGIN:VCARD%0D%0AVERSION:2.1%0D%0A";
- if ( $fields['name'] != "") { $fields['text'] .= "N:".urlencode($fields['name']) . "%0D%0A"; $fields['name']=""; }
- if ( $fields['tele_pref'] != "") { $fields['text'] .= "TEL;PREF:".urlencode($fields['tele_pref']) . "%0D%0A"; $fields['tele_pref']=""; }
- if ( $fields['tele_cell'] != "") { $fields['text'] .= "TEL;CELL:".urlencode($fields['tele_cell']) . "%0D%0A"; $fields['tele_cell']=""; }
- if ( $fields['tele_home'] != "") { $fields['text'] .= "TEL;HOME:".urlencode($fields['tele_home']) . "%0D%0A"; $fields['tele_home']=""; }
- if ( $fields['tele_work'] != "") { $fields['text'] .= "TEL;WORK:".urlencode($fields['tele_work']) . "%0D%0A"; $fields['tele_work']=""; }
- if ( $fields['tele_fax'] != "") { $fields['text'] .= "TEL:FAX:".urlencode($fields['tele_fax']) . "%0D%0A"; $fields['tele_fax']=""; }
- if ( $fields['email'] != "") { $fields['text'] .= "EMAIL:".urlencode($fields['email']) . "%0D%0A"; $fields['email']=""; }
- if ( $fields['label'] != "") { $fields['text'] .= "LABEL:".urlencode($fields['label']) . "%0D%0A"; $fields['label']=""; }
- if ( $fields['note'] != "") { $fields['text'] .= "NOTE:".urlencode($fields['note']) . "%0D%0A"; $fields['note']=""; }
- $fields['text'] .= "END:VCARD%0D%0A";
- sendsms();
- }
- else if ( $mode == "VCAL") {
- $fields['udh'] = "%06%05%04%23%F5%00%00";
- $fields['vcal'] = "";
- $fields['text'] = "BEGIN:VCALENDAR%0D%0AVERSION:1.0%0D%0ABEGIN:VEVENT%0D%0A";
- if ( $fields['vcal_name'] != "") { $fields['text'] .= "DESCRIPTION:".urlencode($fields['vcal_name']) . "%0D%0ASUMMARY:".urlencode($fields['vcal_name'])."%0D%0A"; $fields['vcal_name']=""; }
- if ( $fields['date'] != "") { $fields['text'] .= "DTSTART:".urlencode($fields['date']) . "%0D%0A"; $fields['date']=""; }
- if ( $fields['categories'] != "") { $fields['text'] .= "CATEGORIES:".urlencode($fields['categories']) . "%0D%0A"; $fields['categories']=""; }
- if ( $fields['rule'] != "") { $fields['text'] .= "RULES:".urlencode($fields['rule']) . "%0D%0A"; $fields['rule']=""; }
- if ( $fields['alarm'] != "") { $fields['text'] .= "DALARM:".urlencode($fields['alarm']) . ";;;%0D%0AAALARM:".urlencode($fields['alarm']).";;;%0D%0A"; $fields['alarm']=""; }
- $fields['text'] .= "END:VEVENT%0D%0AEND:VCALENDAR%0D%0A";
- sendsms();
- }
- else if ( $mode == "GROUP") {
- $fields['image'] = substr($fields['image'], 0, 72*14*3/8);
- $fields['udh'] = "%06%05%04%15%83%00%00";
- $fields['text'] = "%00%48%0E%01".$fields['image'];
- $fields['image'] = "";
- sendsms();
- }
- else if ( $mode == "TUNE") {
- $fields['udh'] = "%06%05%04%15%81%00%00";
- $fields['text'] = $fields['tune'];
- $fields['tune'] = "";
- sendsms();
- }
- else if ( $mode == "PICTURE") {
- print "PICTURE<br>";
- $fields['image'] = substr($fields['image'], 0, 72*$fields['imagesize']*3/8);
- $fields['udh'] = "%06%05%04%15%8A%00%00";
- $fields['text'] = "%30%00" . "%00". "%" . sprintf("%02X", strlen($fields['text'])).$fields['text']. "%02" . ($fields['imagesize'] == "14" ? "%00%82" : "%01%00") . "%00%48%".($fields['imagesize'] == "14" ? "0E" : "1C"). "%01".$fields['image'];
- $fields['image'] = "";
- $fields['imagesize'] = "";
- sendsms();
- }
- else if ( $mode == "MWI") {
- if ( $fields['mwi'] > 4) {
- $fields['text'] = "";
- $fields['charset'] = "";
- $fields['mwi_messages'] = "";
- $fields['coding'] = "";
- }
- if ( $fields['mwi_messages'] != "" ) {
- $fields['udh'] = "%04%01%02%".($fields['text'] == "" ? '0' : 'C'). ($mwi-1). "%". sprintf("%02X", $fields['mwi_messages']);
- if($fields['coding'] == 0) { $fields['coding'] = 1; }
- $fields['mwi_messages'] = "";
- }
- sendsms();
- }
- else if ( $mode == "BOOKMARK") {
- $fields['udh'] = "%06%05%04%C3%4F%00%00";
- $fields['name'] = urlencode($fields['name']);
- $fields['url'] = urlencode($fields['url']);
- $fields['text'] = "%01%06%2D%1F%2B%61%70%70%6C%69%63%61%74%69%6F%6E%2F%78%2D%77%61%70%2D%70%72%6F%76%2E%62%72%6F%77%73%65%72%2D%62%6F%6F%6B%6D%61%72%6B%73%00%81%EA%00%01%00%45%C6%7F%01%87%15%11%03". $fields['name']. "%00%01%87%17%11%03". $fields['url']. "%00%01%01%01";
- $fields['name'] = "";
- $fields['url'] = "";
- sendsms();
- }
- else if ( $mode == "WAPCONFIG") {
- $fields['udh'] = "%06%05%04%C3%4F%00%00";
- $fields['name'] = urlencode($fields['name']);
- $fields['url'] = urlencode($fields['url']);
- $fields['text'] = "";
- $fields['text'] .= "%01"; # Transaction ID / Push ID
- $fields['text'] .= "%06"; # PDU Type (Push)
- $fields['text'] .= "%2C"; # Headers Lenght (content-type + headers)
- $fields['text'] .= "%1F"; # ? Length
- $fields['text'] .= "%2A" . urlencode("application/x-wap-prov.browser-settings") . "%00" ; # Content-Type
- $fields['text'] .= "%81%EA"; # charset = UTF-8
- $fields['text'] .= "%01"; # Version WBXML 1.1
- $fields['text'] .= "%01"; # Unknown Public Identifier
- $fields['text'] .= "%6A"; # Charset UTF-8
- $fields['text'] .= "%00"; # String table lenght
- $params = array ( "bearer" => "12", "proxy" => "13", "port" => "14", "name" => "15", "proxy_type" => "16", "url" => "17", "proxy_authname" => "18", "proxy_authsecret" => "19", "sms_smsc_address" => "1A", "ussd_service_code" => "1B", "gprs_accesspointname" => "1C", "ppp_logintype" => "1D", "proxy_logintype" => "1E", "csd_dialstring" => "21", "csd_calltype" => "28", "csd_callspeed" => "29", "ppp_authtype" => "22", "ppp_authname" => "23", "ppp_authsecret" => "24" );
- $params_with_attr = array ( "bearer", "port", "proxy_type", "ppp_logintype", "proxy_logintype", "csd_calltype", "csd_callspeed", "ppp_authtype");
- #$otadebug=1;
- $fields['text'] .= "%45"; # <CHARACTERISTIC_LIST>
- if ( $fields['name'] != "" ) {
- $fields['text'] .= "%C6%08%01"; # <CHARACTERISTIC TYPE="NAME">
- $fields['text'] .= "%87%15%11"; # <PARM NAME="NAME" VALUE=...
- $fields['text'] .= "%03" . $fields['name'] ."%00"; # ..."$name"...
- $fields['text'] .= "%01"; # .../>
- $fields['text'] .= "%01"; # </CHARACTERISTIC>
- }
- if ( $fields['url'] != "" ) {
- $fields['text'] .= "%86%07%11"; # <CHARACTERISTIC TYPE="URL" VALUE=...
- $fields['text'] .= "%03" . plusencode($fields['url']) ."%00"; # ..."$name"...
- $fields['text'] .= "%01"; # </CHARACTERISTIC>
- }
- if ($fields['name'] != "" && $fields['url'] != "") {
- $fields['text'] .= "%C6%7F%01"; # <CHARACTERISTIC TYPE="BOOKMARK">
- $fields['text'] .= "%87%15%11"; # <PARM NAME="NAME" VALUE=...
- $fields['text'] .= "%03" . $fields['name'] ."%00"; # ..."$name"...
- $fields['text'] .= "%01"; # .../>
- $fields['text'] .= "%87%17%11"; # <PARM NAME="URL" VALUE=...
- $fields['text'] .= "%03" . $fields['url'] ."%00"; # ..."$name"...
- $fields['text'] .= "%01"; # .../>
- $fields['text'] .= "%01"; # .../>
- }
- $fields['name'] = "";
- $fields['url'] = "";
- $fields['text'] .= "%C6%06%01"; # <CHARACTERISTIC TYPE="ADDRESS">
- while(list($key, $val) = each($params)) {
- if ( $fields[$key] != "" && $fields[$key] != "0" ) {
- if ($otadebug == 1) { $fields['text'].="<parm name=$key ($val)>"; }
- $fields['text'] .= "%87"; # <PARM> with attributes
- $fields['text'] .= "%".$val; # NAME=
- if ( in_array($key, $params_with_attr) ) {
- if ($otadebug == 1) { $fields['text'].="<value key=$key val=".$fields[$key].">"; }
- $fields['text'] .= "%" . $fields[$key]; # VALUE=CODE
- } else {
- if ($otadebug == 1) { $fields['text'].="<value key=$key val=".$fields[$key].">"; }
- $fields['text'] .= "%11"; # VALUE=
- $fields['text'] .= "%03". plusencode($fields[$key]) . "%00"; # STRING
- }
- $fields['text'] .= "%01"; # </PARM>
- }
- $fields[$key] = "";
- }
- $fields['text'] .= "%01"; # </CHARACTERISTIC>
- $fields['text'] .= "%01"; # </CHARACTERISTIC_LIST>
- sendsms();
- }
- else if ( $mode == "WAPPUSHSI") {
- $fields['text'] = "";
- $fields['udh'] = "%06%05%04%0B%84%23%F0";
- $MIME=urlencode("application/vnd.wap.sic");
- $fields['text'] .= "%01"; # Transaction ID
- $fields['text'] .= "%06"; # PDU Type (push)
- $fields['text'] .= "%04"; # Headers Length (content-type + headers)
- $fields['text'] .= "%03"; # Length of content type
- $fields['text'] .= "%AE"; # Content-Type: application/vnd.wap.sic
- $fields['text'] .= "%81"; # Charset
- $fields['text'] .= "%EA"; # UTF-8
- # End Headers
- # see si_binary_output
- $fields['text'] .= "%02"; # Version number (wbxml_version)
- $fields['text'] .= "%05"; # Unknown Public Identifier (si_public_id)
- $fields['text'] .= "%6A"; # charset= (sibxml->charset)
- $fields['text'] .= "%00"; # String table length
- $fields['text'] .= "%45"; # <si>
- $fields['text'] .= "%C6"; # <indication...
- $fields['text'] .= "%0b" . "%03" . $fields['url'] . "%00"; # href=$url
- $fields['text'] .= "%11" . "%03" . rand(1,9)."@vodafone.pt" . "%00"; # si-id=
- $fields['text'] .= "%08"; # action="signal-high"
- $fields['text'] .= "%0A" . "%C3%07%20%01%10%21%20%02%23"; # created=
- $fields['text'] .= "%10" . "%C3%04%20%02%06%30"; # valid=
- $fields['text'] .= "%01"; # end indication params
- $fields['text'] .= "%03" . urlencode($fields['name']). "%00";
- $fields['text'] .= "%01"; # </indication>
- $fields['text'] .= "%01"; # </si>
- $fields['name']="";
- $fields['url']="";
- sendsms();
- }
- else if ( $mode == "WAPPUSHSL") {
- $fields['text'] = "";
- $fields['udh'] = "%06%05%04%0B%84%23%F0";
- $MIME=urlencode("application/vnd.wap.slc");
- #$fields['text'] .= "%01"; # Transaction ID
- #$fields['text'] .= "%06"; # PDU Type (push)
- #$fields['text'] .= "%04"; # Headers Length (content-type + headers)
- #$fields['text'] .= "%03"; # length of content type
- #$fields['text'] .= "%B0"; # Content-Type: application/vnd.wap.slc
- #$fields['text'] .= "%81"; # Charset
- #$fields['text'] .= "%EA"; # UTF-8
- $fields['text'] .= "%01"; # Transaction ID
- $fields['text'] .= "%06"; # PDU Type (push)
- $fields['text'] .= "%1B"; # Headers Length (content-type + headers)
- $fields['text'] .= "%1A"; # length of content type
- $fields['text'] .= $MIME."%00"; # Content-Type: application/vnd.wap.slc
- $fields['text'] .= "%81"; # Charset
- $fields['text'] .= "%EA"; # UTF-8
- # End Headers
- # see si_binary_output
- $fields['text'] .= "%02"; # Version number (wbxml_version)
- $fields['text'] .= "%06"; # Unknown Public Identifier (si_public_id)
- $fields['text'] .= "%6A"; # charset= (sibxml->charset)
- $fields['text'] .= "%00"; # String table length
- $fields['text'] .= "%85"; # <sl>
- $fields['text'] .= "%0b"; # action="signal-high"
- $fields['text'] .= "%08" . "%03" . $fields['url'] . "%00"; # href=$url
- $fields['text'] .= "%01"; # </si>
- $fields['name']="";
- $fields['url']="";
- sendsms();
- }
- else if ( $mode == "SIEMENS") {
- $fields['coding'] = "2";
- #print_r($mmc_file_raw);exit;
- #move_uploaded_file($mmc_file_raw, "/tmp/siemens.tmp");
- $h=fopen($mmc_file_raw, "rb");
- $file = fread($h, filesize($mmc_file_raw));
- fclose($h);
- $file_size = strlen($file);
- #$file = join("", file($mmc_file_raw));
- #print strlen($file); exit;
- $file = join("", unpack("H*", $file));
- $file = preg_replace("/(..)/", "%$1", $file);
- $max_size = 140 - 22 - 3 - strlen($mmc_file_name);
- $file_type = $fields['mmc_file_type'];
- $file_name = $fields['mmc_file_name'];
- $fields['mmc_file'] = "";
- $fields['mmc_file_type'] = "";
- $fields['mmc_file_name'] = "";
- $count = 0;
- $max = ceil( $file_size / $max_size);
- $packet_size = $max_size;
- $object_size = sprintf("%08X", $file_size);
- $object_size = "%". substr($object_size, 6, 2). "%". substr($object_size, 4, 2). "%". substr($object_size, 2, 2). "%". substr($object_size, 0, 2);
- print "max=$max, packetsize=$packet_size, objectsize=$object_size; file_size: ".$file_size."<p>";
- while ($count < $max) {
- if ( $count == $max - 1 ) { # Last Packet
- $packet_size = $file_size % $max_size;
- }
- $fields['text'] = "";
- $fields['text'] .= "//SEO";
- $fields['text'] .= "%01"; # Version 1
- $fields['text'] .= "%". sprintf("%02X", $packet_size % 256). "%". sprintf("%02X", floor($packet_size / 256)); # Data Size on this message
- $fields['text'] .= "%00%00%00%00"; # Reference
- $fields['text'] .= "%". sprintf("%02X", ($count+1) % 256). "%". sprintf("%02X", floor(($count+1) / 256)); # Packet Number
- $fields['text'] .= "%". sprintf("%02X", $max % 256). "%". sprintf("%02X", floor($max / 256)); # Max Packets
- $fields['text'] .= $object_size; # Object Size
- $fields['text'] .= "%". sprintf("%02X", strlen($mmc_file_type)). $mmc_file_type; # Object Type
- $fields['text'] .= "%". sprintf("%02X", strlen($mmc_file_name)). $mmc_file_name; # Object File Name
- $fields['text'] .= substr($file, $count * $max_size * 3, $packet_size * 3);
- #print $fields['text']. "<br>";
- #$debug = 1;
- sendsms();
- $count++;
- }
- }
- else {
- sendsms();
- }
- function sendsms (){
- global $fields, $debug, $kannel;
- $fields['mode'] = "";
- reset($fields);
- while(list($k,$v) = each($fields)) {
- if ( $v != "" ) {
- $string .= "&$k=$v";
- }
- }
- print ($debug ? "[DEBUG]" : "" )."Getting $string<br>";
- if ( !$debug ) { $result = @file("http://".$kannel['host'].":".$kannel['port']."/sendsms?user=".$kannel['user']."&pass=".$kannel['pass']."&".$string); }
- print_r( $result);
- }
- function plusencode($string) {
- return preg_replace("/+/", "%2B", $string);
- }
- ?>