早速ではありますが、WebAPIのエンハンスを行いました。
ポートスキャン(namp)を実行し、その結果を返すAPI
グローバルIPのみの対応だったものが、これでFQDNも指定できるようになっています。
今回の修正は思いの外難しくはなかったですね。ちなみに、名前解決はgethostbyname関数を利用しています。この勢いで近い内にGUI版についても作成したいと思います!
2019年7月17日水曜日
2019年7月16日火曜日
Suama Online Serviceエンハンス予定(2019年7月時点)
最近、全然サービスを作る時間が取れていません。が、一方で作りたい機能やちょっとしたアイディアは溜まる一方です。この辺りで一回今後の予定を整理しておきたいと思います。
まず最近取り組んでいるのはポートスキャンの機能です。実は密かにWebAPIは一旦公開しています。
ポートスキャン(namp)を実行し、その結果を返すAPI
これをベースにしてGUIを作成中ではあるのですが、一旦WebAPI側を修正しようかと考えています。
というのも、このWebAPIですがターゲットに指定できるのをグローバルIPだけにしています。FQDNも指定できるようにしようかと思ったのですが、例えばDNSラウンドロビンをしようとしてAレコードを複数登録しているような環境だと、どのIPに対してポートスキャンをかけたのかが不明確になるのかなと思い、グローバルIPだけを指定できるようにしたわけです。
しかし、GUIを作るにあたり、やはりFQDNを指定できないのはなんか不便ではないか、と思い始めました。それで、GUIについては追加でFQDNに対応させようかとも思ったのですが、そうするとWebAPIをまず作って、という流れにしている意味がないのでは?と思い、先にWebAPIを修正しようとしている次第です。
ということで、今後の開発計画ですがまず、以下を実施します。
ポートスキャン機能WebAPI修正→ポートスキャン機能GUI作成
その後ですが、今度は接続元IPを返す機能に機能追加を行おうかと考えています。具体的には、接続元IPアドレスを返すAPI(json形式)とIPアドレス確認に国情報を追加しようかと考えています。自分がどこの国のIPから接続しているか分かると、(一部の方には)便利ですからね!既にIPアドレスの国を確認して返すAPIは作成済みなので、これはそんなに難しくはないはず、と考えています。(まあ、こういうのがはまったりするんですけど。)
ということで、第2弾の機能エンハンスは以下のようになる予定です。
接続元IPアドレスを返すAPI(json形式)、国情報追加→IPアドレス確認、国情報追加
その次ですが、色々と作りたい機能はあるのですが、前々から計画している英語化対応を一旦ここでやっておこうかと考えています。これ以上機能が増えてからだとやる気が起きないかも知れないので、ここがやり時だと判断しています。
英語化対応
まあ、とりあえずはこのくらいですかね。あまり先の計画を綿密に決めても計画倒れになりそうなので、まずはここをやりきることを目標にしたいと思います。
まず最近取り組んでいるのはポートスキャンの機能です。実は密かにWebAPIは一旦公開しています。
ポートスキャン(namp)を実行し、その結果を返すAPI
これをベースにしてGUIを作成中ではあるのですが、一旦WebAPI側を修正しようかと考えています。
というのも、このWebAPIですがターゲットに指定できるのをグローバルIPだけにしています。FQDNも指定できるようにしようかと思ったのですが、例えばDNSラウンドロビンをしようとしてAレコードを複数登録しているような環境だと、どのIPに対してポートスキャンをかけたのかが不明確になるのかなと思い、グローバルIPだけを指定できるようにしたわけです。
しかし、GUIを作るにあたり、やはりFQDNを指定できないのはなんか不便ではないか、と思い始めました。それで、GUIについては追加でFQDNに対応させようかとも思ったのですが、そうするとWebAPIをまず作って、という流れにしている意味がないのでは?と思い、先にWebAPIを修正しようとしている次第です。
ということで、今後の開発計画ですがまず、以下を実施します。
ポートスキャン機能WebAPI修正→ポートスキャン機能GUI作成
その後ですが、今度は接続元IPを返す機能に機能追加を行おうかと考えています。具体的には、接続元IPアドレスを返すAPI(json形式)とIPアドレス確認に国情報を追加しようかと考えています。自分がどこの国のIPから接続しているか分かると、(一部の方には)便利ですからね!既にIPアドレスの国を確認して返すAPIは作成済みなので、これはそんなに難しくはないはず、と考えています。(まあ、こういうのがはまったりするんですけど。)
ということで、第2弾の機能エンハンスは以下のようになる予定です。
接続元IPアドレスを返すAPI(json形式)、国情報追加→IPアドレス確認、国情報追加
その次ですが、色々と作りたい機能はあるのですが、前々から計画している英語化対応を一旦ここでやっておこうかと考えています。これ以上機能が増えてからだとやる気が起きないかも知れないので、ここがやり時だと判断しています。
英語化対応
まあ、とりあえずはこのくらいですかね。あまり先の計画を綿密に決めても計画倒れになりそうなので、まずはここをやりきることを目標にしたいと思います。
2019年6月23日日曜日
OSを再起動したところ403エラーが出てWEBサイトに繋がらなくなる
先程、久しぶりにサーバのメンテナンスをしていました。その中で一度サーバの再起動を行っていたのですが、再起動後に403エラーが出てWEBサイトに繋がらない、という事態が発生しました。正確に言うと、トップページに関してはApacheのWelcomeページが表示されるという、ある意味なお悪い事態が発生していました。
現象事態は以下のサイトを参考にさせて頂き、解消しています。
Apacheで403 Forbiddenが表示された時のチェックポイント5選 Wedding Park Tech Blog
SELinuxが有効になっており、そちらを無効にしたら復活しました。勿論、それとは別に勝手に復活したwelcome.confも対処しています。
原因ですが、恐らく何も考えずにyum updateを行い、Kernelが上がってSELinuxの設定がデフォルトに戻った、といったところでしょうか。yum updateは定期的にかけたほうが絶対に良い派ではあるのですが、やはりkernelまでガンガン上げるのは良くないのかもしれません。
以下のサイトを参考に、yum.confに除外を書いてしまいます。
yum updateでkernelを除外する方法 DQNEO
現象事態は以下のサイトを参考にさせて頂き、解消しています。
Apacheで403 Forbiddenが表示された時のチェックポイント5選 Wedding Park Tech Blog
SELinuxが有効になっており、そちらを無効にしたら復活しました。勿論、それとは別に勝手に復活したwelcome.confも対処しています。
原因ですが、恐らく何も考えずにyum updateを行い、Kernelが上がってSELinuxの設定がデフォルトに戻った、といったところでしょうか。yum updateは定期的にかけたほうが絶対に良い派ではあるのですが、やはりkernelまでガンガン上げるのは良くないのかもしれません。
以下のサイトを参考に、yum.confに除外を書いてしまいます。
yum updateでkernelを除外する方法 DQNEO
/etc/yum.confで指定する方法昔、kernelを除外するときは、それ以外にも除外したほうが良いモジュールがあるという資料を読んだ気がするのですが、忘れたので一旦気にしないことにしましょう。
exclude=kernel*
2019年5月21日火曜日
ARINからIPリストのダウンロードができない場合がある
以前作成したIPアドレス国確認という機能は、日々IPアドレス情報をICANN配下の管理組織(RIR)のサイトからダウンロードし、IPアドレスリストを生成しています。このIPアドレスリスト生成が2日連続で失敗していたので、原因を調べてみました。
結論から言うと、北米を管理しているARIN (American Registry for Internet Numbers) からのIPアドレスリストダウンロードに、時々失敗しているようです。なんか、認証を求められることがあります。
ftp://ftp.arin.net/pub/stats/arin/delegated-arin-extended-latest
でも、上手くいくときは上手くいくんですよね。謎です。
まあ向こう側の設定の問題だと思うので、しばらく様子見としたいと思います。
【2019/6/2追記】
なんか最近は上手くダウンロードできています。何でですかね?
今回は対向側が原因っぽいので、これで解決としておきたいと思います。
結論から言うと、北米を管理しているARIN (American Registry for Internet Numbers) からのIPアドレスリストダウンロードに、時々失敗しているようです。なんか、認証を求められることがあります。
ftp://ftp.arin.net/pub/stats/arin/delegated-arin-extended-latest
でも、上手くいくときは上手くいくんですよね。謎です。
まあ向こう側の設定の問題だと思うので、しばらく様子見としたいと思います。
【2019/6/2追記】
なんか最近は上手くダウンロードできています。何でですかね?
今回は対向側が原因っぽいので、これで解決としておきたいと思います。
2019年5月6日月曜日
PHPでroot権限でコマンドを実行させる
nmapを実行して結果を表示するページを作成中です。nmapはお馴染みのコマンドですが、実はroot権限でないと動作しません。
PHPで開発するとapaheユーザ権限でコマンドを実行するため、そのままだと実行できないわけです。
ということで、sudoを利用します。
visudoを利用してsudoの設定を編集します。
以下を追加。
Apache ユーザに別のユーザとして処理を実行させる 明滅するプログラマの思索
期待通り、sudoを利用してroot権限でコマンドが実行できます。
でも、何でもかんでも実行できるのも怖いなーということで、やはりnmapだけ実行できるように修正します。
PHPにて、root権限でコマンド実行 みズとおかズ
取り敢えず、これで大丈夫でそうです。
PHPで開発するとapaheユーザ権限でコマンドを実行するため、そのままだと実行できないわけです。
ということで、sudoを利用します。
visudoを利用してsudoの設定を編集します。
以下を追加。
apache ALL=(root) NOPASSWD: ALL参考にさせて頂きました。
Apache ユーザに別のユーザとして処理を実行させる 明滅するプログラマの思索
期待通り、sudoを利用してroot権限でコマンドが実行できます。
でも、何でもかんでも実行できるのも怖いなーということで、やはりnmapだけ実行できるように修正します。
apache ALL=(root) NOPASSWD:/usr/bin/nmap参考にさせて頂きました。
PHPにて、root権限でコマンド実行 みズとおかズ
取り敢えず、これで大丈夫でそうです。
2019年2月23日土曜日
アカウント選択が出るためにLet’s Encryptの自動更新が上手くいかない場合の対処
サーバを移行してから初のLet’s Encrypt自動更新がうまくいきませんでした。ログを見たところ、なんかTime Outしているようなので、手動実行したところアカウントの選択が出てしまっていました。
こんな↓感じです。
Please choose an account
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
2: YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): c
ここで処理が止まってTime Outしたんですね。
で、色々と調べていたのですが、Let’s Encrypt内の以下のディレクトリ配下に認証用のアカウント情報(秘密鍵とか)が入っていました。
/etc/letsencrypt/accounts/acme-v02.api.letsencrypt.org/directory
不要な方を削除したところ、アカウント選択画面が出なくなったのでこれで大丈夫そうですね!
以下のサイトを参考にさせていただきました。
Delete duplicate account on server?
こんな↓感じです。
Please choose an account
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
2: YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): c
ここで処理が止まってTime Outしたんですね。
で、色々と調べていたのですが、Let’s Encrypt内の以下のディレクトリ配下に認証用のアカウント情報(秘密鍵とか)が入っていました。
/etc/letsencrypt/accounts/acme-v02.api.letsencrypt.org/directory
不要な方を削除したところ、アカウント選択画面が出なくなったのでこれで大丈夫そうですね!
以下のサイトを参考にさせていただきました。
Delete duplicate account on server?
2019年1月6日日曜日
文字列を数値に変換する
PHPだと変数を特に宣言しなくても利用できてしまうので、数値チェックなどでうまく動作してくれなかったりします。そんな時、文字列を数値に変換するという方法があります。
文字列を数値に変換する
上記サイトからの抜粋ですが、10進数の場合は以下のように利用できます。
---
// 文字列型変数の宣言
$str = "11";
// 文字列型変数を数値型変数に変換する
$num10 = intval($str);
---
文字列を数値に変換する
上記サイトからの抜粋ですが、10進数の場合は以下のように利用できます。
---
// 文字列型変数の宣言
$str = "11";
// 文字列型変数を数値型変数に変換する
$num10 = intval($str);
---
登録:
投稿 (Atom)