【脱獄アプリ開発】第10回ichitasoリポジトリ変更のお知らせとCydiaダウンロードカウンタの設置方法

   


Cydia用のリポジトリが更新するたびにエラーとなってしまったため、新たにURLを作り直しました。また新しくするついでに、自分のRepoからどのくらいダウンロードされているかわかるカウンタを設置しましたので、その方法も紹介いたします。

ichitaso repositoryの登録方法



分かりやすいように動画にしてみました。



Cydia→ソース→編集→追加→ソースを追加で登録して下さい。

Link: ichitaso's repository

以前のRepo(ichitaso.com/apt)を登録してる場合、削除してください。



以前のRepoのキャッシュを削除




Unable to parse package file
/var/mobile/Library/Caches/com.saurik.Cydia/lists/ichitaso.com_apt_._Packages.IndexDiff(1)

古いRepoを削除してRefreshすれば消えます。

もし残ってる場合、iFunBoxやiFileなどで以下のファイルを消して下さい。

/var/mobile/Library/Caches/com.saurik.Cydia/listsディレクトリに移動
  • ichitaso.com_apt_._Packages
  • ichitaso.com_apt_._Packages.IndexDiff
  • ichitaso.com_apt_._Release
今月の3/3にDDosアタックを受けまして、CloudFlareを利用しサーバーを移設などしてからおかしくなりました。ご迷惑をお掛けして申し訳ありませんでした。



(Googleのサジェストにも反映される始末…)

それによって色々と得るものがあったので、サーバー環境やWordPressの移設方法などを後ほど記事にしてまとめておきたいと思います。

個人でホスティングしているRepoにダウンロードカウンタを設置する方法


さて、これからが本番です。

自分のRepositoryから何のパッケージがどれくらいDownloadされてるか、気になるところですよね。せっかくなのでダウンロードカウンタを設置してみました。(実はめっちゃハマりました)

ググってみるとHASHBANG ProductionsのAdam D (kirb)(@hbkirb)さんのGistが見つかりました。

Link: Self-hosted Cydia Repo Download Counter

簡単な流れをまとめると、自分のサーバーに専用のMySQLテーブルを作成して、.htaccessでリダイレクトさせ、PHP経由でダウンロードした回数をカウントするというものです。

こちらはヒラクチャン(@hirakujira)さんも利用しているみたいで、本人に方法を聞いてみたのですが結果うまく行きませんでした。

ヒラクチャンはリダイレクトは使用しておらず、手動でPackagesファイルを編集しているとのこと。

うーん…めんどい(´-ω-`)

iphoneリポジトリ専用のダウンロードカウンターの設置方法 | おまっちゃおの備忘録

ということで、こちらを参考にさせていただきました。

ちなみに古いファイルなので、PHP 5.xで推奨されていない「mysql_select_db」などで行いますが、ちゃんと動いたので良しとします(汗)

必要なもの

サーバーに専用のMySQLテーブルを作成する


1.SSHでサーバーに接続しmysqlにログイン

mysql -u root -p

2.テーブルを作成する(例.ichitasorepo ※名前は適宜変えて下さい)

mysql> CREATE DATABASE ichitasorepo CHARACTER SET utf8;

mysql> show databases;

mysql> use ichitasorepo;

Database changed

CREATE TABLE `download` (
`filename` varchar(255) NOT NULL,
`dldate` DATETIME,
`stats` int(11) NOT NULL,
`ip` varchar(20) NOT NULL default '',
`device` varchar(20) NOT NULL default '',
`firmware` varchar(20) NOT NULL default '',
`agent` varchar(250) NOT NULL default '',
PRIMARY KEY  (`filename`)
) ENGINE = MYISAM DEFAULT CHARSET=utf8;

Query OK, 0 rows affected (0.01 sec)

mysql> show tables;

+------------------------+
| Tables_in_ichitasorepo |
+------------------------+
| download               |
+------------------------+
1 row in set (0.00 sec)

mysql> \q

以上でMySQL側の準備は完了です。

サーバーにPHPを配置する


1.cydia_repo_counter.zipを解凍して編集

counter
├─createtable.sql
└─root
  ├─.htaccess
  ├─config.php
  ├─download.php
  └─yourdebsfolder
    └─counter.php

解凍するとこんな感じのファイルが入ってます。

「createtable.sql」は、すでに作ったので使いません。「.htaccess」はApacheの場合使えるかもですが、自分の場合Nginx使ってるので使いません。

Apacheで上手く出来ている方がいらっしゃいましたら教えて頂けると幸いです。

Nginxでリダイレクトの設定をすると「Bad URL」となりました。



vi /etc/nginx/conf.d/default.conf

server {

    ###### 省略 ######

        location / {
                proxy_no_cache $do_not_cache;
                proxy_cache_bypass $do_not_cache;
                proxy_cache_key $proxy_cache_key;
                proxy_pass http://unix:/var/run/nginx.sock;

                #rewrite ^(/apt/debs)/(.*).(deb|zip)$ ./counter.php?file=$2.$3 redirect;
        }

    ###### 省略 ######


PCのブラウザからはダウンロード出来るのですが、Cydiaの「Telesphoreo APT-HTTP」だと不正なURLとして扱われるようです。

2.config.phpを編集する

$Benutzer = "USERNAME"; これを $Benutzer = "root"; にします。

$Passwort = "PASSWORD"; これを $Passwort = "rootのパスワード"; にします。

mysql_select_db("DB-Name", $verbindung); これを mysql_select_db("作ったデータベースの名前", $verbindung); 自分の場合ichitasorepoにします。

3.yourdebsfolderを開き「counter.php」を編集する

$path = $_SERVER['DOCUMENT_ROOT']."/debs/"; ここをdebファイルがあるディレクトリに指定します。

4.サーバーにファイルを入れる

自分の場合で説明します。

Cydia Repoのディレクトリ
├─Packages.bz2
├─Release
├─Release.gpg
├─index.html
├─CydiaIcon.png
├─config.php
├─download.php
└─debs
   ├─OOO.deb
   ├─OOO.deb
   └─counter.php

こんな感じになります。

UbuntuでPackages.bz2を作成する


【脱獄アプリ開発】第1回 VirtualBoxにLinux Ubuntuをインストール! | Will feel Tips 【脱獄アプリ開発】第1回 VirtualBoxにLinux Ubuntuをインストール! | Will feel Tips 【脱獄アプリ開発】第1回 VirtualBoxにLinux Ubuntuをインストール! | Will feel Tips

第一回目にVirtualBoxにUbuntuをインストールする方法を紹介しましたが、自分はVMware(Windows版)を使用しています。

また、バージョンは『Ubuntu 12.04』を使用しています。

debファイル生成時にtar.xzになるのは新しいバージョンを使っているからかもです(誰となく)

Link: autorepo_counter.zip

こちらのシェルスクリプトを使って簡単にPackagesのダウンロードURLを変更することができます。Macだと動かないみたいなので手動でやっても構いません。

『autorepo_counter』に実行権限を与えダブルクリック→「端末内で実行する」をクリックしガイダンスに沿って操作して下さい。

ポイントはPackagesファイル内に記載されている.debファイルのURLを「counter.php?file=」という風に記述して、php経由でダウンロードされるようにすることです。

具体的な例を挙げますと、「./debs/OOO.deb」を「./debs/counter.php?file=OOO.deb」という風に記述させます。

※「Packages(.gz or .bz2)」があるディレクトリの下に「debs」フォルダがあって、その中にdebファイルがある状態です。

【脱獄アプリ開発】第3回 Google App Engineを使ったCydiaリポジトリの作成方法 | Will feel Tips 【脱獄アプリ開発】第3回 Google App Engineを使ったCydiaリポジトリの作成方法 | Will feel Tips 【脱獄アプリ開発】第3回 Google App Engineを使ったCydiaリポジトリの作成方法 | Will feel Tips

詳細は、以前紹介したこちらを参考にして下さい。

URLの書き換えは『Packages.bz2(ミラーRepo用にあえてgzから変更しています)』に圧縮する前に、Packagesファイル内を[sed]コマンドで行っています。

sed -i "s/\.\/debs\//\.\/debs\/counter\.php\?file\=/g" Packages

あとは『Packages.bz2』をRepoのサーバーにアップロードして完了です。

ダウンロードカウンタの確認



上手く設置が出来たら、「http://RepoのURL/download.php」にアクセスするとテーブルで表示されます。

そのままですと、誰でもアクセスできる状態なのでBasic認証を導入します。

Nginxを使用しているので、事前に準備が必要です。

yum install httpd-tools 

cd /etc/nginx
htpasswd -c .htpasswd ユーザー名
New password: パスワード
Re-type new password: パスワード

vi /etc/nginx/conf.d/default.conf

server {

    ###### 省略 ######

        location ~ /apt/download\.php$ {
                fastcgi_pass    unix:/var/run/php-fpm/php-fpm.sock;
                fastcgi_index   index.php;
                fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include         fastcgi_params;

                auth_basic "Restricted";
                auth_basic_user_file /etc/nginx/.htpasswd;
        }
}

server {
    listen 80;
    root /var/www/wordpress/apt;
    server_name cydia.ichitaso.com www.cydia.ichitaso.com;

    location ~ /download\.php$ {
        fastcgi_pass    unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index   index.php;
        fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include         fastcgi_params;

        auth_basic "Restricted";
        auth_basic_user_file /etc/nginx/.htpasswd;
    }

    location ~ /.*\.php$ {
        fastcgi_pass    unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index   index.php;
        fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include         fastcgi_params;
    }
}

auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;

こちらを追加することでBasic認証が有効となります。

Apacheの場合は「.htaccess」と「.htpasswd」をディレクトリに設置して下さい。

参考:アクセス制限ベーシック認証~パスワードでページを守ろう~ - .htaccessの小技編 - futomi's CGI Cafe

それでは最後にサーバーをリセットします。

/etc/init.d/mysqld restart
/etc/init.d/php-fpm restart
/etc/init.d/nginx restart

以上で終了です。お疲れ様でした!

 

この記事が気に入ったら
いいね!しよう

最新情報をお届けします

Twitter でWillFeelTipsをフォローしよう!


  関連記事

【脱獄アプリ開発】第1回 VirtualBoxにLinux Ubuntuをインストール!

[Photo : Technosamrat] Jailbreakアプリ、Twea ...

【脱獄アプリ開発】第6回 iOSOpenDevを使ったSBSettingsトグルの作り方

今回は、iOSOpenDevを使ってSBSettingsのトグルを作る方法を紹介 ...

Public DNS 「8.8.8.8」「129.250.35.250」は本当に速いのか?

ネタフルさんの以下の記事を筆頭に、普段使っているプロバイダのDNSサーバーをPu ...

【脱獄アプリ開発】第3回 Google App Engineを使ったCydiaリポジトリの作成方法

さて!連載3回目です。今回は、自分で作ったdebパッケージをCydia Repo ...

【Twitter】iPhoneやブラウザから画像付きで見ているページをシェアできる『TwitShot』

気になったページをTwitterにシェアしたいとき、簡単にサムネイル付きのツイー ...

 - iOS development, Web service