2010-09-24
How to Setup Ubuntu Server on Rackspace
Rackspace上にUbuntuサーバを作る度に、iptables設定やssh portの番号を変更するやり方を忘れてしまい、右往左往してしまうので、ちょっと今回のサーバ立て直しを機にメモをしときます。もし同じような境遇の人がいたら参考にしてください。
The following instructions are my memos for initial setup Ubuntu 10.04 server on Rackspace. After initializing, I often change my port number, because servers on Rackspace are often attacked by the port scan, so I recommend to change your port no. as soon as possible after your initializations.
Setup Ubuntu Server
================
0. Any information on Ubuntu 10.04 Server can be found in the following page.
http://cloudservers.rackspacecloud.com/index.php/Ubuntu_10.04_LTS_(Lucid)
1. Follow the articles to setup.
http://cloudservers.rackspacecloud.com/index.php/Ubuntu_-_Setup
2. Change your port number to make your server secure.
# emacs /etc/ssh/sshd_config
# What ports, IPs and protocols we listen for
#Port 22 <--- Comment out
Port 12345 <--- Change port number as you wish
# /etc/init.d/ssh restart
# iptables -I INPUT -p tcp -m tcp --dport 12345 --syn -j ACCEPT
# /etc/init.d/ssh restart
# iptables-save > /etc/iptables.rules
3. Try to login the server from your computer.
$ ssh -p 12345 YOUR_UBUNTU_SERVER
If you can login your server, it's done.
Your server is now able to avoid from the port scan attack
Option: For Printing Japanese
=========================
$ apt-get install language-pack-ja
$ dpkg-reconfigure locales
$ update-locale LANG=ja_JP.UTF-8
Option: Print error message in English
# echo 'export LC_MESSAGES="en_US.UTF-8"' >> ~/.profile
References:
1. LANDISK HACKING DIARY
2. Ubuntuでロケール(ja_JP.eucjp)追加, なんとなくメモ
2010-09-19
アカウント名変更のお知らせ
twitterではちょろっとつぶやきましたが、次の理由から、アカウント名、およびそれに伴うURL名等を一斉に変更しました。
- 1. yasu_ninety9って読み方が分かりづらい。-> 覚えにくい
- 2. そもそも文字列が長い。-> twitterだと致命的
- 3. 日本語で4文字だと覚えやすい、らしい。(友人談)
お手数をおかけしてしまい申し訳ありませんが、もしリンクなど張っていた場合は、再度張り直して頂けると幸いです。なお、主な変更点は次の通りです。
- Twitter: @yasu_ninety9 -> @yasulab
- Web: http://www.arukou.sakura.ne.jp/yasulab/ -> http://www.yasulab.com/
- Blog: http://yasu1987.blogspot.com/ -> http://yasulab.blogspot.com/
留学生活も、もうそろそろで1ヶ月。ぼちぼち授業および課題の内容も高度になってきました。”徹夜なんて絶対したくない”と頑なに決意したものの、意外と慣れればどうにかなるもんです。いや、それでも出来ればしたくないものですが。
唯一の心のよりどころである少年ジャンプも、アメリカだと月刊少年ジャンプになるらしく、しかもブリーチとかNarutoとか一部の漫画しか載っていない。当然セリフは英語で、しかも価格は日本の2倍以上。これなんてイジメorz。マンガオンラインのさらなる発展を心から、心から応援しています。
2010-09-09
OAuth on Simple Twitter Bot
僕は直前になるまで、というか、実際に仕様変更されるまで気付かなかったわけですが、今月の頭からTwitterのBasic認証が使えなくなったそうですね。従って、Basic認証を用いてTwitterのAPIを使用しているBot達は、仕様変更の日を境に、屍と化してしまっているそうです。
僕が作ったtango! botなども同様に、Basic認証を利用していたので、屍と化してしまいました。ですが、tango! botにザオリクを唱えて欲しい(?)というご要望に応えまして、先週末にOAuth認証システムを実装しました。
で、せっかく実装したので、Simple Twitter Botを例にとって僕の実装例を次の場所に置いておきます。参考になるかどうかは甚だ疑問ではありますが、もし何かの参考になれたら幸いです。
*main.py(要約)
#!/usr/bin/env python
#! -*- coding: utf-8 -*-
from appengine_twitter import AppEngineTwitter
from basehandler import BaseHandler, h
import twitter
import sys, os, pickle
from oauthtwitter import *
# User Setting and Run Twitter Bot
#debug_flag = True
debug_flag = False
MAX_LEN = 140
SEARCH_TERM = u'"hogehoge" OR foobar'
CONSUMER_KEY = "???"
CONSUMER_SECRET = "???"
KEY_FILE_API = "api_key.dat"
KEY_FILE_TWITTER = "twitter_key.dat"
BOT_USERNAME = "YOUR_BOT_NAME"
BOT_PASSWORD = "???"
def oauth_twitter():
access_token = pickle.load(file(KEY_FILE_API))
return OAuthApi(CONSUMER_KEY, CONSUMER_SECRET, access_token)
# twitter.Api.__init__ method for override.
def twitter_api_init_gae(self,
username=None,
password=None,
input_encoding=None,
request_headers=None):
import urllib2
from twitter import Api
self._cache = None
self._urllib = urllib2
self._cache_timeout = Api.DEFAULT_CACHE_TIMEOUT
self._InitializeRequestHeaders(request_headers)
self._InitializeUserAgent()
self._InitializeDefaultParameters()
self._input_encoding = input_encoding
self.SetCredentials(username, password)
def run(name, pswd, search_term):
acc_token = pickle.load(file(KEY_FILE_API))
gae_twitter = AppEngineTwitter()
gae_twitter.set_oauth(CONSUMER_KEY,
CONSUMER_SECRET,
acc_token.key,
acc_token.secret)
results = gae_twitter.search(search_term.encode('utf8'), {'rpp': 20})
api = oauth_twitter()
escape_user_list = []
escape_user_list.append(name)
# Get most corrently tweeted tweet
status = api.GetUserTimeline()
for s in status:
if s.text.startswith("RT"):
recent_tweet = s.text
break
else:
print "The following tweet would be posted by hand, so skipped it."
print "Tweet: " + s.text.encode('utf8')
print
print "Recent Tweet: "+recent_tweet.encode('utf8')
print
# Search Most Recent Tweet
results.reverse()
flag_enable = 0
for i,result in enumerate(results):
rt = "RT [at]" + result['from_user'] + " " + result['text']
rt_len = len(rt)
if flag_enable:
print "I am going to tweet the tweet above."
"""
Retweet and exit
"""
print "I have re-tweeted: "+rt.encode('utf8')
print "Result of my re-tweeting: " + str(gae_twitter.update(rt.encode('utf8')))
exit()
if recent_tweet.replace("@", "[at]") == rt.replace("@", "[at]"):
flag_enable = 1
if flag_enable:
print "There are no tweet found that I should tweet."
exit()
print
print "There are no tweets recently tweeted, so tweet the oldest tweet."
print
for i,result in enumerate(results):
rt = "RT [at]" + result['from_user'] + " " + result['text']
rt_len = len(rt)
print "I am going to tweet the tweet above."
"""
Retweet and exit
"""
print "I have tweeted: "+rt.encode('utf8')
print "Result of my re-tweeting: " + str(gae_twitter.update(rt.encode('utf8')))
exit()
# overriding API __init__
twitter.Api.__init__ = twitter_api_init_gae
# Start to run
run(BOT_USERNAME, BOT_PASSWORD, SEARCH_TERM)
*使い方(READMEから一部引用)
This bot runs in the following ways.
1. Search tweets using 'search_term' in Twitter.
2. Re-tweet the tweets.
HOW TO SETUP:
1. Register your OAuth client on Twitter
URL: http://twitter.com/oauth_clients
* you MUST choose 'client' for Simple Twitter Bot.
2. Run 'python register_pin.py' and
use CONSUMER_KEY and CONSUMER_SECRET you got from the registeration.
3. Change setting variables(e.g. CONSUMER_KEY, CONSUMER_SECRET) in main.py
4. Run Google App Engine dev_server and visit the following URL
URL: http://localhost:8080/cron/update
* If you finish all of your setting, set debug_flag in main.py off.
5. Done!
Enjoy developing your own twitter bot!
*他、ソースコード一式
This bot runs in the following ways.
1. Search tweets using 'search_term' in Twitter.
2. Re-tweet the tweets.
HOW TO SETUP:
1. Register your OAuth client on Twitter
URL: http://twitter.com/oauth_clients
* you MUST choose 'client' for Simple Twitter Bot.
2. Run 'python register_pin.py' and
use CONSUMER_KEY and CONSUMER_SECRET you got from the registeration.
3. Change setting variables(e.g. CONSUMER_KEY, CONSUMER_SECRET) in main.py
4. Run Google App Engine dev_server and visit the following URL
URL: http://localhost:8080/cron/update
* If you finish all of your setting, set debug_flag in main.py off.
5. Done!
Enjoy developing your own twitter bot!
*他、ソースコード一式
*使ったもの
- App Engine Twitter
- python-twitter
- oauth-python-twitter
- Google App Engine
*参考にさせて頂いたサイト
登録:
投稿 (Atom)


