wifidog_auth server upgrade

Wifidog认证服务器升级的最优方法
Wifidog认证服务器升级
将成品服务器的认证服务器进行升级,安全流程如下:
1 阅读Changelog;
2 在升级前使用sql/backup_database.sh;
3 测试;
l 在研发设备上检测最新的SVN(不能与你的服务器使用同一台,除非你真的了解你在做什么;你需要修改config.php来指向一个不同的DB,并且你不能直接使用还原的脚本)
l 在研发设备上还原实时数据库。检测是否一切有序。(内容包括登录,查看你最复杂的门户)。更复杂些的测试内容有在开发服务器上安装网关并且登录,尝试创建一个新帐户;
4 在实时服务器上运行SVN;
5 在认证服务器主页面确认架构已经升级;
6 如果Changelog中提到了依赖性变更,那就在Dependencies页面启动安装脚本。
已测试的稳定的修订包
虽然wifidog在升级时应该被反向兼容,但这仍然会不可避免的中断一些进程。当用户安装最新版本的wifidog时,也是在冒险。这升级版本也会被新的未经测试的功能或修改所中断。
这部分是记录已知的,已测试的和可运行的修订包。可能更新的包也可以运行,但在这里却没有列举。这些是为那些寻找已测试并可运行的人准备的,因为他们不想很麻烦的调试他们的新版本。
知道最新的版本号,使用命令:svn info。你需要在wifidog的文件夹内。
版本号:1226 (Thu, 17 May 2007 at 16:25:43) - Tested by Wadz (wmaalouf -@at- fqccl d0t org)
细节:我从1154版本顺利升级到此版本。但刚才我尝试升级到最高版本(1250)时崩溃了,我用了好几个小时进行还原,当我找到可运行的版本时进行了重新安装。新数据库架构升级经常失败。所以最后我获取了1226版本,并成功安装。
在Debian etch服务器的PHP5.2.0-8和SQL7.4.17进行测试
-->重新安装:svn -r 1226 checkout https://dev.wifidog.org/svn/trunk/wifidog-auth
-->升级:svn update -r 1226

本文章由 http://www.wifidog.pro/2015/01/15/wifidog-auth-server-upgrade.html 整理编辑,转载请注明出处

wifidog_auth server adminstration--part5

如何授权和使用用户配置文件
创建配置文件
1.创建必要的内容类型过滤器
这些数据类型在配置文件中可能会用到。
每个内容类型过滤器的格式是标准陈列:在内容类型执行的函数引用。格式是array(array(callback_funct, array(callback_funct_parameters))
注意的是callback_funct表示对象已被验证,所以它没有静态的classname。
例如:获取文档子类别的Simple内容类型,陈列应为
array(array('isSimpleContent'), array('isContentType',array(array('File'))) );
注意的是第二个callback:isContentType,用了单参数。当$criteria_array指定callback参数为列表,将“File”传到“isContentType”应该写成array(array('File'))。
你也许至少需要以下过滤器:
Avatars
array (
array (
'isContentType', array (
array (
'Avatar',
),
),
),
)
Hyperlink only
array (
array (
'isExactContentType', array (
array (
'HyperLink',
),
),
),
)
SimpleLangstring only
array (
array (
'isExactContentType', array (
array (
'TrivialLangstring',
),
),
),
)
SimplePictures
array (
array (
'isContentType', array (
array (
'SimplePicture',
),
),
),
)
SimpleString only
array (
array (
'isExactContentType', array (
array (
'SimpleString',
),
),
),
)
2 创建配置文件模版
包括配置文件的字段列表,当用户进行编辑,其它用户浏览时可见的选项标签。
3 将配置文件模版与网络进行关联
4 编辑你自己的配置文件进行测试

数据模型
Network_has_profile_templates
l Network_id:每个profile_field只有一个网络
l Profile_template_id:配置文件模版id
l Is_invisible boolean:用户是否希望用匿名模式
Profile_templates
l Profile_template_id guuid:配置文件id
l Creation_date timestamp
Profile_template_fields
基本上是用户可以进行填充的数据字段列表。被管理员用来指定用户配置文件中可得的字段。
l Display_label content_id:配置文件显示界面的字段标签。Content id必须可本地化,最好是个图片。
l Admin_label content_id:用户编辑界面的字段标签。
l Content_filter filter_id:用来列出指定内容类型的过滤器。这些内容类型允许被此配置文件字段的用户当作函数来进行记录。UI代码应该保存在ContentTypeFilter类别当中。
l Order:配置文件中字段显示的顺序
l Semantic_id text:用户不可见。这字段有两个作用:

  1. 最终用于允许输出配置文件的微格式和XML算法。
  2. 一些semantic_id函数对于wifidog是有特殊意义的。例如配置文件中存在foaf:img的元素,它将用来在在线用户列表中显示用户的自定义头像。用来指定网络配置文件字段的管理界面必须列出所有对wifidog有特殊意义的semantic_id函数。
    User_has_profiles
    用配置文件连接用户表格
    l User_id:用户id
    l Profile_id:配置文件id
    l Is_invisible Boolean:用户是否希望用匿名模式
    Profiles
    从技术上讲,我们应该直接在user_profile_fields连接用户表格,但这不可取。配置文件和user_has_profiles tables被替换的原因是:
  3. 允许在用户创建自己的配置文件前添加用户协议。
  4. 允许更便捷的保存非数据元素,例如可视模式,是否其它用户可以发送用户短信息等等。
  5. 如果用户需要,允许每个网络都有一个配置文件。
    l Profile_id guuid:配置文件id
    l Creation_date timestamp
    Profile_fields
    由终端用户输入的配置文件函数。
    l Content_id:当前连接的数据
    l Last_modified timestamp:起初不会被应用,因为它要求每个内容类型要有调节器和processAdminUI并反馈数据是否被正确修改。这实际上并不困难并且如果我们想衡量用户如何使用和更新他们的配置文件的话,这点都是最基本的。
    ContentTypeFilter
    ContentTypeFilter已存在并且应用在内容管理器的一些部分。基本上它会在每个备用ContentType以静态的方式用自己的参数启用函数引用。一些Content类的函数也是因为这个被指定的。当它非常灵活的运转时,从代码指定过滤器是唯一的方法。我们需要UI和数据表示法,这会很困难但并非不可能。困难点有:
    l 列举可得的滤函数
    l 解决已存在的过滤器由于代码中的滤函数丢失导致失效,从过滤器永久删除字段。
    l 在callback函数参数输入的界面,它以能够让PHP在不使用eval()的情况下进行解析

本文章由 http://www.wifidog.pro/2015/01/15/wifidog-auth-server5.html 整理编辑,转载请注明出处

wifidog_auth server adminstration--part4

Wifidog门户自定义
简介
l 自定义静态内容被作为内容类型添加到数据库。他们会显示在结构化区域。
l 在HTML里无布局
l Logo和界面布局以CSS形式添加
自定义界面
添加自定义内容
所有自定义内容都应该通过内容管理器显示在数据库中,通常使用TrivialLangstring和Langstring类型。查看
l ContentDistributionSystem
l doc/auth-server/ContentManagerTutorial
自定义内容和界面元素的逻辑定位
注:下文提到的是系统目前使用的构架布局,但HTML和CSS重构还没有完成。
我们正在从HTML中将同样的布局导向代码移出,所以在CSS中可做的事还是要在CSS中完成。每个页面的结构标识和内容元素都将始终如一的向CSS提供更多的关联信息,并且让样式表更易编写修改。结构标识的逻辑图可以从以下途径获得:
· attachment:"structural_layout_wifidog.odg" Open Document
· attachment:"structural_layout_wifidog.pdf" PDF
当内容从网络接口分配出来时,就会具有三个属性:

  1. Page:登录页面,门户或其它(其它是指除了登录页面和门户外,还有管理界面和其它页面)
  2. Area:图表中灰色分区的ID
  3. Display order:在一个区域内的内容显示顺序
    更改布局
    Stylesheets在wifidog可以做以下应用:
  4. 默认wifidog stylesheet(默认主题)
  5. 网络指定的由网络参数选择的stylesheet(网络主题公园)
  6. Stylesheet内容类型被添加在内容管理器
    Ø 使用CSS主题管理器进行样式化
    所有网络主题公园都保存在自己的文件夹内,允许分享和用stylesheet来引用图形元素。
    使用网络主题公园的优势在于:
    l 易于添加图像
    l 能够在SVN版本化
    l 在服务器上的负载极小
    网络主题公园最多的用于创建网络的大致外观和感觉。你也可以在这更换wifidog logo等。
    Ø 使用Stylesheet内容类型样式化
    使用内容管理器可以添加一个或多个stylesheet snipplets。
    使用Stylesheet内容类型的优势在于:
    l 能够被添加到一组热点或者单块内容
    l 能够从网站界面进行编辑
    Stylesheet内容类型大多用于暂时更改和定位专一样式化。
    自定义UI
    Ø 内容服务器的静态UI元素
    一些重要的界面元素(例如:在线用户列表)已经被重新写成静态内容类型,所以每组可以逐个配置并决定在哪里显示。你可以向空白的门户添加人认为合适的元素。这些元素可以从内容管理器中获得。
    Ø 动态Smarty模版
    你可以使用Smarty语言直接在内容管理器上创建自定义UI元素,并可以从wifidog获得许多稳定的变量(热点名称,登录用户数量等)。当创建SmartyTemplate时可以看到获取完整列表的说明。
    本地化
    Ø Static strings和gettext
    所有static strings能够放在()内,通过gettext来本地化。如果不支持你的语言,查看doc/developer/LanguageTranslation。
    代码提示:
    · Good: $output=sprintf(
    ('Welcome %s'), $username);
    · Bad: $output=('Welcome').' '.$username;
    · Very bad: $output=
    ("Welcome $username");
    内容管理器的文本内容
    在Wifidog,所有安装语言都有相对应的文本内容版本。如果精确的语言没有文本的话,Wifidog会:
  7. 用同样语言显示文本(如:fr_FR或fr)
  8. 用国家子代码显示文本(如:en_CA)
  9. 用默认语言显示字符串
  10. 显示任何可得字符串
    编辑静态模版
    Wifidog的所有模版都旨在缓解开发,并不主要是做为自定义工具。它们可以随时更改并且可以在不得已时进行编辑。没有任何机制来要求模版必须用在哪里,而不认可默认设置。将来也不可能有这种机制。
    不到万不得已不要编辑模版!这对你没有帮助并且可能会影响项目。如果你想进行一些操作,但又不知道如何进行,那选择下面一项:
    l 查询IRC邮件列表应该如何操作
    l 用不影响组群的方法修改模版,并提交修改补丁。通常会像创建HTML元素一样简单。
    如果你编辑了模版却没有提交修改,那么你就要负责根据基础模版的变更将它们进行更新。因此,我强烈建议从SVN启动成品服务器,而不是在tarball。这样SVN将会做一部分变更合并工作,并且有冲突提示。
    与现有CMS整合
    一些组群可能已经有定位感知CMS,他们想继续使用或不想提供任何定位专一内容。鉴于整合水平,已存在系统或网页可以选择一种或两种方法进行整合:
  11. 使用IFrame内容类型,它会使一个网页作为Wifidog门户的一部显示出来
  12. 使用SmartyWifidog内容类型,当往目标传递一个些wifidog变量时,可以使一个网页作为wifidog门户的一部分显示出来。
  13. 使用“URLto show instead of the portal”来完成关闭此热点的Wifidog门户,并且显示一个自定义URL。
    与现有认证系统整合
    通过扩展认证器的级别,Wifidog已经支持一些外部认证系统。不久,认证器确认了登录界面,创建新用户界面和用户管理部分以后,这个概念就会更加丰富。

本文章由 http://www.wifidog.pro/2015/01/14/wifidog-auth-server-4.html 整理编辑,转载请注明出处

wifidog_auth server adminstration--part3

内容管理器指南
内容管理器是WIFIDOG认证服务器最权威也最误解的组成部分。此文档不是内容管理器手册,而是共通使用案例的列单,和作为内容管理器如何去解决。
内容显示脚本
第一部分是简单脚本列表,回答问题“我想这样操作,我该如何操作?”
交替显示图像

  1. 连接想要显示图像的BannerAddGroup。
  2. 在“ContentGroup访问控制”将ContentGroup设置成不可再用。
  3. 将图像做为ContentGroup元素进行添加
    在若干(并非全部)热点显示单块内容
    这是非常普遍的情况:在所有热点以特定的顺序呈现特定的内容,或者是特定类型的所有热点(咖啡厅,酒吧,图书馆等等)
  4. 创建一个连接到全网络的可再用内容组
  5. 将内容作为内容组的第一元素进行添加
  6. 在“Only display at node(s)”文件添加所需热点
    只向用户显示一次单块(或若干块)内容
    这些对notices有帮助:
  7. 连接ContentGroup,添加notice。
  8. 在“ContentGroup access control”,将ContentGroup设置成不可再用。
  9. 将notice作为ContentGroup的元素进行添加
  10. 在“ContentGroup configuration”/“Can content be shown more than once to the same user?”:选择“Content can only be shown once。”
    做一次“寻宝”或“串酒吧”
    这是给用户提示来寻找下一个位置(和下一个线索)的活动。
  11. 连接一个新的内容组全网络
  12. 确保ContentGroup是可再用的
  13. 将提示作为ContentGroup元素进行添加
  14. 为每一个将要显示的提示添加热点
    Ø 处理多个路径
    如果你想有多条用户路径或者不全得到相同的提示,操作如下:
  15. 在“ContentGroup configuration”/“When does the content rotate?”选择“Content rotates each time you change node”。在这种情况下,这意味着内容将不会为单独一个用户循环,这正是我们想要的。
  16. 确保“In what order should the content displayed?”选择的是“Randomly”。
    与另外一个网页或CMS整合
    如果能够输入http GET参数,SmartyTemplate内容类型允许经过认证服务器变量到远程服务器。以下例子指出了两个方法。
    Ø IRC chat示例使用简单的HTML连接来获取变量
    此代码示例允许使用IRC网络接口来直接连接到#wifidog通道。你通常需要手动选择用户名和通道。以下代码会创建一个新连接,此连接将直接将你引导到#wifidog通道,如果你连接到热点,你会告诉其用户你是从哪里连接的。
    {if $userName}

    Chat with wifidog developers

Ø ShoutBox示例使用JavaScript取得变量
此代码将发送用户对另外一个网页的请求,并在新窗口打开。它已经尝试整合ISF的网络。
l 创建ShoutBox
l 在“Shout button ‘onclick=’value”中添加SmartyTemplate。
l 将以下代码粘贴到SmartyTemplate,不用换行
window.open('http://www.cwide.org/scripts/cwide_addMsgAndRedirect.php?hotspotID={$realNodeId}&hotspotName={$realNodeName|urlencode}&message='+escape(document.getElementById('shout_text').value)+'&ipAddress={$realNodeLastHeartbeatIP}&username={$userNam|urlencode}');

本文章由 http://www.wifidog.pro/2015/01/14/wifidog-auth-server-3.html 整理编辑,转载请注明出处