📄 00000004.htm
字号:
<BR>$GetStr = "GET /hinet_v3/invoice.htm HTTP/1.0\nPragma: no-cache\n"; <BR> <BR>$them='www.hinet.net'; <BR>$port=80; <BR>$AF_INET=2; <BR>$SOCK_STREAM=1; <BR>$sockaddr='S n a4 x8'; <BR>($name,$aliases,$proto)=getprotobyname('tcp'); <BR>($name,$aliases,$port,$proto)=getservbyname($port,'tcp') unless <BR>$port=~/^\d+$/; <BR>($name,$aliases,$type,$len,$thataddr)=gethostbyname($them); <BR>$that=pack($sockaddr,$AF_INET,$port,$thataddr); <BR> <BR>if (socket(SOCK,$AF_INET,$SOCK_STREAM,$proto)) { <BR># print "socket OK!\n"; <BR>} <BR>else {die $!;} <BR>if (connect(SOCK,$that)) { <BR># print "connect OK!\n"; <BR>} <BR>else {dis $!;} <BR> <BR>select(SOCK); $|=1; select(STDOUT); <BR>print SOCK $GetStr; <BR>print SOCK "Accept: */*\n\n"; <BR>open (MYFILE,"> $FILE1") || die "Can't open $FILE:$!\n"; <BR>do { <BR> $recv=<SOCK>; <BR> $recv =~ s/\r//g; <BR># print "$recv"; <BR> print MYFILE "$recv"; <BR>} while( length($recv)>0); <BR>close(SOCK); <BR>close (MYFILE); <BR> <BR>open (NEWS,"< $FILE1") || die "can't open input $FILE1:$!\n"; <BR>open (OUT,"> $FILE2") || die "can't open out $FILE2:$!\n"; <BR> <BR>$cont_do=0; <BR>while($line=<NEWS>) { <BR> if ($cont_do!=0) { <BR> last if $line=~/<\/table>/ ; <BR> if ($line =~ /<\/tr>/) { <BR> print OUT "-----------------------------------------"; <BR> }else { <BR> $line =~ s/<br>//; <BR> $line =~ s/<tr>//; <BR> $line =~ s/<\/td>//; <BR> $line =~ s/<\/a>//; <BR> $line =~ s/<\/font>//; <BR> $line =~ s/<font(.*)>//; <BR> $line =~ s/<a (.+)>//; <BR> $line =~ s/<td(.*)>//; <BR> $line =~ s/ //; <BR> $pos = (40-length($line))/2; <BR> $space=''; <BR> for ($n=0;$n<$pos;$n++) { <BR> $space .= ' '; <BR> } <BR> # "功"字冲码,再加一"|" <BR> if ($line =~ /^(特|头|二|三|功||五|六)$/) { <BR> print OUT " $1"; <BR> }elsif ($line =~ /^奖$/) { <BR> print OUT " $line"; <BR> }else{ <BR> print OUT "$space$line"; <BR> } <BR> } <BR> }elsif ($line=~/<table/) { <BR> $cont_do = 1; <BR> } <BR>} <BR>print OUT "\n*本号码单若有编排错误,请以财政部记录为准*\n"; <BR>close(NEW); <BR>close(OUT); <BR>system("/usr/bin/efix -i text -o tiffg3 -n$FAXOUT < $FILE2"); <BR>system("/bin/rm -f $FILE1"); <BR>system("/bin/rm -f $FILE2"); <BR>exit(0); <BR> <BR>不论网上传呼,或传真额外服务,都是利用网路上的现成资源,虽然颇为便利, <BR>但请注意是否侵权,另外因来源受制於他人,所以若其格式变动,几乎您也需跟 <BR>著修改才行! <BR> <BR>主动传真服务 <BR> <BR> 主动传真的第一步,就是当有传真或EMAIL转传真进来时,将传真格式的 <BR>档名做一份复制到特定的目录,其程式码如下: <BR> # 加入answer (bash script) Write to Callout段落中 <BR># 抓取传真号码 <BR> FAXphone=`$ECHO $userReg | cut -d"," -f7,7 -s` <BR> # 看看是否有设定要主动传真 <BR>doFAX=`$ECHO $userReg | cut -d"," -f12,12 -s` <BR> if [ $FAXphone ]; then <BR> if [ "$doFAX" = "1" ]; then <BR> # Append 传真档名至特定目录下的UserID档名中 <BR> $ECHO -n "$faxfiles " >> "${CALLOUT_PATH}${UserI <BR>D}" <BR> # 改变此档属性,以便过期或传完後可将其删除 <BR> chmod go+w "${CALLOUT_PATH}${UserID}" <BR> fi <BR> fi <BR> <BR> <BR>先前提过的mail2fax程式,也需将这部分加入 <BR> <BR># 加入 mail2fax(Perl语言) 段落中 <BR># ------------------------ Write to Callout-------------------------- <BR> <BR>if ( $FAXphone ne '' ) <BR>{ <BR> if ( $doFAX eq '1' ) { <BR> open(FF,"/usr/bin/find $FaxFile.* -printf \"%p \" | "); <BR> $fileout = <FF>; <BR> close(FF); <BR> open(W,">> " . "${CALLOUT_PATH}$id"); <BR> print W "$fileout" ; <BR> close(W); <BR> chmod(0666,"${CALLOUT_PATH}$id"); <BR> <BR> } <BR>} <BR> <BR>一台PC有两个COM PORT,您可再接一电话线及传真数据机做主动传真服务,但因 <BR>我仅有一条电话线,所以作法为利用空闲时间,侦测有无主动传真要送! <BR>也就是一段时间无人拨接进来,则去察看一下,有无传真要送出! <BR> <BR># Slect voice mode. <BR>$VMCP -c"$AT_VOICE" -wOK <BR> <BR># 此处原来的参数为 -t0,表示一直等待,现改为 -t180,等三分钟 <BR>$VMCP -t180 -c"$AT_WAITRING" -wRING <BR> <BR>#--------------------------------FAX Callout------------------------------ <BR>if [ $? -eq 100 ]; then <BR> # $? -eq 100 表示上式VMCP 三分钟Timeout <BR> FaxCallOut <BR>fi <BR>#--------------------------------------------------------------------------- <BR> <BR>FaxCallOut 副程式如下: <BR> <BR>FaxCallOut() <BR>{ <BR> faxout=`$FIND ${CALLOUT_PATH}* -printf "%f "` <BR> if [ `$ECHO -n $faxout | $WC -w` -gt "0" ]; then <BR> for FILE in $faxout <BR> do <BR> read faxfiles < ${CALLOUT_PATH}$FILE <BR> if [ `$ECHO -n $faxfiles | $WC -w` -gt "0" ]; then <BR> read userReg < ${MAINPATH}conf/$FILE.reg <BR> faxphone=`echo $userReg | cut -d"," -f7,7 -s` <BR> if [ $faxphone ]; then <BR> $VMCP -c"$AT_FAX" -wOK <BR> /usr/bin/efax -d /dev/$TTYS -t"$faxphone" $faxfile <BR>s <BR> if [ $? -eq 0 ]; then <BR> $RM -f ${CALLOUT_PATH}$FILE <BR> fi <BR> fi <BR> fi <BR> done <BR> fi <BR> # 执行结束再把控制权转移至原程式 <BR> exec ${MAINPATH}bin/answer <BR>} <BR> <BR>若您PC上接了数台数据机,请小心不要同时做Callout(可利用LOCK FILE的方式 <BR>),否则可能同时拨一样的电话,不然就需将FaxCallOut副程式修改一下,避免 <BR>此情形发生! <BR> <BR>结尾 <BR> <BR> 本篇讨论如何呼叫BBC、传真额外服务、及主动传真服务,透过这些功能 <BR>,可使讯息的流传更为便利,也愈容易掌握所需的资讯。接下来的一篇将讨论如 <BR>何进行群组传送,以及建立基地台,分区转送的功能。 <BR> <BR>撰文:朱先宇 1998/12/17 <BR>EMAIL: <A HREF="mailto:hybj@ms1.hinet.net">hybj@ms1.hinet.net</A> <BR> <BR>-- <BR>just a test <BR> <BR>※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 202.116.130.100] <BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -