PageRenderTime 49ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/soar/unix/common/php/soar/svcenv/session.inc

http://arronwork.googlecode.com/
PHP | 425 lines | 314 code | 31 blank | 80 comment | 45 complexity | afa90d1b58676fff63f4ca4a0be0d8b0 MD5 | raw file
  1. <?php
  2. class session
  3. {
  4. private $svcenv;
  5. private $sid=null;
  6. public $last_error='';
  7. public function __construct($svcenv)
  8. {/*{{{*/
  9. $this->svcenv=$svcenv;
  10. }/*}}}*/
  11. public function __destruct()
  12. {/*{{{*/
  13. }/*}}}*/
  14. public function setsid($sid)
  15. {/*{{{*/
  16. $this->sid=$sid;
  17. }/*}}}*/
  18. public function getsid()
  19. {/*{{{*/
  20. return $this->sid;
  21. }/*}}}*/
  22. public function create($uuid)
  23. {/*{{{*/
  24. $request=array('uuid'=>$uuid);
  25. $response=$this->svcenv->callnode('SESSION', 'CREATE', $request);
  26. if($response === false)
  27. {
  28. errlog::add("%s: call fail", __METHOD__);
  29. $this->last_error=SOAR_ERR::COMM_FAIL;
  30. return false;
  31. }
  32. if(!isset($response['errcode']))
  33. {
  34. errlog::add("%s: errcode invalid", __METHOD__);
  35. $this->last_error=SOAR_ERR::MSG;
  36. return false;
  37. }
  38. $errcode=$response['errcode'];
  39. if($errcode != SOAR_ERR::OK &&
  40. $errcode != SOAR_ERR::SESSION_EXIST)
  41. {
  42. errlog::add("%s: errcode:%s", __METHOD__, $errcode);
  43. $this->last_error=$errcode;
  44. return false;
  45. }
  46. if(!isset($response['sid']))
  47. {
  48. errlog::add("%s: sid not set", __METHOD__);
  49. $this->last_error=SOAR_ERR::MSG;
  50. return false;
  51. }
  52. $sid=$response['sid'];
  53. $this->sid=$sid;
  54. $this->last_error=SOAR_ERR::OK;
  55. return $sid;
  56. }/*}}}*/
  57. public function get($uuid)
  58. {/*{{{*/
  59. $request=array('uuid'=>$uuid);
  60. $response=$this->svcenv->callnode('SESSION', 'GET', $request);
  61. if($response === false)
  62. {
  63. errlog::add("%s: call fail", __METHOD__);
  64. $this->last_error=SOAR_ERR::COMM_FAIL;
  65. return false;
  66. }
  67. if(!isset($response['errcode']))
  68. {
  69. errlog::add("%s: errcode invalid", __METHOD__);
  70. $this->last_error=SOAR_ERR::MSG;
  71. return false;
  72. }
  73. $errcode=$response['errcode'];
  74. if($errcode != SOAR_ERR::OK)
  75. {
  76. errlog::add("%s: errcode:%s", __METHOD__, $errcode);
  77. $this->last_error=$errcode;
  78. return false;
  79. }
  80. if(!isset($response['sid']))
  81. {
  82. errlog::add("%s: sid not set", __METHOD__);
  83. $this->last_error=SOAR_ERR::MSG;
  84. return false;
  85. }
  86. $sid=$response['sid'];
  87. $this->sid=$sid;
  88. $this->last_error=SOAR_ERR::OK;
  89. return $sid;
  90. }/*}}}*/
  91. public function validate()
  92. {/*{{{*/
  93. if(is_null($this->sid))
  94. {
  95. errlog::add("%s: fail, sid invalid", __METHOD__);
  96. $this->last_error=SOAR_ERR::PARA;
  97. return false;
  98. }
  99. $request=array('sid'=>$this->sid);
  100. $response=$this->svcenv->callnode('SESSION', 'VALIDATE', $request);
  101. if($response === false)
  102. {
  103. errlog::add("%s: call fail", __METHOD__);
  104. $this->last_error=SOAR_ERR::COMM_FAIL;
  105. return false;
  106. }
  107. if(!isset($response['errcode']))
  108. {
  109. errlog::add("%s: errcode invalid", __METHOD__);
  110. $this->last_error=SOAR_ERR::MSG;
  111. return false;
  112. }
  113. $errcode=$response['errcode'];
  114. if($errcode != SOAR_ERR::OK)
  115. {
  116. errlog::add("%s: errcode:%s", __METHOD__, $errcode);
  117. $this->last_error=$errcode;
  118. return false;
  119. }
  120. $this->last_error=SOAR_ERR::OK;
  121. return true;
  122. }/*}}}*/
  123. public function destroy()
  124. {/*{{{*/
  125. if(is_null($this->sid))
  126. {
  127. errlog::add("%s: sid invalid", __METHOD__);
  128. $this->last_error=SOAR_ERR::PARA;
  129. return false;
  130. }
  131. $request=array('sid'=>$this->sid);
  132. $response=$this->svcenv->callnode("SESSION", "DESTROY", $request);
  133. if($response === false)
  134. {
  135. errlog::add("%s: call fail", __METHOD__);
  136. $this->last_error=SOAR_ERR::COMM_FAIL;
  137. return false;
  138. }
  139. if(!isset($response['errcode']))
  140. {
  141. errlog::add("%s: errcode invalid", __METHOD__);
  142. $this->last_error=SOAR_ERR::MSG;
  143. return false;
  144. }
  145. $errcode=$response['errcode'];
  146. if($errcode != SOAR_ERR::OK)
  147. {
  148. errlog::add("%s: errcode:%s", __METHOD__, $errcode);
  149. $this->last_error=$errcode;
  150. return false;
  151. }
  152. $this->sid=null;
  153. $this->last_error=SOAR_ERR::OK;
  154. return true;
  155. }/*}}}*/
  156. public function putkey($pairs)
  157. {/*{{{*/
  158. if(is_null($this->sid))
  159. {
  160. errlog::add("%s: sid invalid", __METHOD__);
  161. $this->last_error=SOAR_ERR::PARA;
  162. return false;
  163. }
  164. $request=array('sid'=>$this->sid, 'keys'=>array());
  165. foreach($pairs as $k=>$v)
  166. {
  167. $request['key'][]=array($k, $v);
  168. }
  169. $response=$this->svcenv->callnode("SESSION", "PUTKEY", $request);
  170. if($response === false)
  171. {
  172. errlog::add("%s: call fail", __METHOD__);
  173. $this->last_error=SOAR_ERR::COMM_FAIL;
  174. return false;
  175. }
  176. if(!isset($response['errcode']))
  177. {
  178. errlog::add("%s: errcode invalid", __METHOD__);
  179. $this->last_error=SOAR_ERR::MSG;
  180. return false;
  181. }
  182. $errcode=$response['errcode'];
  183. if($errcode != SOAR_ERR::OK)
  184. {
  185. errlog::add("%s: errcode:%s", __METHOD__, $errcode);
  186. $this->last_error=$errcode;
  187. return false;
  188. }
  189. $this->last_error=SOAR_ERR::OK;
  190. return true;
  191. }/*}}}*/
  192. public function getkey($keys)
  193. {/*{{{*/
  194. if(is_null($this->sid))
  195. {
  196. errlog::add("%s: sid invalid", __METHOD__);
  197. $this->last_error=SOAR_ERR::PARA;
  198. return false;
  199. }
  200. $request=array('sid'=>$this->sid, 'keys'=>array());
  201. foreach($keys as $key)
  202. {
  203. $request['key'][]=$key;
  204. }
  205. $response=$this->svcenv->callnode("SESSION", "GETKEY", $request);
  206. if($response === false)
  207. {
  208. errlog::add("%s: call fail", __METHOD__);
  209. $this->last_error=SOAR_ERR::COMM_FAIL;
  210. return false;
  211. }
  212. if(!isset($response['errcode']))
  213. {
  214. errlog::add("%s: errcode invalid", __METHOD__);
  215. $this->last_error=SOAR_ERR::MSG;
  216. return false;
  217. }
  218. $errcode=$response['errcode'];
  219. if($errcode != SOAR_ERR::OK)
  220. {
  221. errlog::add("%s: errcode:%s", __METHOD__, $errcode);
  222. $this->last_error=$errcode;
  223. return false;
  224. }
  225. if(!isset($response['keys']))
  226. {
  227. errlog::add("%s: keys not set", __METHOD__);
  228. $this->last_error=SOAR_ERR::MSG;
  229. return false;
  230. }
  231. $keys=$response['keys'];
  232. $rtn=array();
  233. foreach($keys as $pair)
  234. {
  235. if(!is_array($pair) || count($pair) != 2)
  236. {
  237. errlog::add("%s: pair invalid", __METHOD__);
  238. $this->last_error=SOAR_ERR::MSG;
  239. return false;
  240. }
  241. $k=$pair[0];
  242. $v=$pair[1];
  243. $rtn[]=array($k=>$v);
  244. }
  245. $this->last_error=SOAR_ERR::OK;
  246. return $rtn;
  247. }/*}}}*/
  248. public function modkey($key, $delta)
  249. {/*{{{*/
  250. if(is_null($this->sid))
  251. {
  252. errlog::add("%s: sid invalid", __METHOD__);
  253. $this->last_error=SOAR_ERR::PARA;
  254. return false;
  255. }
  256. $request=array('sid'=>$this->sid, 'key'=>$key, 'delta'=>$delta);
  257. $response=$this->svcenv->callnode("SESSION", "MODKEY", $request);
  258. if($response === false)
  259. {
  260. errlog::add("%s: call fail", __METHOD__);
  261. $this->last_error=SOAR_ERR::COMM_FAIL;
  262. return false;
  263. }
  264. if(!isset($response['errcode']))
  265. {
  266. errlog::add("%s: errcode invalid", __METHOD__);
  267. $this->last_error=SOAR_ERR::MSG;
  268. return false;
  269. }
  270. $errcode=$response['errcode'];
  271. if($errcode != SOAR_ERR::OK)
  272. {
  273. errlog::add("%s: errcode:%s", __METHOD__, $errcode);
  274. $this->last_error=$errcode;
  275. return false;
  276. }
  277. $this->last_error=SOAR_ERR::OK;
  278. return true;
  279. }/*}}}*/
  280. public function destroykey($key)
  281. {/*{{{*/
  282. if(is_null($this->sid))
  283. {
  284. errlog::add("%s: sid invalid", __METHOD__);
  285. $this->last_error=SOAR_ERR::PARA;
  286. return false;
  287. }
  288. $request=array('sid'=>$this->sid, 'key'=>$key);
  289. $response=$this->svcenv->callnode("SESSION", "DESTROYKEY",
  290. $request);
  291. if($response === false)
  292. {
  293. errlog::add("%s: call fail", __METHOD__);
  294. $this->last_error=SOAR_ERR::COMM_FAIL;
  295. return false;
  296. }
  297. if(!isset($response['errcode']))
  298. {
  299. errlog::add("%s: errcode invalid", __METHOD__);
  300. $this->last_error=SOAR_ERR::MSG;
  301. return false;
  302. }
  303. $errcode=$response['errcode'];
  304. if($errcode != SOAR_ERR::OK)
  305. {
  306. errlog::add("%s: errcode:%s", __METHOD__, $errcode);
  307. $this->last_error=$errcode;
  308. return false;
  309. }
  310. $this->last_error=SOAR_ERR::OK;
  311. return true;
  312. }/*}}}*/
  313. //public function encrypt($plain)
  314. //{/*{{{*/
  315. // $request=array($plain);
  316. // $response=$this->svcenv->callnode("SESSION", "ENCRYPT", $request);
  317. // if($response === false)
  318. // {
  319. // errlog::add("%s: call fail", __METHOD__);
  320. // $this->last_error=SOAR_ERR::COMM_FAIL;
  321. // return false;
  322. // }
  323. // if(!isset($response['errcode']))
  324. // {
  325. // errlog::add("%s: errcode invalid", __METHOD__);
  326. // $this->last_error=SOAR_ERR::MSG;
  327. // return false;
  328. // }
  329. // $errcode=$response['errcode'];
  330. // if($errcode != SOAR_ERR::OK)
  331. // {
  332. // errlog::add("%s: errcode:%s", __METHOD__, $errcode);
  333. // $this->last_error=$errcode;
  334. // return false;
  335. // }
  336. // if(!isset($response['paras']))
  337. // {
  338. // errlog::add("%s: paras invalid", __METHOD__);
  339. // $this->last_error=SOAR_ERR::MSG;
  340. // return false;
  341. // }
  342. // $paras=$response['paras'];
  343. // if(!isset($paras[0]))
  344. // {
  345. // errlog::add("%s: enc invalid", __METHOD__);
  346. // $this->last_error=SOAR_ERR::MSG;
  347. // return false;
  348. // }
  349. // $enc=$paras[0];
  350. // $this->last_error=SOAR_ERR::OK;
  351. // return $enc;
  352. //}/*}}}*/
  353. //public function decrypt($enc)
  354. //{/*{{{*/
  355. // $request=array($enc);
  356. // $response=$this->svcenv->callnode("SESSION", "DECRYPT", $request);
  357. // if($response == false)
  358. // {
  359. // errlog::add("%s: call fail", __METHOD__);
  360. // $this->last_error=SOAR_ERR::COMM_FAIL;
  361. // return false;
  362. // }
  363. // if(!isset($response['errcode']))
  364. // {
  365. // errlog::add("%s: errcode invalid", __METHOD__);
  366. // $this->last_error=SOAR_ERR::MSG;
  367. // return false;
  368. // }
  369. // $errcode=$response['errcode'];
  370. // if($errcode != SOAR_ERR::OK)
  371. // {
  372. // errlog::add("%s: errcode:%s", __METHOD__, $errcode);
  373. // $this->last_error=$errcode;
  374. // return false;
  375. // }
  376. // if(!isset($response['paras']))
  377. // {
  378. // errlog::add("%s: paras invalid", __METHOD__);
  379. // $this->last_error=SOAR_ERR::MSG;
  380. // return false;
  381. // }
  382. // $paras=$response['paras'];
  383. // if(!isset($paras[0]))
  384. // {
  385. // errlog::add("%s: dec invalid", __METHOD__);
  386. // $this->last_error=SOAR_ERR::MSG;
  387. // return false;
  388. // }
  389. // $plain=$paras[0];
  390. // $this->last_error=SOAR_ERR::OK;
  391. // return $plain;
  392. //}/*}}}*/
  393. }
  394. ?>