Для этого необходимо в строке запуска rdesktop указать параметр нового имени хоста для которого мы хотим получить лицензию:
# rdesktop -n new_client_hostname serverЕсли бегло взглянуть на исходный код rdesktop 1.6, можно увидеть попытку сохранения лицензий в файл $HOME/.rdesktop/licence.new и переименовывания в файл $HOME/.rdesktop/licence.$HOSTNAME
void save_licence(unsigned char *data, int length) { char *home, *path, *tmppath; int fd; home = getenv("HOME"); if (home == NULL) return; path = (char *) xmalloc(strlen(home) + strlen(g_hostname) + sizeof("/.rdesktop/licence.")); sprintf(path, "%s/.rdesktop", home); if ((mkdir(path, 0700) == -1) && errno != EEXIST) { perror(path); return; } /* write licence to licence.hostname.new, then atomically rename to licence.hostname */ sprintf(path, "%s/.rdesktop/licence.%s", home, g_hostname); tmppath = (char *) xmalloc(strlen(path) + sizeof(".new")); strcpy(tmppath, path); strcat(tmppath, ".new"); fd = open(tmppath, O_WRONLY | O_CREAT | O_TRUNC, 0600); if (fd == -1) { perror(tmppath); return; } if (write(fd, data, length) != length) { perror(tmppath); unlink(tmppath); } else if (rename(tmppath, path) == -1) { perror(path); unlink(tmppath); } close(fd); xfree(tmppath); xfree(path); }И чтения от туда же:
int load_licence(unsigned char **data) { char *home, *path; struct stat st; int fd, length; home = getenv("HOME"); if (home == NULL) return -1; path = (char *) xmalloc(strlen(home) + strlen(g_hostname) + sizeof("/.rdesktop/licence.")); sprintf(path, "%s/.rdesktop/licence.%s", home, g_hostname); fd = open(path, O_RDONLY); if (fd == -1) return -1; if (fstat(fd, &st)) return -1; *data = (uint8 *) xmalloc(st.st_size); length = read(fd, *data, st.st_size); close(fd); xfree(path); return length; }В установленной версии 1.5 тоже есть такие-же шаблоны.
# strings rdesktop | grep .rdesktop/lic %s/.rdesktop/licence.%s %s/.rdesktop/licence.%sНо сохранённых лицензий на давно работающей системе нет (пользователи работают с rdesktop).
Участник конференции на freshmeat louigi600 предложил даже скрипт обёртку для rdesktop генерирующий новое имя хоста (перед этим он пробует использовать все имеющиеся).
Для устройств SunRay удалить старые лицензии можно так.
Для устройств Windows удалить старые лицензии можно так.
Комментариев нет:
Отправить комментарий