前一阵子做了 盒子上的 user management的功能。 想一想 有什么经验,或者困难值得记录的呢?
我用链表来保存OldPassword,用timer来定时。 这两个都是要动态分配内存的。 所以在删除用户的时候,需要释放这部分内存。
尤其是删除用户时,需要先停止和移除定时器,否则到时候触发定时器时,就会造成crash。 因为该用户已经删除了。
比较难搞的就是如何计算用户密码的使用时间。 因为我们的盒子没有电池,所以在用户关机后,时间信息丢失了。
而VZ要求我们提示用户,当用户在多少天后还没有改变密码的话需要重新设置密码。 但是因为关机的原因,这个时间不好计算。
我们采用的是用NTP来计算时间的方法。 对每个用户记录了剩余的相对时间,和修改密码的绝对时间。
每次启动时,就根据NTP的时间以及修改时的绝对时间来计算出剩余时间。 这样就等于可以忽略了关机时的影响。
当然这个功能需要NTP的支持,如果NTP不支持的话,还是不行。