All posts by chen
WP- REST-API with Java
API endpoint
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; public class Main { public static void main(String[] args) { try { URL url = new URL("http://wp-api.pw/wp-json/"); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); System.out.printf("Response: %d %sn", conn.getResponseCode(), conn.getResponseMessage()); BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); String input; while ((input = br.readLine()) != null) { System.out.println(input); } br.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
Posts
Get
The Posts endpoint returns a Post Collection containing a subset of the site’s posts.
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; public class Main { public static void main(String[] args) { try { URL url = new URL("http://wp-api.pw/wp-json/posts"); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); System.out.printf("Response: %d %sn", conn.getResponseCode(), conn.getResponseMessage()); BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); String input; while ((input = br.readLine()) != null) { System.out.println(input); } br.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
Post
Create a Post Requires authentication
import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.nio.charset.StandardCharsets; import java.util.Base64; public class Main { public static void main(String[] args) { try { String content = '{"title": "This is a post","content_raw": "This is some content"}'; URL url = new URL("http://wp-api.pw/wp-json/posts"); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); conn.setRequestProperty("Authorization", "Basic " + Base64.getEncoder().encodeToString("test:password".getBytes(StandardCharsets.UTF_8))); conn.setRequestProperty("Content-Length", String.valueOf(content.getBytes("UTF-8").length)); conn.setDoOutput(true); DataOutputStream wr = new DataOutputStream(conn.getOutputStream()); wr.writeBytes(content); wr.flush(); wr.close(); System.out.printf("Response: %d %sn", conn.getResponseCode(), conn.getResponseMessage()); BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); String input; while ((input = br.readLine()) != null) { System.out.println(input); } br.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
Delete
Delete a Post Requires authentication
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.nio.charset.StandardCharsets; import java.util.Base64; public class Main { public static void main(String[] args) { try { URL url = new URL("http://wp-api.pw/wp-json/posts/229"); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); conn.setRequestMethod("DELETE"); conn.setRequestProperty("Authorization", "Basic " + Base64.getEncoder().encodeToString("test:password".getBytes(StandardCharsets.UTF_8))); System.out.printf("Response: %d %sn", conn.getResponseCode(), conn.getResponseMessage()); BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); String input; while ((input = br.readLine()) != null) { System.out.println(input); } br.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
Media
Post
To create the raw data for an attachment. This is a binary object (blob), such as image data or a video.
import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.StringWriter; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.nio.charset.StandardCharsets; import java.util.Base64; public class Main { public static void main(String[] args) { try { char[] buffer = new char[1024]; StringWriter writer = new StringWriter(); FileReader fileReader = new FileReader("/home/chen/IMG_1551.jpg"); for (int n = 0; -1 != (n = fileReader.read(buffer));) { writer.write(buffer, 0, n); } fileReader.close(); String content = writer.toString(); URL url = new URL("http://wp-api.pw/wp-json/media"); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "image/jpeg"); conn.setRequestProperty("Authorization", "Basic " + Base64.getEncoder().encodeToString("test:password".getBytes(StandardCharsets.UTF_8))); conn.setRequestProperty("Content-Length", String.valueOf(content.getBytes("UTF-8").length)); conn.setDoOutput(true); DataOutputStream wr = new DataOutputStream(conn.getOutputStream()); wr.writeBytes(content); wr.flush(); wr.close(); System.out.printf("Response: %d %sn", conn.getResponseCode(), conn.getResponseMessage()); BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); String input; while ((input = br.readLine()) != null) { System.out.println(input); } br.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
Users
Get
This endpoint offers a permalink to get the current user, without needing to know the user’s ID.
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.nio.charset.StandardCharsets; import java.util.Base64; public class Main { public static void main(String[] args) { try { URL url = new URL("http://wp-api.pw/wp-json/users/me"); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); conn.setRequestProperty("Authorization", "Basic " + Base64.getEncoder().encodeToString("test:password".getBytes(StandardCharsets.UTF_8))); System.out.printf("Response: %d %sn", conn.getResponseCode(), conn.getResponseMessage()); BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); String input; while ((input = br.readLine()) != null) { System.out.println(input); } br.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
[自分用メモ] Amazon EC2で、あるアカウントのInstansをイメージ保存し、それを別アカウントにコピーする | Ultraひみちゅぶろぐ
仕事でAmazon EC2を使っている。その中で、あるアカウントAが所有するInstanceのイメージを作成し、それをアカウントBで使用するという場面が出てきた。要するに、あるアカウントが作成したクラウド内の仮想マシンをコピーして別アカウントで使用したいということだ。
Source: [自分用メモ] Amazon EC2で、あるアカウントのInstansをイメージ保存し、それを別アカウントにコピーする | Ultraひみちゅぶろぐ
AWS – EC2でCentOS6のEBS-Backed HVM方式 AMIをゼロから作る – Qiita
64bitの完全クリーンなCentOS環境のEBS-Backed AMIを作成する手順です。Amazon公式のAMIを使えばいいだけの話なのですが完全にゼロからクリーンインストールを行ったCentOS AMIを作成したいと思います。
Source: AWS – EC2でCentOS6のEBS-Backed HVM方式 AMIをゼロから作る – Qiita
複数台インスタンスプラン | 超高速 WordPress AMI 網元
ownCloud on AWS | ownCloud.jp
ownCloud on Amazon Web Service (AWS)owncloud.jpは、AWS(Amazon Web Services)と共同でAWS MarketplaceにownCloudを公開しています。ownCloudはOSS版と商用版がありますが、AWS Marketplaceでは、OSS版を採用し、無料で使うことができます。ただし、AWS(EC2やS3など)料金は発生致します
Source: ownCloud on AWS | ownCloud.jp
今年も「AWS Summit」参加!!年々参加者が確実に増えている。国内の企業の採用が増えたことに要因があるのでは?立ち見が出る盛況ぶり。 | 単刀直入に申しますと
しかし、AWSを2年程度ではありますが利用し実際の稼働環境として動かして改めてAWSに対する不安はなくなった。数回EC2が停止することがあった。障害はどんなに小さい物でも心臓が痛い 障害対応をして思ったのは「こんなにも簡単に復旧できるのか?」マネージメントコンソールとターミナルでサーバにコマンドを叩くだけで それだけ それだけでいい
Source: 今年も「AWS Summit」参加!!年々参加者が確実に増えている。国内の企業の採用が増えたことに要因があるのでは?立ち見が出る盛況ぶり。 | 単刀直入に申しますと
WordPressのver 3.5からダッシュボードに「リンク」が消えた
今日新規インストールしたWordPressから、リンク一覧が見つからない!
調べてみたら、なんとVersion 3.5(2012/12)から消えた。長いあいた気がつかなかったね。
Link Manager プラグイン追加で、今まで通りに「ダッシュボード」に「リンク」の項目が表示される。
BuddyPress 1.8 Release
BuddyPressは初級リリースから世話になったが、いまでも遺跡のサイトが沢山存在している。
BuddyPress のバージョン1.65まで、専用テーマ、もしくはBuddyPress Template Pack pluginを利用するなど、特別な対応が必要がである。
BuddyPress のバージョン1.7から、特製テーマ不要になり。時間がないためその件放置していた , BuddyPress 1.8へupgradeするきっかけに、BuddyPress Template Pack pluginを外して見た。
それを外した途端、画面にBuddyPressスタイルが消えた、どうしたらいいか、途方に暮れる!
BuddyPress のバージョン1.7から新規設置したサイトと比べると、設定など特に違いないし、なぜupgradeしてきたサイトが、BuddyPressスタイルが消えているかわからない。
Googleしたら、BuddyPress Template Pack pluginが、テーマファルタにいろいろ子フォルダを追加したとわかった。関連子フォルダ消すなど対策をしてた。それなら、一層テーマを完全に消して(つまりテーマフォルダを消す)、再度新規インストールしたら、依存BuddyPressスタイルが再度入れ直すになるので、問題解消になると思う。
早速管理画面からテーマを停止、テーマファイル削除、テーマ新規インストールをしてみたら、BuddyPressスタイルが効いて来た。
WordPress Brute Force Attacksにリソース使われない対策
4月頃から、WordPressを標的とする Brute Force Attacks が激しい!
自分のサーバも度々リソース使い果たされ、数度サービス停止に追い込まれました。
対策がとっても、更に大規模なアタックが押し寄せる。
WordPress公式サイトには、一応対策が書いてある。
http://codex.wordpress.org/Brute_Force_Attacks
しかしそれらの対策は、ハッキングされる危険が減るもので、サーバのリソースがたくさん使われることが変わりがない、リソース使い果たされる危険がまたある。
ネットでいろいろ調べるところ、ログイン自体を制限する方法が有効と考えられる。
早速.htaccess に下記のようにIP制限してみる。
RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$
RewriteCond %{REMOTE_ADDR} !^118\.9\.70\.195$
RewriteRule ^(.*)$ – [R=403,L]
なぜか効かない!そこでApacheの設定で、ログイン自体を制限する試みる。
<Files ~ “^wp-login.php”>
Order allow,deny
Deny from all
Satisfy All
</Files>
ErrorDocument 403 “Not acceptable”
確かアタックに効く!リソースも使われない。けど、使いたいときは、外さないとログインできない!
一層Basic認証と、IP制限を組み合わせしてみた。最終の形はこうでした。
<Files ~ “^wp-login.php”>
Order deny,allow
Allow from 118.9.70.195
Allow from 192.168.1
Deny from allAuthUserFile /var/www/.htpasswd
AuthGroupFile /dev/null
AuthName MembersOnly
AuthType Basic
require valid-userSatisfy Any
</Files>
ErrorDocument 403 “Not acceptable”
これて、許容IPなら制限なし、その他IPからの場合Basic認証の画面がポップアップ。リソースも使われない対策できた。