January 30, 2010 at 9:24 pm · Filed under Program, Tech
Github这个social coding的代码托管网站风骚得总有让人push, 攒蓝条的冲动.
以上是题外话.
最近回头去, 把以前断断续续没写完的Project gitar(web端的多用户仓库管理界面)继续拾起来开发,
也遇到了些问题: 比如, 如何实现github那样的, 对用户的公共仓库进行权限控制,
今天仔细翻了翻sshd和git的文档, 终于找到了一个解决方法.
[1] 修改sshd_config, 将PermitUserEnvironment设置为yes, 以保证能够在authorized_keys文件中, 对环境变量进行设置.
[2] 对于每个用户提交的RSA公钥, 在其
ssh-rsa AA….== foo@bar
的前面, 加上
environment=”GITAR_USER=username”
这样用户通过了公钥认证后, 当前的session的环境变量中, 即保存了用户的gitar用户名.
[3] 使用git hooks, 匹配环境变量 $GIT_DIR 路径中所包含的用户名信息, 和$GITAR_USER 中的当前用户名,
用户名不匹配时, 即通过产生不为0的exit code, 终止远端的push操作.
[4] 当然Github中还可以添加collaborators, 也可以对特定仓库添加public keys, 可以通过扩充用户session的环境变量来实现目的.
或者, 也可以使用shell脚本调用一个python脚本, 将 $GITAR_USER 的值与数据库中的collaborators进行比对.
·· Tags: git·github·Linux
January 3, 2010 at 4:57 pm · Filed under Gossip
很久以前做了个豆瓣-电子科大图书馆馆藏查询的Bookmarklet/Greasemonkey Script,
在图书馆借书的时候才发现手持设备根本没法查馆藏信息, 悲剧啊!
最近一直在看Google App Engine的文档, 就打算写个App来体验下.
于是就有了这个项目: 郫县豆瓣.mobile.
名字来源于电子科大幼儿园郫县金凤村附属电子高专,和豆瓣.
功能很简单, 就是利用豆瓣的API查询图书, 然后同时查询图书的馆藏状态.
把服务跑在GAE而不是栋力的服务器上的坏处是:
- 电子科大的DNS经常抽风, 外网访问图书馆系统不稳定
- 访问延迟偏高
昨天最开始测试的时候, urlfetch不停的超时, 最后不得已, 还是在209上搭了个桥, 囧.
稍微修改了下原来用PHP写的Web Services, 支持多个请求合并, 这样可以减少urlfetch的调用数目.
不过既然做了个网站, 就打算把原来只停留在TODO list上的features全部实现了,
包括:
- 用户借书清单, 对我这种很久去一次图书馆借一堆书的人省得用纸笔了
- 图书自动续借, 懒人专用
- 图书借阅信息双向同步(比如借了本书就在豆瓣上标记为”在读”, 归还后标记为”读过”), 懒人专用
- 归还通知, XMPP的也好, 邮件的也好, 甚至Twitter的也好, 看有没有精力折腾吧.
比较落后于时代, 在郫县豆瓣.mobile里也是第一次用Google Analytics,
不得不说Google Analytics和Google App Engine的确是简单好用到极致了.
最后, 郫县豆瓣.mobile项目是开源的, 基于Apache License 2.0发布,
代码托管在Github, 地址: http://github.com/killkeeper/Douban-UESTC-Library-Mashup-Mobile

·· Tags: douban·GAE·github·Google·Python