namio's blog

新宿で飲み歩くインフラエンジニアのつぶやき. Techな記事を書いたり, 書かなかったり...

apacheのRewriteMapで小文字のURIを大文字に変換してリダイレクトさせる

皆さま, こんにちわ

今日はapacheネタですね^^

f:id:namio6243:20181012044417p:plain

とてもニッチなケースですが, 実際の業務でこのケースがあったので備忘のために記しておく. mod_rewriteに内蔵されているRewriteMapを使って実現する.

検証環境

httpd.confへ設定

この書き方だと (.*) に入る値(小文字)が右側のuppercase:$1 に大文字として引き継がれる.

RewriteMap  int:toupper
RewriteRule ^/aaa/bbb/ccc/(.*).html$   https://www.sample.co.jp/test/${uppercase:$1} [QSA,R=301,L]

逆もまだ然りで, 大文字→小文字の変換も可能

RewriteMap  int:tolower
RewriteRule ^/AAA/BBB/CCC/(.*).html$   https://www.sample.co.jp/test/${lowercase:$1} [QSA,R=301,L]

詳細は公式ドキュメント
mod_rewrite - Apache HTTP Server Version 2.4

以上.

GitLabの誰でも新規ユーザ登録できる機能を無効にする

皆さま, こんにちわ

もうすぐ11月ですね, 今年も3ヶ月切ってしまった....時が立つのは早い..

3ヶ月きったけど笑, 最近はGitLabをよく触るので小ネタを突っ込んでみる!

GitLabは, デフォルトだと Sign inタブの隣に register タブがあり誰でもユーザを新規作成できてしまいます. f:id:namio6243:20181020122633p:plain

特定の人間がユーザを適切に管理したい場合は, これだと困ってしまうので, この機能を無効にしたいですよね〜, なので試してみた!

検証環境

  • OS: CentOS 6.7
  • GitLab(omnibus): v11.0.3

設定手順

設定を無効にするには, 下記の通り.

ログイン後 > admin area > settings > sign-up restrictions

Sign-up enabledのチェックを外して, Save settings で適用する. f:id:namio6243:20181020121858p:plain

その後ログアウト, registerタブが消えていればOK! f:id:namio6243:20181020122943p:plain

こういう設定って忘れがちになりそうなので, ちゃんと設定しないといけないですねー
自戒の念をこめて書きましたw

以上.

python-gitlab使うとAPI経由でアカウント作成が簡単にできるよ

皆さま, こんにちわ(^^)

最近私の周りでは既にインフルエンザが流行り始めてます. 今年は流行るのが早いですねぇ...

インフル流行って, 毎回gitlabにログインして画面からアカウント作成するのが面倒になって来た今日この頃, いい加減API使って楽しようということでやってみました.

やりたいこと

f:id:namio6243:20181012033954p:plain

検証環境

クライアント

サーバ

  • OS: CentOS 6.7
  • GitLab(omnibus): v11.0.3

手順

まずはgitlabにログインして, APIに設定するための Access Token を生成する.

画面右上のアイコン > settings > access token f:id:namio6243:20181014133000p:plain f:id:namio6243:20181014133227p:plain

選択できる権限の範囲が4つあるが, 今回は①を選択してみる.

api Access the authenticated user's API

  • すべてのグループとプロジェクトの読み書きを含む、ユーザとしてのGitLabへのフルアクセス

②read_user Read the authenticated user's personal information

  • ユーザー名、一般のメールアドレス、フルネームなど、ユーザーのプロフィール情報への読み取り専用アクセス

③sudo Perform API actions as any user in the system (if the authenticated user is an admin)

  • Sudo機能へのアクセス、システム内の任意のユーザーとしてAPIアクションを実行する(管理者のみ利用可能)

④read_repository Read Repository

f:id:namio6243:20181014134301p:plain

f:id:namio6243:20181014134840p:plain

ここからはクライアント側Macでの作業.

ターミナルからpython-gitlabをinstallする.

$ sudo pip install python-gitlab

installされたことを確認する.

$ gitlab --version
1.6.0

公式サイトも参考にしつつ,

https://python-gitlab.readthedocs.io/en/stable/cli.html#configuration

Mac上に生成したAccess Tokenを元にconfigを作成.

$ vim ~/.python-gitlab.cfg

[global]
default = gitlab
ssl_verify = false
timeout = 30

[gitlab]
url = http://sample.com    ※gitlabのURLを設定する
private_token = Fia7Periue6qj_Lipvtd

設定したら, 試しに下記コマンド叩いてみてgroup情報を取得できればOK(あとでuserをgroup登録する時に必要なのでmemoしておく)

$ gitlab group list

gitlabアカウントを作成してみる(アカウントが作成されるとメールが飛ぶ. もし送られてない場合は, postfixが起動していないか宛先がおかしいか疑う)

気にしておく点としては以下の辺り

  • メールアドレスが他アカウントで使用されていると作成不可
  • パスワードオプション必須
  • デフォルトだとadmin権限は無効
$ gitlab user create --email testuser@example.com --username testuser --name testuser --password PASSWORD
id: 327
username: testuser

作成したgitlabアカウントをgroupに登録してみる

  • user-idは,user create時に出力されたidを指定
  • group-idは先程取得した gitlab group list で確認しておいたものから選択)
  • アクセス権のパラメータ一覧はこちらの通り
$ gitlab group-member create --group-id 5 --user-id 327 --access-level 20
id: 327
username: testuser

GitLabから Confirmation instructions という件名でメールが来ているので確認する. Confirm your accountのリンクをクリックして, ログインページへ遷移する.

ログインが成功することを確認したらアカウント作成は完了〜

f:id:namio6243:20181014143233p:plain

とりあえずAPIで作成することは出来るようになったので, これを利用してスクリプト化すればもっと楽になりそうですね.

以上.