$pin = ''; $posted_pin = ''; if (isset($_REQUEST['pin'])) { $posted_pin = $_REQUEST['pin']; } if ($_SERVER['REQUEST_METHOD'] == 'POST') { session_start(); $username = escapeshellcmd($_POST['username']); $password = ''; if (CONFIG_PASSWORD) { // The password must not be escaped. $password = $_POST['userpassword']; } if (CONFIG_PIN) { $posted_pin = escapeshellcmd($_POST['pin']); $pin = $dbcon->querySingle("SELECT value FROM setting WHERE key = 'pin'"); } if (CONFIG_PASSWORD && !checkCredentials($username, $password)) { // Invalid username or password. } else { if (CONFIG_PIN && $pin != $posted_pin) { trace("access denied for user '{$username}', wrong pin {$posted_pin}"); $errtext = _('Invalid PIN.'); } else { // Successfully checked username, password and PIN. trace("access granted for user '{$username}'"); $_SESSION['username'] = $username; $_SESSION['address'] = $dbcon->ipAddress(); $_SESSION['pin'] = $pin; $_SESSION['starturl'] = CONFIG_START_URL; $_SESSION['monitor'] = CONFIG_STATIONNAME;
echo "Triggered callback\n"; } //~ var_dump($_SERVER); $db = new DBConnector('palma-test.db'); $db->resetTables(); //~ http://stackoverflow.com/questions/1964233/does-sqlite3-support-a-trigger-to-automatically-update-an-updated-on-datetime //~ https://www.sqlite.org/lang_createtrigger.html // TODO: Test database triggers (can be used in db.php). //~ $db->createFunction('dbModifiedCallback', 'dbModifiedCallback', 0); // {AFTER | BEFORE} {DELETE | INSERT | UPDATE } ON table //~ $db->exec("CREATE TRIGGER dbchange AFTER UPDATE ON user //~ BEGIN //~ dbModifiedCallback(); //~ END"); //~ $db = new DBConnector('palma.db'); echo "Tables=" . $db->querySingle('SELECT count(*) FROM sqlite_master WHERE type="table"') . "\n"; var_dump($db->query("SELECT * from sqlite_master")); $address = $db->ipAddress(); $db->addUser('testuser1', $address); //~ $db->addUser('testuser2', $address); //~ $db->addUser('testuser3', $address); //~ $db->addUser('testuser4', $address); $users = $db->getUsers(); $db->enableUser('testuser1'); var_dump($users); $db->delUser('haenger', $address); $db->delUser('ivwz', $address); $db->delUser('skrieg', $address); $db->delUser('testuser1', $address); $db->delUser('testuser2', $address); $db->delUser('testuser3', $address);
protected function deleteInactiveVncWindow() { // print("\n[Daemon]: +++ TODO: deleteInactiveWindow() +++"); $db = new DBConnector(); // window_ids in db $vnc_windows_in_db = array(); $client_info = $db->getVNC_ClientInfo(); foreach ($client_info as $info) { $vnc_windows_in_db[] = $info["win_id"]; } // window_ids on screen $windows_on_screen = array(); $windows = explode("\n", shell_exec('wmctrl -l')); foreach ($windows as $w) { $field = explode(' ', $w); $id = $field[0]; if ($id != '') { $windows_on_screen[] = $id; } } // print("[Daemon]: clients in db = " . serialize($vnc_windows_in_db)); // print("[Daemon]: client on screen = " . serialize($windows_on_screen)); // window_ids that are in the db, but not on the screen (window already closed) $inactive_vnc_window_ids = array_diff($vnc_windows_in_db, $windows_on_screen); foreach ($inactive_vnc_window_ids as $inactive_win_id) { // define vnc-id $inactive_vnc_id = $db->querySingle("SELECT file FROM window WHERE win_id='" . $inactive_win_id . "'"); // delete from database (send to control.php) $curl = curl_init(); curl_setopt_array($curl, array(CURLOPT_RETURNTRANSFER => 1, CURLOPT_URL => CONFIG_CONTROL_FILE_URL . '?window=vncwin&delete=VNC&vncid=' . $inactive_win_id, CURLOPT_USERAGENT => 'PalMA cURL Request')); $resp = curl_exec($curl); curl_close($curl); // print("[Daemon]: inactive vnc_id = $inactive_vnc_id >> add to list: " .serialize($this->_IGNORE_LIST)); } }