Pages

February 20, 2012

ircBot-consoleで自動オペレータ権限付与するスクリプト書いたよ

IRCを使用しなくてはいけなくなったので書いてみました。

このコードはircBot-console用でJavaScript(Rhino)で書かれています。



WHITE_LISTにユーザを追加していくことで、自動でOP権限を与えるユーザを増やすことができます。

また、完全一致か前方一致か選択できます。

愚痴としてRhinoのデバッグメッセージがないこと(オブジェクトハッシュしか出力されない)、エラーログを記述するための関数がないことかなー。スクリプトのデバッグはとてもめんどくさいです。 OSSだし自分で書きなおせってのはあるけど

October 05, 2011

redmineをnginxで扱う

教授から成果を見える形で出せと言われたのでとりあえず備忘録。。

Redmineの設定とか
sudo apt-get install ruby ruby1.8-dev rubygems sendmail imagemagick libmagick9-dev
sudo gem update --system 1.6.2
sudo gem install sqlite3-ruby 
sudo gem install -v=2.3.11 rails
sudo gem install -v=0.4.2 i18n
sudo gem install rake
sudo mkdir -p /var/www/redmine_test
cd /var/www/redmine_test
sudo git clone git://github.com/edavis10/redmine.git
cd redmine

sudo vim config/database.yml
production:
   adapter: sqlite3
   database: db/redmine.db
   timeout: 5000

sudo rake generate_session_store
sudo rake db:migrate RAILS_ENV="production"
sudo rake redmine:load_default_data RAILS_ENV=production
>ja

メールの設定がいまいちわからない。
使わないしテキトーでいいよね。
sudo vim config/email.yml
delivery_method: :async_smtp
   smtp_settings:
   address: localhost
   port: 25
   domain: host.example.jp

sudo ruby script/server webrick -e production
http://serverip:3000にアクセスして動くかチェック
Ctrl-Cで中断

redmineをnginxで動かすときのもろもろ
sudo gem install passenger
sudo gem install rmagick

sudo passenger-install-nginx-module
自ビルドnginxだったので、そのときのソースとcofigureオプションで通す形に。

passenger-config --root
/usr/lib/ruby/gems/1.8/gems/passenger-3.0.9
which ruby
/usr/bin/ruby
上記2つのコマンドの値を覚えておく

cd /opt/nginx/conf
sudo vim nginx.conf
とかそのへんで
http {
...
passenger_root /usr/lib/ruby/gems/1.8/gems/passenger-3.0.9;
passenger_ruby /usr/bin/ruby;
passenger_max_pool_size 8;
passenger_max_instances_per_app 1;
passenger_pool_idle_time 3600;
...
}

server {
listen 80;
client_max_body_size 250M;
server_name redmine.example.com;
root /var/www/redmine_test/public;
passenger_enabled on;
rails_env production;
}
を適宜追加

nginx -t -c "nginx.confのpath"
でエラーでないなら
nginx -s reload
でおk

あとは
/var/www/redmine_test
以下のアクセス権等の調整でいいかな?
多分だけどnginxのworkerと同じ権限を与えてやればいいと思う
上のとおりだと多分権限の関係でうまく動かなくなると思うのでそのへんはよろしく

参考:
http://redmine.jp/tech_note/install/
http://www.redmine.org/issues/8325
http://doruby.kbmj.com/8y/20100628/Redmine_nginx_Passenger_
http://redmine.jp/tech_note/apache-passenger/

mongodbの認証について


mongodbで認証
configに
auth=true
とかく
bind_ip=0.0.0.0
を指定するとそこからのみ接続を受け付ける。
次にデータベースへ接続する
mongo --shell
use admin
db.addUser('username','passwd')
で管理者を追加
使用しているデータベースにユーザを追加する場合は
db.auth('username','passwd')
で管理者権限でログイン後
db.addUser('username2','passwd2')
で追加可能
{"$err" : "unauthorized db:admin lock type:-1 client:127.0.0.1",
"code" : 10057}
上記のようなエラーは管理者権限を持っていないとなるので注意

詳しい設定方法は
File Based Configuration

September 21, 2011

Windows8をWinPE3を使ったネットワーク経由でインストール

たまたま4GBのUSBメモリ無く、それとネットワーク経由でのOSのインストールってどんなものなのか知りたくなったので試してみた。
使用したPCはdynabook S30。 こいつにRAM4GB+SSD64GBでアップグレードしてるのでWin7でもそれなり頑張ってくれていた。そんで今度はWin8で犠牲になってもらおうという魂胆である。

手順
1, USBから起動できるWindows PE 3の作成
1-1, Windows PEのイメージ作成
とりあえずここからWindows AIKをDLしてインスコ
インスコ終わったら管理者権限でWindows AIKの「Deployment ツールのコマンド プロンプト」を起動します。
そして以下のコマンドを実行するとWinPE起動イメージが出来上がります。
copype x86 D:\WinPE3
imagex /apply D:\WinPE3\winpe.wim 1 D:\WinPE3\mount
imagex /capture D:\WinPE3\mount D:\WinPE3\ISO\SOURCES\BOOT.WIM "WinPE for recovery" /boot /compress maximum 
oscdimg -n -bD:\WinPE3\etfsboot.com D:\WinPE3\ISO D:\WinPE3\recovery.iso

1-2, USBメモリにイメージを書き込む
USBメモリの初期化を行わなければなりません。
それ自体はこちらの記事を参照すると良いでしょう。
さて初期化が終わった所で1-1で作ったイメージをUSBメモリに書き込みます。と言ってもコピーだけなんですが。
D:\WinPE3以下のISOフォルダ内をすべてUSBメモリにコピーすれば完了です。
あとはUSBメモリにドライバー類をおいて起動します。

2, WindowsPE上からネットワークインストール
2-1, ドライバの読み込み
うまく起動できたらコマンドプロンプトが表示されているかと思います。
そこで
drvload "読み込みたいドライバのINFパス"
を実行すると良いと思う。
S30の場合RAIDドライバが無いといけないので
例) drvload C:\drivers\KR10.INF
としてドライバを読み込ませた。

2-2, ネットワークドライブのマウント
※ネットワーク越しからインストールするということでWin8のISOをマウントし、共有してあることを前提にします。
net use "任意のドライブレター" "共有先のパス" "ログインパスワード" /user:"ユーザ名"
という感じに実行します。
例) net use n: \\test-user\h password /user:test-user
こうすることでネットワークからOSインストールに必要なファイルへアクセスすることができます。

2-3, Windows8のインストール
ここからは結構すんなりとしています。
コマンドプロンプトからマウントした先が「n:」ドライバの時は
n:
setup.exe
と実行すればOSインストール画面が出てきます。
あとは普段のインストールと同じようにすればいいと思います。

以上。

August 15, 2011

Python向けTumblr APIライブラリ更新

v1からv2に新しくAPIが更新されたのでライブラリもそれに従いました。

使い方はtest.py見てください。 これまでどおりv1で良い方はリポジトリ変更して持って行ってください。

PyYoshi/Pytumb


実装していく中でわけわからないものとかあったし、そのうちDocなり書くかなぁ~。

まだまだv2の修正来るだろうし、新しく追加されるであろうapiを楽しみにしますかねぇ。 like/unlikeは早く実装して欲しいところw

June 30, 2011

JavaScriptでOAuth認証するときの注意点

JavaScript単体でOAuth認証する場合ConsumerKey/SecretKeyが見えてしまう。

難読化(base64など)ですぐにはバレないようにはできてもいずれ見つかってしますのだけれど、どのように他のJSなアプリは隠しているのだろうか?

単体ではなくサーバプロキシを通せばそんな意識しなくてもいいのだろうけど気になるところではある。

思いつく限りだと、JS本体には置かずバイナリをJSでパースしてキーを使うというものもある。

xhrでバイナリ取得
var xhr = new XMLHttpRequest();
xhr.open('GET', path, false);
xhr.overrideMimeType('text/plain; charset=x-user-defined');
xhr.send(null);
binary_string = xhr.responseText;

binary_stringをbinaryに変換する
bytes = []
for(var i=0, t; i < binary_string.length; i++){
bytes[i] = binary_string.charCodeAt(i) & 0xff;
}

こんなかんじでJS内でバイナリ化して、各自パース処理を書けばいいのではないでしょうか?

隠し方は人それぞれだと想いますが^^;

他の方法としてはyqlを使う方法もあるようですね。

How-to: Secure OAuth in JavaScript

June 29, 2011

nginxでfastcgiを使うとき

Pythonでweb app作ったので動かそうとサーバ周りをいろいろやってみたのだがfastcgiでの動作方法がいまいちよくわからなかった。

apacheのようにhoge.fcgiを指定してやれば動く、というものではないらしくどうすればいいのか結構時間を費やしてしまった。

1つのやり方としてspawn-fcgiを使ってプロセスを生成してやればいいらしい。 それをnginx.confのfastcgi_passに指定してやることでいいみたいだ。

試しにspawn-fcgiを単体起動して動かしてみた。

sudo spawn-fcgi -f test.fcgi -a 127.0.0.1 -p 9001 -u www-data -P /var/run/spawn-fcgi-moin.pid

こんな感じで起動してやればいい。

指定したipとportをnginx.confのfastcgi_passに指定して動けばおk


そんなかんじで。


起動スクリプト書いてみたので参考としてどうぞ



自動起動する場合はUbuntuはchkconfigではなくsysv-rc-confを使うこと。

sudo sysv-rc-conf test_app on

またはupdate-rc.d

June 06, 2011

Python向けtumblr APIライブラリ公開した。

OAuthにしか対応してないtumblr APIライブラリ公開した。
test.pyとかapi.pyとか見ればいいと思うよ。

各API毎のパラメータは公式API DOC見てください。
まぁtumblr api叩いたことある人なら大丈夫だと思うけど。

ということでほい

PyYoshi/Pytumb at master - GitHub

June 03, 2011

libwebpのビルド

Ubuntu 10.04に用意されていないようで自前で用意したときのメモ

$ cd tmp
$ wget http://webp.googlecode.com/files/libwebp-0.1.2.tar.gz
$ tar zxvf libwebp-0.1.2.tar.gz
$ cd libwebp-0.1.2
$ sudo apt-get install automake libtool
$ aclocal && autoconf && automake -a -c;
$ ./autogen.sh
$ ./.configure
$ make
$ sudo make install
$ ls -la /usr/local/lib/libwebp*
$ ls -la /usr/local/include/webp/*
$ ls -la /usr/local/bin/*webp

以上

April 18, 2011

VS2010でboostを扱う準備

研究室配属されて、スクリプト言語ばかり使っていた生活も変わるだろうとDreamSparkからVS2010を拝借した。
で、巷で話題のboostをVS2010で使えるようにした。(boostすげぇーってしか分かってないw
それとVSがうまくインスコされていないのか各PATHを手動で通している。

準備:
C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\vcvars32.batの修正
最初の行に
@SET VSINSTALLDIR=C:\Program Files\Microsoft Visual Studio 10.0
@SET VCINSTALLDIR=C:\Program Files\Microsoft Visual Studio 10.0\VC
@SET FrameworkDir32=C:\Windows\Microsoft.NET\Framework
@SET FrameworkVersion32=v4.0.30319
@SET Framework35Version=v3.5
を追加

:: @call :GetVSCommonToolsDir
:: @if "%VS100COMNTOOLS%"=="" goto error_no_VS100COMNTOOLSDIR
:: @call "%VS100COMNTOOLS%VCVarsQueryRegistry.bat" 32bit No64bit
該当部分をコメントにする。
※当環境ではこのようになったが各自インスコ場所とVer.は確認しておくこと。

PATHに
C:\Program Files\Microsoft Visual Studio 10.0\VC\bin
C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE
C:\Program Files\Microsoft Visual Studio 10.0\VC\include
を追加

INCLUDEに
C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include
C:\Program Files\Microsoft Visual Studio 10.0\VC\include
を追加

LIBに
C:\Program Files\Microsoft SDKs\Windows\v7.0A\Lib
C:\Program Files\Microsoft Visual Studio 10.0\VC\lib
を追加

ビルド:
Visual Studio コマンドプロンプトからboostrap.batのあるディレクトリに移動して
bootstrapを実行。
>bootstrap
bjam.exeが生成されると思う。
できなかったら、「boost\tools\build\bjam.log」あたりをチェックしてみるといいかもしれない。

bjamからboostのコンパイル
>bjam toolset=msvc-10.0 variant=debug,release threading=multi link=static
スペックが糞なせいかだいぶビルドに時間かかった。

VS2010の設定:
プロジェクトを読み込んだら
「Microsoft.Cpp.Win32.user」をダブルクリック、Includeディレクトリをクリックしboostディレクトリを追加。
Libraryディレクトリをクリックし、ビルドされた「stage/lib」を追加。

以上で終了です。
VS側の設定はまだビルドが終わってないので試してないけど、たぶん大丈夫でしょうw


参考:
VS2010 command prompt gives error : Cannot determine the location of the VS Common Tools folder.
MS C++ 2010 and mspdb100.dll
Compiling and configuring Boost C++ libraries for Visual Studio 2010