~daniel-sonck/smdb/1.0

« back to all changes in this revision

Viewing changes to PHP/rpc.php

  • Committer: Daniel Sonck
  • Date: 2012-05-30 00:22:57 UTC
  • Revision ID: daniel.sonck@ziggo.nl-20120530002257-exlbee8j0tov1e0z
PHP server side added

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?php
 
2
include("lib/xmlrpc.inc");
 
3
include("lib/xmlrpcs.inc");
 
4
include("connectie.php");
 
5
 
 
6
function createSession($level)
 
7
{
 
8
        $id = md5(rand());
 
9
 
 
10
        $query = "INSERT INTO sessions (id,expire,level) VALUE ('$id',DATE_ADD(NOW(),INTERVAL 2 HOUR),'$level')";
 
11
        $result = mysql_query($query);
 
12
 
 
13
        if($result)
 
14
        {
 
15
                return $id;
 
16
        }
 
17
        else
 
18
        {
 
19
                return false;
 
20
        }
 
21
}
 
22
 
 
23
function setLevel($id,$level)
 
24
{
 
25
        $query = "UPDATE sessions SET level='$level' WHERE id='$id'";
 
26
 
 
27
        $result = mysql_query($query);
 
28
 
 
29
        if($result)
 
30
        {
 
31
                return array(true,$level);
 
32
        }
 
33
        else
 
34
        {
 
35
                return false;
 
36
        }
 
37
}
 
38
 
 
39
function checkLevel($id,$level)
 
40
{
 
41
        $query = "DELETE FROM sessions WHERE expire < NOW()";
 
42
        mysql_query($query);
 
43
 
 
44
        if($level == 0)
 
45
                return true;
 
46
 
 
47
        $query = "SELECT * FROM sessions WHERE expire >= NOW() AND id='$id'";
 
48
        $result = mysql_query($query);
 
49
 
 
50
        if($result)
 
51
        {
 
52
                while($row = mysql_fetch_assoc($result))
 
53
                {
 
54
                        if($row["level"] == $level || $row["level"] == -1)
 
55
                        {
 
56
                                return true;
 
57
                        }
 
58
                }
 
59
        }
 
60
        return false;
 
61
}
 
62
 
 
63
function checkSession($id)
 
64
{
 
65
        $query = "DELETE FROM sessions WHERE expire < NOW()";
 
66
        mysql_query($query);
 
67
 
 
68
        $query = "SELECT * FROM sessions WHERE expire >= NOW()";
 
69
        $result = mysql_query($query);
 
70
 
 
71
        if($result)
 
72
        {
 
73
                while($row = mysql_fetch_assoc($result))
 
74
                {
 
75
                        if($row["id"] == $id)
 
76
                        {
 
77
                                return true;
 
78
                        }
 
79
                }
 
80
        }
 
81
        return false;
 
82
}
 
83
 
 
84
function deleteSession($id)
 
85
{
 
86
        $query = "DELETE FROM sessions WHERE expire < NOW() OR id='$id'";
 
87
}
 
88
 
 
89
$files = scandir("rpc");
 
90
foreach($files as $file)
 
91
{
 
92
        if(substr_count($file,".php"))
 
93
        {
 
94
                include("rpc/$file");
 
95
        }
 
96
}
 
97
 
 
98
function login($sessid,$name,$passwd)
 
99
{
 
100
        global $xmlrpcerruser;
 
101
 
 
102
        if(!checkSession($sessid))
 
103
                return new xmlrpcresp(0,$xmlrpcerruser+3,"Ongeldige sessie");
 
104
 
 
105
        $query = "select * from user where name = '$name'";
 
106
        $resultaat = mysql_query($query);
 
107
 
 
108
        $correct = false;
 
109
        $level = 0;
 
110
 
 
111
        if(!$resultaat)
 
112
        {
 
113
                return new xmlrpcresp(0,$xmlrpcerruser+1,"Opvragen van users mislukt: ".mysql_error());
 
114
        }
 
115
        else
 
116
        {
 
117
                while($row = mysql_fetch_array($resultaat))
 
118
                {
 
119
                        if($passwd == $row['passwd'])
 
120
                        {
 
121
                                $level = $row['role'];
 
122
                        }
 
123
                }
 
124
        }
 
125
 
 
126
        return setLevel($sessid,$level);
 
127
}
 
128
 
 
129
function loginStatus($id)
 
130
{
 
131
        return checkSession($id);
 
132
}
 
133
 
 
134
 
 
135
$s = new xmlrpc_server(
 
136
                array(
 
137
                                "smdb.type.retrieve"      => array("function" => "typeRetrieve"),
 
138
                                "smdb.type.one"           => array("function" => "typeOne"),
 
139
                                "smdb.type.free"          => array("function" => "typeFree"),
 
140
                        "smdb.type.set"           => array("function" => "typeSet"),
 
141
                                "smdb.type.add"           => array("function" => "typeAdd"),
 
142
                                "smdb.type.rem"           => array("function" => "typeRem"),
 
143
                                "smdb.type.songs"         => array("function" => "typeSongs"),
 
144
 
 
145
                                "smdb.composer.retrieve" => array("function" => "composerRetrieve"),
 
146
                                "smdb.composer.one"      => array("function" => "composerOne"),
 
147
                                "smdb.composer.free"     => array("function" => "composerFree"),
 
148
                        "smdb.composer.set"      => array("function" => "composerSet"),
 
149
                                "smdb.composer.add"      => array("function" => "composerAdd"),
 
150
                                "smdb.composer.rem"      => array("function" => "composerRem"),
 
151
                                "smdb.composer.songs"    => array("function" => "composerSongs"),
 
152
 
 
153
                                "smdb.song.retrieve"      => array("function" => "songRetrieve"),
 
154
                                "smdb.song.one"           => array("function" => "songOne"),
 
155
                                "smdb.song.free"          => array("function" => "songFree"),
 
156
                        "smdb.song.set"           => array("function" => "songSet"),
 
157
                                "smdb.song.add"           => array("function" => "songAdd"),
 
158
                                "smdb.song.rem"           => array("function" => "songRem"),
 
159
 
 
160
                                "smdb.session.new"        => array("function" => "createSession"),
 
161
                                "smdb.session.login"      => array("function" => "login"),
 
162
                                "smdb.session.isValid"    => array("function" => "checkSession"),
 
163
                                "smdb.session.end"        => array("function" => "deleteSession"),
 
164
                ),0);
 
165
$s->functions_parameters_type = 'phpvals';
 
166
$s->service();
 
167
?>