sendsms.php
上传用户:gzpyjq
上传日期:2013-01-31
资源大小:1852k
文件大小:15k
源码类别:

手机WAP编程

开发平台:

WINDOWS

  1. <html>
  2. <font size=-2>
  3. <? 
  4.   $kannel = array ( host => "localhost", port => "13013", user => "user", pass => "pass");
  5.   $string="";
  6.   while(list($k,$v) = each($_GET)) {
  7. if ( $v != "" ) {
  8.      $fields[$k]= "$v";
  9. }
  10.   }
  11.   while(list($k,$v) = each($_POST)) {
  12. if ( $v != "" ) {
  13.      $fields[$k]= "$v";
  14. }
  15.   }
  16.   if ( $fields['debug'] + 0 != "0" ) {
  17.     $debug = 1;
  18.   } else $debug=0;
  19.   $fields['debug'] = "";
  20.   if ( $fields['text'] != "" ) {
  21.     if ( ! preg_match("/%/", $fields['text'])) {
  22.       $fields['text']  = urlencode($fields['text']);
  23.     }
  24.   }
  25.   if ( $fields['image'] != "" ) $fields['image'] = preg_replace("/(..)/", "%$1", $fields['image']);
  26.   if ( $fields['tune'] != "" ) $fields['tune'] = preg_replace("/(..)/", "%$1", $fields['tune']);
  27.   if ( $mode == "LOGO") {
  28.     if ($fields['country'] == "" ) $fields['country']="268";
  29.     if ($fields['operator'] == "" ) $fields['operator']="01";
  30.     $fields['image'] = substr($fields['image'], 0, 72*14*3/8);
  31.     $fields['udh'] = "%06%05%04%15%82%00%00";
  32.     $fields['text'] = "%" .substr($fields['country'],1,1) .substr($fields['country'],0,1) ."%F" . substr($fields['country'],2,1) .    
  33.       "%". substr($fields['operator'],1,1) . substr($fields['operator'],0,1) . 
  34.       "%00%48%0E%01".$fields['image'];
  35.     $fields['image'] = "";
  36.     $fields['country'] = "";
  37.     $fields['operator'] = "";
  38.     sendsms();
  39.   }
  40.   else if ( $mode == "VCARD") {
  41.     $fields['udh'] = "%06%05%04%23%F4%00%00";
  42.     $fields['vcard'] = "";
  43.     
  44.     $fields['text'] = "BEGIN:VCARD%0D%0AVERSION:2.1%0D%0A";
  45.     if ( $fields['name'] != "") { $fields['text'] .= "N:".urlencode($fields['name']) . "%0D%0A"; $fields['name']=""; }
  46.     if ( $fields['tele_pref'] != "") { $fields['text'] .= "TEL;PREF:".urlencode($fields['tele_pref']) . "%0D%0A"; $fields['tele_pref']=""; }
  47.     if ( $fields['tele_cell'] != "") { $fields['text'] .= "TEL;CELL:".urlencode($fields['tele_cell']) . "%0D%0A"; $fields['tele_cell']=""; }
  48.     if ( $fields['tele_home'] != "") { $fields['text'] .= "TEL;HOME:".urlencode($fields['tele_home']) . "%0D%0A"; $fields['tele_home']=""; }
  49.     if ( $fields['tele_work'] != "") { $fields['text'] .= "TEL;WORK:".urlencode($fields['tele_work']) . "%0D%0A"; $fields['tele_work']=""; }
  50.     if ( $fields['tele_fax'] != "") { $fields['text'] .= "TEL:FAX:".urlencode($fields['tele_fax']) . "%0D%0A"; $fields['tele_fax']=""; }
  51.     if ( $fields['email'] != "") { $fields['text'] .= "EMAIL:".urlencode($fields['email']) . "%0D%0A"; $fields['email']=""; }
  52.     if ( $fields['label'] != "") { $fields['text'] .= "LABEL:".urlencode($fields['label']) . "%0D%0A"; $fields['label']=""; }
  53.     if ( $fields['note'] != "") { $fields['text'] .= "NOTE:".urlencode($fields['note']) . "%0D%0A"; $fields['note']=""; }
  54.     $fields['text'] .= "END:VCARD%0D%0A";
  55.     sendsms();
  56.   }
  57.   else if ( $mode == "VCAL") {
  58.     $fields['udh'] = "%06%05%04%23%F5%00%00";
  59.     $fields['vcal'] = "";
  60.     
  61.     $fields['text'] = "BEGIN:VCALENDAR%0D%0AVERSION:1.0%0D%0ABEGIN:VEVENT%0D%0A";
  62.     if ( $fields['vcal_name'] != "") { $fields['text'] .= "DESCRIPTION:".urlencode($fields['vcal_name']) . "%0D%0ASUMMARY:".urlencode($fields['vcal_name'])."%0D%0A"; $fields['vcal_name']=""; }
  63.     if ( $fields['date'] != "") { $fields['text'] .= "DTSTART:".urlencode($fields['date']) . "%0D%0A"; $fields['date']=""; }
  64.     if ( $fields['categories'] != "") { $fields['text'] .= "CATEGORIES:".urlencode($fields['categories']) . "%0D%0A"; $fields['categories']=""; }
  65.     if ( $fields['rule'] != "") { $fields['text'] .= "RULES:".urlencode($fields['rule']) . "%0D%0A"; $fields['rule']=""; }
  66.     if ( $fields['alarm'] != "") { $fields['text'] .= "DALARM:".urlencode($fields['alarm']) . ";;;%0D%0AAALARM:".urlencode($fields['alarm']).";;;%0D%0A"; $fields['alarm']=""; }
  67.     $fields['text'] .= "END:VEVENT%0D%0AEND:VCALENDAR%0D%0A";
  68.     sendsms();
  69.   }
  70.   else if ( $mode == "GROUP") {
  71.     $fields['image'] = substr($fields['image'], 0, 72*14*3/8);
  72.     $fields['udh'] = "%06%05%04%15%83%00%00";
  73.     $fields['text'] = "%00%48%0E%01".$fields['image'];
  74.     $fields['image'] = "";
  75.     sendsms();
  76.   }
  77.   else if ( $mode == "TUNE") {
  78.     $fields['udh'] = "%06%05%04%15%81%00%00";
  79.     $fields['text'] = $fields['tune'];
  80.     $fields['tune'] = "";
  81.     sendsms();
  82.   }
  83.   else if ( $mode == "PICTURE") {
  84.   print "PICTURE<br>";
  85.     $fields['image'] = substr($fields['image'], 0, 72*$fields['imagesize']*3/8);
  86.     $fields['udh'] = "%06%05%04%15%8A%00%00";
  87.     $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'];
  88.     $fields['image'] = "";
  89.     $fields['imagesize'] = "";
  90.     sendsms();
  91.   }
  92.   else if ( $mode == "MWI") {
  93.     if ( $fields['mwi'] > 4) {
  94.      $fields['text'] = "";
  95.      $fields['charset'] = "";
  96.      $fields['mwi_messages'] = "";
  97.      $fields['coding'] = "";
  98.     }
  99.     if ( $fields['mwi_messages'] != "" ) {
  100.      $fields['udh'] = "%04%01%02%".($fields['text'] == "" ? '0' : 'C'). ($mwi-1). "%". sprintf("%02X", $fields['mwi_messages']);
  101. if($fields['coding'] == 0) { $fields['coding'] = 1; }
  102.         $fields['mwi_messages'] = "";
  103.     }
  104.     sendsms();
  105.   }
  106.   else if ( $mode == "BOOKMARK") {
  107.     $fields['udh'] = "%06%05%04%C3%4F%00%00";
  108.     $fields['name'] = urlencode($fields['name']);
  109.     $fields['url'] = urlencode($fields['url']);
  110.     $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";
  111.     $fields['name'] = "";
  112.     $fields['url'] = "";
  113.     sendsms();
  114.   }
  115.   else if ( $mode == "WAPCONFIG") {
  116.     $fields['udh'] = "%06%05%04%C3%4F%00%00";
  117.     $fields['name'] = urlencode($fields['name']);
  118.     $fields['url'] = urlencode($fields['url']);
  119.     $fields['text'] = "";
  120.     $fields['text'] .= "%01"; # Transaction ID / Push ID
  121.     $fields['text'] .= "%06"; # PDU Type (Push)
  122.     $fields['text'] .= "%2C"; # Headers Lenght (content-type + headers)
  123.     $fields['text'] .= "%1F"; # ? Length
  124.     $fields['text'] .= "%2A" . urlencode("application/x-wap-prov.browser-settings") . "%00" ; # Content-Type
  125.     $fields['text'] .= "%81%EA"; # charset = UTF-8
  126.     $fields['text'] .= "%01"; # Version WBXML 1.1
  127.     $fields['text'] .= "%01"; # Unknown Public Identifier
  128.     $fields['text'] .= "%6A"; # Charset UTF-8
  129.     $fields['text'] .= "%00"; # String table lenght
  130.     $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" );
  131.     $params_with_attr = array ( "bearer", "port", "proxy_type", "ppp_logintype", "proxy_logintype", "csd_calltype", "csd_callspeed", "ppp_authtype");
  132.     #$otadebug=1;
  133.     $fields['text'] .= "%45"; # <CHARACTERISTIC_LIST>
  134.       if ( $fields['name'] != "" ) {
  135.         $fields['text'] .= "%C6%08%01"; # <CHARACTERISTIC TYPE="NAME">
  136.         $fields['text'] .= "%87%15%11"; # <PARM NAME="NAME" VALUE=...
  137.         $fields['text'] .= "%03" . $fields['name'] ."%00"; # ..."$name"...
  138.         $fields['text'] .= "%01"; # .../>
  139.         $fields['text'] .= "%01"; # </CHARACTERISTIC>
  140.       }
  141.       
  142.       if ( $fields['url'] != "" ) {
  143.         $fields['text'] .= "%86%07%11"; # <CHARACTERISTIC TYPE="URL" VALUE=...
  144.         $fields['text'] .= "%03" . plusencode($fields['url']) ."%00"; # ..."$name"...
  145.         $fields['text'] .= "%01"; # </CHARACTERISTIC>
  146.       }
  147.       if ($fields['name'] != "" && $fields['url'] != "") {
  148.         $fields['text'] .= "%C6%7F%01"; # <CHARACTERISTIC TYPE="BOOKMARK">
  149.         $fields['text'] .= "%87%15%11"; # <PARM NAME="NAME" VALUE=...
  150.         $fields['text'] .= "%03" . $fields['name'] ."%00"; # ..."$name"...
  151.         $fields['text'] .= "%01"; # .../>
  152.         $fields['text'] .= "%87%17%11"; # <PARM NAME="URL" VALUE=...
  153.         $fields['text'] .= "%03" . $fields['url'] ."%00"; # ..."$name"...
  154.         $fields['text'] .= "%01"; # .../>
  155.         $fields['text'] .= "%01"; # .../>
  156.       }
  157.       $fields['name'] = "";
  158.       $fields['url'] = "";
  159.       $fields['text'] .= "%C6%06%01"; # <CHARACTERISTIC TYPE="ADDRESS">
  160.       while(list($key, $val) = each($params)) {
  161.        if ( $fields[$key] != "" && $fields[$key] != "0" ) { 
  162.      if ($otadebug == 1) { $fields['text'].="&lt;parm name=$key ($val)&gt;"; }
  163.          $fields['text'] .= "%87"; # <PARM> with attributes
  164.          $fields['text'] .= "%".$val; # NAME=
  165.   if ( in_array($key, $params_with_attr) ) {
  166.     if ($otadebug == 1) { $fields['text'].="&lt;value key=$key val=".$fields[$key]."&gt;"; }
  167.            $fields['text'] .= "%" . $fields[$key]; # VALUE=CODE
  168.   } else {
  169.     if ($otadebug == 1) { $fields['text'].="&lt;value key=$key val=".$fields[$key]."&gt;"; }
  170.            $fields['text'] .= "%11"; # VALUE=
  171.            $fields['text'] .= "%03". plusencode($fields[$key]) . "%00"; # STRING
  172.   }
  173.          $fields['text'] .= "%01"; # </PARM>
  174. }
  175. $fields[$key] = "";
  176.       }
  177.       $fields['text'] .= "%01"; # </CHARACTERISTIC>
  178.     $fields['text'] .= "%01"; # </CHARACTERISTIC_LIST>
  179.     sendsms();
  180.   }
  181.   else if ( $mode == "WAPPUSHSI") {
  182.     $fields['text'] = "";
  183.     $fields['udh'] = "%06%05%04%0B%84%23%F0";
  184.     $MIME=urlencode("application/vnd.wap.sic");
  185.     $fields['text'] .= "%01";   # Transaction ID
  186.     $fields['text'] .= "%06";  # PDU Type (push)
  187.     $fields['text'] .= "%04";        # Headers Length (content-type + headers)
  188.     $fields['text'] .= "%03";        # Length of content type
  189.     $fields['text'] .= "%AE";      # Content-Type: application/vnd.wap.sic
  190.     $fields['text'] .= "%81";      # Charset
  191.     $fields['text'] .= "%EA";      # UTF-8
  192.     # End Headers
  193.     
  194.     # see si_binary_output
  195.     $fields['text'] .= "%02";  # Version number (wbxml_version)
  196.     $fields['text'] .= "%05";  # Unknown Public Identifier (si_public_id)
  197.     $fields['text'] .= "%6A";  # charset= (sibxml->charset)
  198.     $fields['text'] .= "%00";  # String table length
  199.     $fields['text'] .= "%45"; # <si>
  200.       $fields['text'] .= "%C6"; # <indication...
  201. $fields['text'] .= "%0b" . "%03" . $fields['url'] . "%00"; # href=$url
  202. $fields['text'] .= "%11" . "%03" . rand(1,9)."@vodafone.pt" . "%00"; # si-id=
  203. $fields['text'] .= "%08"; # action="signal-high"
  204. $fields['text'] .= "%0A" . "%C3%07%20%01%10%21%20%02%23"; # created=
  205. $fields['text'] .= "%10" . "%C3%04%20%02%06%30"; # valid=
  206.         $fields['text'] .= "%01"; # end indication params 
  207. $fields['text'] .= "%03" . urlencode($fields['name']). "%00";
  208.       $fields['text'] .= "%01"; # </indication>
  209.     $fields['text'] .= "%01"; # </si>
  210.     $fields['name']="";
  211.     $fields['url']="";
  212.     sendsms();
  213.   }
  214.   else if ( $mode == "WAPPUSHSL") {
  215.     $fields['text'] = "";
  216.     $fields['udh'] = "%06%05%04%0B%84%23%F0";
  217.     $MIME=urlencode("application/vnd.wap.slc");
  218.     #$fields['text'] .= "%01";   # Transaction ID
  219.     #$fields['text'] .= "%06";  # PDU Type (push)
  220.     #$fields['text'] .= "%04";        # Headers Length (content-type + headers)
  221.     #$fields['text'] .= "%03";       # length of content type
  222.     #$fields['text'] .= "%B0";      # Content-Type: application/vnd.wap.slc
  223.     #$fields['text'] .= "%81";      # Charset
  224.     #$fields['text'] .= "%EA";      # UTF-8
  225.     $fields['text'] .= "%01";   # Transaction ID
  226.     $fields['text'] .= "%06";  # PDU Type (push)
  227.     $fields['text'] .= "%1B";        # Headers Length (content-type + headers)
  228.     $fields['text'] .= "%1A";       # length of content type
  229.     $fields['text'] .= $MIME."%00";      # Content-Type: application/vnd.wap.slc
  230.     $fields['text'] .= "%81";      # Charset
  231.     $fields['text'] .= "%EA";      # UTF-8
  232.     # End Headers
  233.     
  234.     # see si_binary_output
  235.     $fields['text'] .= "%02";  # Version number (wbxml_version)
  236.     $fields['text'] .= "%06";  # Unknown Public Identifier (si_public_id)
  237.     $fields['text'] .= "%6A";  # charset= (sibxml->charset)
  238.     $fields['text'] .= "%00";  # String table length
  239.     $fields['text'] .= "%85"; # <sl>
  240.       $fields['text'] .= "%0b"; # action="signal-high"
  241.       $fields['text'] .= "%08" . "%03" . $fields['url'] . "%00"; # href=$url
  242.     $fields['text'] .= "%01"; # </si>
  243.     $fields['name']="";
  244.     $fields['url']="";
  245.     sendsms();
  246.   }
  247.   else if ( $mode == "SIEMENS") {
  248.     $fields['coding'] = "2";
  249.     #print_r($mmc_file_raw);exit;
  250.     #move_uploaded_file($mmc_file_raw, "/tmp/siemens.tmp");
  251.     $h=fopen($mmc_file_raw, "rb");
  252.     $file = fread($h, filesize($mmc_file_raw));
  253.     fclose($h);
  254.     $file_size = strlen($file);
  255.     #$file = join("", file($mmc_file_raw));
  256.     #print strlen($file); exit;
  257.     $file = join("", unpack("H*", $file));
  258.     $file = preg_replace("/(..)/", "%$1", $file);
  259.     $max_size = 140 - 22 - 3 - strlen($mmc_file_name);
  260.     $file_type = $fields['mmc_file_type'];
  261.     $file_name = $fields['mmc_file_name'];
  262.     $fields['mmc_file'] = "";
  263.     $fields['mmc_file_type'] = "";
  264.     $fields['mmc_file_name'] = "";
  265.     $count = 0; 
  266.     $max = ceil( $file_size / $max_size);
  267.     $packet_size = $max_size;
  268.     $object_size = sprintf("%08X", $file_size);
  269.     $object_size = "%". substr($object_size, 6, 2).  "%". substr($object_size, 4, 2).  "%". substr($object_size, 2, 2).  "%". substr($object_size, 0, 2);
  270.     print "max=$max, packetsize=$packet_size, objectsize=$object_size; file_size: ".$file_size."<p>";
  271.     while ($count < $max) {
  272.     if ( $count == $max - 1 ) { # Last Packet
  273.      $packet_size = $file_size % $max_size;
  274.     }
  275.     
  276.     $fields['text'] = "";
  277.     $fields['text'] .= "//SEO";
  278.     $fields['text'] .= "%01"; # Version 1
  279.     $fields['text'] .= "%". sprintf("%02X", $packet_size % 256). "%". sprintf("%02X", floor($packet_size / 256)); # Data Size on this message
  280.     $fields['text'] .= "%00%00%00%00"; # Reference
  281.     $fields['text'] .= "%". sprintf("%02X", ($count+1) % 256). "%". sprintf("%02X", floor(($count+1) / 256)); # Packet Number
  282.     $fields['text'] .= "%". sprintf("%02X", $max % 256). "%". sprintf("%02X", floor($max / 256)); # Max Packets
  283.     $fields['text'] .= $object_size; # Object Size
  284.     $fields['text'] .= "%". sprintf("%02X", strlen($mmc_file_type)). $mmc_file_type; # Object Type
  285.     $fields['text'] .= "%". sprintf("%02X", strlen($mmc_file_name)). $mmc_file_name; # Object File Name
  286.     $fields['text'] .= substr($file, $count * $max_size * 3, $packet_size * 3);
  287.     #print $fields['text']. "<br>";
  288.     #$debug = 1;
  289.     sendsms();
  290.     $count++;
  291.     }
  292.   }
  293.   else {
  294.    sendsms();
  295.   }
  296.   function sendsms (){
  297.    global $fields, $debug, $kannel;
  298.   $fields['mode'] = "";
  299.   reset($fields);
  300.   while(list($k,$v) = each($fields)) {
  301.     if ( $v != "" ) {
  302.       $string .= "&$k=$v";
  303.     }
  304.   }
  305.     
  306.   print ($debug ? "[DEBUG]" : "" )."Getting $string<br>";
  307.   if ( !$debug ) { $result = @file("http://".$kannel['host'].":".$kannel['port']."/sendsms?user=".$kannel['user']."&pass=".$kannel['pass']."&".$string); }
  308.   print_r( $result);
  309.   }
  310.   function plusencode($string) {
  311. return preg_replace("/+/", "%2B", $string);
  312.   }
  313. ?>