分类 wifidog配置 下的文章

Wifidog认证服务器常见错误提示

execSql() : An error occured while executing the following SQL query :
SELECT node_id, last_heartbeat_ip from nodes WHERE last_heartbeat_ip='1.2.3.4' ORDER BY last_heartbeat_timestamp DESC

Error message :
ERROR: relation "nodes" does not exist

execSqlUniqueRes() : An error occured while executing the following SQL query :
SELECT network_id FROM networks WHERE is_default_network=TRUE ORDER BY creation_date LIMIT 1

Error message :
ERROR: relation "networks" does not exist
: Network::getDefaultNetwork: Fatal error: Unable to find the default network! in /var/www/wifidog-auth/wifidog/classes/Network.php on line 101

Postgresql的数据库连接正常和wifidog已存在的数据库,但是最初的SQL结构和数据丢失。


: Unable to connect to database on localhost in /usr/local/apache2/htdocs/wifidog-auth/wifidog/classes/AbstractDbPostgres.php on line 71
  • Wifidog未在Postgresql创建的数据库
  • 与Postgresql数据库连接失败:错误配置或许可
    Install.php可以帮你解决这一问题并提供更多相关信息。

Le systeme tente de mettre a jour le schema de la base de donnees.
Preparing SQL statements to update schema to version 34

execSqlUpdate(): SQL Query :

BEGIN;


UPDATE schema_info SET value='34' WHERE tag='schema_version';
ALTER TABLE node_stakeholders DROP CONSTRAINT "$1";
ALTER TABLE node_stakeholders ADD CONSTRAINT nodes_fkey FOREIGN KEY (node_id) REFERENCES nodes(node_id) ON UPDATE CASCADE ON DELETE CASCADE;
COMMIT;
VACUUM ANALYZE;

0 rows affected by the SQL query.
Elapsed time for query execution : 0,847244 second(s)

execSqlUpdate(): 0 rows affected by the SQL query.

你的数据库结构没有更新,wifidog门户检测到这个问题,将结构更新到最新版本。如果进行此操作,刷新浏览器时这个提示就会消失。如果再看到这个提示并且又没有更新源代码,结构更新操作可能会失败。


Warning in /classes/Locale.php : Unable to setlocale() to en, return value: , current locale: 
LC_CTYPE=en_US.UTF-8;LC_NUMERIC=C;LC_TIME=C;LC_COLLATE=C;LC_MONETARY=C;LC_MESSAGES=C;
LC_PAPER=C;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=C;LC_IDENTIFICATION=C
Warning in /classes/Locale.php : Unable to setlocale() to en, return value: , current locale: 
LC_CTYPE=en_US.UTF-8;LC_NUMERIC=C;LC_TIME=C;LC_COLLATE=C;LC_MONETARY=C;LC_MESSAGES=C;
LC_PAPER=C;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=C;LC_IDENTIFICATION=C
Warning in /classes/Locale.php : Unable to setlocale() to en, return value: , current locale: 
LC_CTYPE=en_US.UTF-8;LC_NUMERIC=C;LC_TIME=C;LC_COLLATE=C;LC_MONETARY=C;LC_MESSAGES=C;
LC_PAPER=C;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=C;LC_IDENTIFICATION=C
Warning in /classes/Locale.php : Unable to setlocale() to en, return value: , current locale: 
LC_CTYPE=en_US.UTF-8;LC_NUMERIC=C;LC_TIME=C;LC_COLLATE=C;LC_MONETARY=C;LC_MESSAGES=C;
LC_PAPER=C;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=C;LC_IDENTIFICATION=C

这个“locale”取决于服务器的配置。在大多数Unix/Linux系统中,可能会用locale –a来列出所有服务器可得语言环境。许多系统对每个国家都有特定的语言环境,所以你需要更改config.php或者local.config.php。例如:将fr改为fr_CA或fr_FR,将en改为en_US或en_GB。


HTML pages contain strange characters ....

修改你的Apache服务器配置文件,并将“AddDefaultCharset on”更改为“AddDefaultCharset utf-8”。


运行install.php脚本的错误提示
关闭错误日志,你可以看到空白页面。
如果你用以下命令打开错误日志:

here's how to turn on php error message display so you can debug problem.

In php.ini (in FC5 most likely located at /etc/php.ini) enable the

error_reporting = E_ALL 
display_errors = On

This will display any error encounter in you browser window. 

错误提示可能是这样的:

Postgresql database connection :
Warning: pg_connect() [function.pg-connect]: Unable to connect to PostgreSQL server: FATAL: Ident authentication failed for user
"wifidog" in /var/www/html/wifidog/install.php on line 1062

这个问题与PostgreSQL安全有关。比较理想的情况是研究一下PGSQL调用的安全系统,但这也会解决这个问题。需要注意的是是否也可能会在不同系统中产生安全问题,这取决于数据库的配置。
编辑pg_hba.conf文件

#TYPE     DATABASE          USER            IP-ADDRESS             SUBNET MASK               METHOD
host      wifidog           wifidog         192.168.0.11           255.255.255.0             md5

当IPF 地址与设备的IP地址吻合时,连接到PGSQL服务器。
重启PGSQL服务器进行新设置。

本文章由 http://www.wifidog.pro/2015/03/12/Wifidog%E8%AE%A4%E8%AF%81%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%B8%B8%E8%A7%81%E9%94%99%E8%AF%AF%E6%8F%90%E7%A4%BA.html 整理编辑,转载请注明出处

wifidog认证服务器内容管理器参考手册

内容管理器参考手册

简介
Wifidog允许热点所有者和管理员创建并关联内容到热点登录页面,门户页面或者界面上的任何位置。系统可以通过认证服务器的管理页面访问。最基本的添加/编辑内容的方法是使用Reusable content library。
你可以使用“Add new content”按钮来创建内容。“Show all content”按钮将显示保存在系统中的所有内容。重点要注意的是标准视图将只显示“persistent read-only”内容。在你可以关联内容到热点,网络或者用户预置文件时,内容必须设置成“persistent read-only”。这防止过于容易的删除内容。

内容类型的公共属性
所有内容类型都有几个共通的属性,但是Simple内容类型,例如TrivialLangstring和SimplePicture,可能就没有显示出这一特点来使他们足够简单。

  1. Metadata
    不同的Metadata属性包含将要显示给人们的内容的一些信息。这些都有可选性。
    如果使用这些属性,可以构成任何Simple内容类型。因此标题可以是TrivialLangstring,SimplePicture或其它任何可用内容类型。
    需要注意的是如果所有Metadata属性和作者为空的话,内容将以完全不同的形式显示。
    1)标题
    显示内容的标题。注:不存在于Simple类型中,除非他们具有持久性。注:如果检测“是否显示标题?”,则只在显示时出现。检测“是否显示标题?”的原因是是允许给Persistend 内容类型加标题,所以可以在可再用内容库中找到他们,而不用实际显示标题。
    标准显示:将显示在内容区域的最上面
    2)描述
    内容的简短描述。*标准显示:右侧,作者下方
    3)详细描述
    内容的详细描述。将以连接的形式显示真实详细描述的页面。
    4)项目信息
    *标准显示:右侧,描述下方

  2. 内容访问控制
    1)是可再用内容库的一部分吗?
    内容是可再用的。可再用的内容将要:显示在可再用内容库,节点和网络内容分配接口。如果不从节点或contentgroup移除将无法删除。No-reusable内容如果从节点,网络或contentgroup移除将完全删除。
    2)内容所有者列表
    当你第一个创建内容时,你就是内容所有者。你可以做为所有者任意添加其它用户,并且用户可以被允许修改内容。
    3)是内容作者吗?
    当你添加一个用户时,你可以检测“Is content author?”来表明用户确实创建了显示的内容。*标准显示:将显示在右上角,在描述上方

不同内容类型
1)需要注意的是以下内容类型都有“Simple”版本,没有metadata属性,没有持久性。从历史原因上讲,SimpleLangtring实际上叫做TrivialLangstring。完全内容类层次。这是内容类型继承层次。内容将完全继承它根源的管理接口,并且可能添加它自己的属性。

ContentGroup
ContentGroup不是真正的内容。它是容纳许多不同内容块的“集装箱”。

ContentGroup配置
它的元素通过以下属性显示:
1)内容显示顺序

  • 随机选取内容元素
  • 随机选取内容元素,但是要进行两次才显示所有元素
  • 按先后顺序选取元素
    2)内容循环
  • 内容持续循环
  • 内容一天循环一次
  • 内容每会话一次循环一次
  • 内容每更改节点一次循环一次
    3)内容显示给同一个用户次数
  • 内容显示不只一次
  • 内容只显示一次
  • 内容显示不只一次,但不在一个节点

ContentGroup元素
你可以为每个内容元素新建内容或者选择Reusable Content Library中已存在的内容。请记住:已存在的内容必须在可再用之前设置成持久性。你也可以将内容组分配为彼此的元素,互相嵌套。
每个元素会根据显示环境来显示:

  • Display order:元素将以什么顺序显示
  • Only display from (date) until (date):内容将只在这个日期范围内显示。注意的是,一旦过期,元素将默认的不会在管理界面出现。
  • Only display at node(s):元素被允许显示的节点。注意的是一个元素可以在任何节点显示,除非选择特定的一个或几个节点。

EmbeddedContent
此内容类型允许你在门户页面嵌入多媒体内容。它支持大量的可靠内容,它会在用户的浏览器不支持多媒体内容的时候显示。

File
此内容类型允许你上传内容,并保存在数据库,或者指定一个可以下载此文件的远程URL,此内容将有一个下载按钮。

Picture
扩展文件,允许显示图片。

FlickrPhotostream
Flickr是数码图片分享页面。这一服务作为图片资源库被广泛应用在博客。Flickr的优点是你可以通过API访问所有图片和metadata。使用API我们可以在WIFIDOG的门户页面上通过Flickr照相排版将图片显示出来。你需要有Flickr API key来激活此内容类型。API key是非商用性的免费使用。我们支持三种图片选择模式:

  • 标签
  • 用户

每种选择模式都有许多不同的属性

IFrame
允许在门户的可配置部分显示另外一个网页。

IFrameREST
使用SmartyTemplate更强大

Langstring和TrivialLangstring
人们大多时候都会使用TrivialLangstring。它WIFIDOG指定的所有语方环境的翻译。
注意的是Langstring允许简单的HTML标记。

HTMLeditor
用来创建HTML标记的使用Langstring的WYSIWYG编辑器。

SmartyTemplate
使用Smarty template engine创建源于认证服务器变量的内容。这确实是与其它网络系统整合的最好方法。在管理界面可以获得帮助。

Stylesheet
允许向节点,内容等添加自定义CSS Sylesheets。

RssAggregator
强大的RssAggregator是基于Feedpressreview。在管理界面可以获得帮助。

ShoutBox
注意的是与其它内容类型不同,此内容类型与用户积极互动。它执行Shoutbox的使用案例。它目前拥有最小的特征集:

  1. 允许用户直接在门户发送短消息
  2. 其它用户可以在门户上看到最后五条信息
  3. 它将在允许发送信息之前检测是否与热点连接
  4. 允许在按钮鼠标单击添加自定义Javascript,例如将信息复制到远程页面。

本文章由 http://www.wifidog.pro/2015/03/12/wifidog%E8%AE%A4%E8%AF%81%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%AE%A1%E7%90%86%E5%99%A8%E6%89%8B%E5%86%8C.html 整理编辑,转载请注明出处

Wifidog认证服务器升级

将成品服务器的认证服务器进行升级,安全流程如下:
1 阅读Changelog;
2 在升级前使用sql/backup_database.sh;
3 测试;

  • 在研发设备上检测最新的SVN(不能与你的服务器使用同一台,除非你真的了解你在做什么;你需要修改config.php来指向一个不同的DB,并且你不能直接使用还原的脚本)
  • 在研发设备上还原实时数据库。检测是否一切有序。(内容包括登录,查看你最复杂的门户)。更复杂些的测试内容有在开发服务器上安装网关并且登录,尝试创建一个新帐户;

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/03/11/wifidog%E8%AE%A4%E8%AF%81%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%8D%87%E7%BA%A7.html 整理编辑,转载请注明出处

在Windows XP SP2安装wifidog认证服务器

在Windows XP安装Wifidog
需求

安装
安装Postgres
解压文件夹,运行msi,选择默认选项,当有系统提示时创建用户和密码。

安装Apache
运行msi并选择所有默认选项

安装PHP
运行msi,有系统提示时,选择“Apache 2.2.x Module”
Apache配置目录,如:C:\Program Files\Apache Software Foundation\Apache2.2\conf\
安装所有选项(包括PEAR),并确认只安装下列扩展

  • activescript
  • curl
  • dio
  • gd2
  • gettext
  • htscanner
  • pecl_http
  • ldap
  • multi-byte string
  • mcrypt
  • mhash
  • pdflib
  • postgreSQL
  • Standard PHP
  • SVN
  • win32service
  • win32std
  • xmlrpc
  • xsl
  • zip

安装WIFIDOG
将WIFIDOG引入到“C:\wwwroot\”
使用一种实用程序如7ZIP将Smarty引入到“c:\wwwroot\wifidog-auth\wifidog\lib\”

配置

Start > All Programs > PostgreSQL 8.2 > PGADMIN III 

右键点击超级用户并点击连接,然后输入你的密码。
点击加号,展开列表
右键点击登录角色,然后点击“新登录角色…”
在“角色名称”输入wifidog,然后输入密码,点击OK
右键点击数据库图标然后点击“新数据库…”

name=wifidog
owner=wifidog
encoding=utf8
goto Start >All Programs >Apache >httpd.conf

找到以下命令

DocumentRoot = "C:/Program Files/Apache/htdocs"

并替换成

DocumentRoot "C:/wwwroot/wifidog-auth/wifidog"

将以下命令

<Directory "C:/Program Files/Apache/htdocs">

替换成

<Directory "C:/wwwroot/wifidog-auth/wifidog">

将以下命令

DirectoryIndex index.html

替换成

DirectoryIndex index.html index.php

Work Arounds
将以下命令

385         $process_info_user_id = posix_getpwuid(posix_getuid()); 
386  
387         if($process_info_user_id){ 
388             $process_username = $process_info_user_id['name']; 
389         } 
390         else { 
391             //Posix functions aren't available on windows 
392             $process_username = 'unknown_user'; 
393         } 
394         $process_info_group_id = posix_getgrgid(posix_getegid()); 
395         if($process_info_group_id){ 
396             $process_group = $process_info_group_id['name']; 
397         } 
398         else { 
399             //Posix functions aren't available on windows 
400             $process_group = 'unknown_group'; 
401         } 
402         $cmd_mkdir = ''; 
403         $cmd_chown = ''; 
404         $error = 0; 
405  
406         print "<p><em>HTTP daemon UNIX username/group</em>: $process_username/$process_group</p>"; 
407         #    print "<p><em>HTTPD group</em>: $process_group<BR</p>"; 
408         print "<p><table BORDER=\"1\"><tr><td><b>Directory</b></td></td><td><b>Owner</b></td><td><b>Writable</b></td></tr>\n"; 
409  
410         foreach ($dir_array as $dir) { 
411             print "<tr><td>$dir</td>"; 
412             if (!file_exists(WIFIDOG_ABS_FILE_PATH . "$dir")) { 
413                 print "<TD COLSPAN=\"2\" STYLE=\"text-align:center;\">Missing</td></tr>\n"; 
414                 $cmd_mkdir .= WIFIDOG_ABS_FILE_PATH . "$dir "; 
415                 $cmd_chown .= WIFIDOG_ABS_FILE_PATH . "$dir "; 
416                 $error = 1; 
417                 continue; 
418             } 
419  
420             $dir_info = posix_getpwuid(fileowner(WIFIDOG_ABS_FILE_PATH . "$dir")); 
421             if($dir_info) { 
422                 $dir_owner_username = $dir_info['name']; 
423             } 
424             else { 
425                 //Posix functions aren't available on windows 
426                 $dir_owner_username = fileowner(WIFIDOG_ABS_FILE_PATH . "$dir"); 
427             } 
428             print "<td>$dir_owner_username</td>"; 
429  
430             if (is_writable(WIFIDOG_ABS_FILE_PATH . "$dir")) { 
431                 print "<td>YES</td>"; 
432             } 
433             else { 
434                 print "<td>NO</td>"; 
435                 $cmd_chown .= WIFIDOG_ABS_FILE_PATH . "$dir "; 
436                 $error = 1; 
437             } 
438             print "</tr>\n"; 
439         } 
440         print "</table>\n"; 

替换成

* posix_getpwuid() not implemented on Microsoft Windows platforms
*/

if (!function_exists('posix_getpwuid')) {
        print "<p><em>Automated Process not currently avalible on windows.</em> please make sure the following directories exist and have WRITE permissions</p>";
print "<p><table BORDER=\"1\"><tr><td><b>Directory</b></td></tr>\n";

        foreach ($dir_array as $dir) {
            print "<tr><td>$dir</td></tr>";
    }
print "</table>";
$error = 0;
}
else {
$process_info_user_id = posix_getpwuid(posix_getuid());

        if($process_info_user_id){
            $process_username = $process_info_user_id['name'];
        }
        else {
            //Posix functions aren't available on windows
            $process_username = 'unknown_user';
        }
        $process_info_group_id = posix_getgrgid(posix_getegid());
        if($process_info_group_id){
            $process_group = $process_info_group_id['name'];
        }
        else {
            //Posix functions aren't available on windows
            $process_group = 'unknown_group';
        }
        $cmd_mkdir = '';
        $cmd_chown = '';
        $error = 0;

        print "<p><em>HTTP daemon UNIX username/group</em>: $process_username/$process_group</p>";
        #    print "<p><em>HTTPD group</em>: $process_group<BR</p>";
        print "<p><table BORDER=\"1\"><tr><td><b>Directory</b></td></td><td><b>Owner</b></td><td><b>Writable</b></td></tr>\n";

        foreach ($dir_array as $dir) {
            print "<tr><td>$dir</td>";
            if (!file_exists(WIFIDOG_ABS_FILE_PATH . "$dir")) {
                print "<TD COLSPAN=\"2\" STYLE=\"text-align:center;\">Missing</td></tr>\n";
                $cmd_mkdir .= WIFIDOG_ABS_FILE_PATH . "$dir ";
                $cmd_chown .= WIFIDOG_ABS_FILE_PATH . "$dir ";
                $error = 1;
                continue;
            }

            $dir_info = posix_getpwuid(fileowner(WIFIDOG_ABS_FILE_PATH . "$dir"));
            if($dir_info) {
                $dir_owner_username = $dir_info['name'];
            }
            else {
                //Posix functions aren't available on windows
                $dir_owner_username = fileowner(WIFIDOG_ABS_FILE_PATH . "$dir");
            }
            print "<td>$dir_owner_username</td>";

            if (is_writable(WIFIDOG_ABS_FILE_PATH . "$dir")) {
                print "<td>YES</td>";
            }
            else {
                print "<td>NO</td>";
                $cmd_chown .= WIFIDOG_ABS_FILE_PATH . "$dir ";
                $error = 1;
            }
            print "</tr>\n";
        }
        print "</table>\n";
}

缺失必要的PHP扩展:

  • 确保在Start>All Programs >PHP >PHP.ini安装了所需扩展,并检测缺失扩展也在内
  • 在C:\wwwroot\下创建phpinfo.php的文件,并添加下列代码:

然后运行此文件确保PHP配置正确

在/classes/Locale.php文件中加入以下内容:

257         echo sprintf("Warning in /classes/Locale.php setCurentLocale: Unable to setlocale() to %s: %s.  I tried %s, %s, %s, %s, and got return value: %s, current locale is: %s",$q, $locale_id, $candidate_locale_array[0], $candidate_locale_array[1], $candidate_locale_array[2], $candidate_locale_array[3], $current_locale, setlocale(LC_ALL, 0))."<br/>";

在classes\SmartyWifidog.php中找到以下命令

136         $this->security = true; 

并更改为

136         $this->security = false; 

错误的URL 在path_defines_base文件中,将以下内容:

if ($browser_url == "" || substr($browser_url,-1,1) != '/') $browser_url .= '\';

更改为

if ($browser_url == "" || substr($browser_url,-1,1) != '/') $browser_url .= '';

本文章由 http://www.wifidog.pro/2015/03/11/windowxp%E5%AE%89%E8%A3%85wifidog%E8%AE%A4%E8%AF%81%E6%9C%8D%E5%8A%A1%E5%99%A8.html 整理编辑,转载请注明出处