Commit 6f104177 by Csók Tamás

client: initial setup.py with Python/C

parent f94bdf73
Desktop client for CIRCLE, providing single click connection to the VMs further enhancing the ease of use.
Python, Selenium, Remmina based application. Tested and made for Debian based Linux systems.
To install the client Root rights are necessary.
The installation guide can be found at the "doc" subfolder, while the installation subfolder is the "dist".
To install simply run the "dist/install.sh" bash script.
Current source code can be found at the "src" subfolder.
#!/usr/bin/env python
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
......
#!/usr/bin/env python
#!/usr/bin/python
# -*- coding: utf-8 -*-
import cloud
......
#!/usr/bin/env python
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
......@@ -11,6 +11,7 @@ import time
import os
import subprocess
import glob
import remminapasswd
def connect(vm):
......@@ -47,7 +48,7 @@ def connect(vm):
config_file = "%s%s%s" % (
os.path.expanduser("~/.remmina/"),
str(int(time.time()*1000)), ".remmina")
password = subprocess.check_output(["remminapasswd", vm.password])
password = remminapasswd.remminapasswd(vm.password)
f = open(config_file, 'w')
if vm.protocol == "NX":
f.write(NX_template)
......
......@@ -11,6 +11,7 @@ import time
import os
import subprocess
import glob
import remminapasswd
def connect(vm):
......@@ -47,7 +48,7 @@ def connect(vm):
config_file = "%s%s%s" % (
os.path.expanduser("~/.remmina/"),
str(int(time.time()*1000)), ".remmina")
password = subprocess.check_output(["remminapasswd", vm.password])
password = remminapasswd.remminapasswd(vm.password)
f = open(config_file, 'w')
if vm.protocol == "NX":
f.write(NX_template)
......
#!/bin/bash
sudo apt-get install sshpass python-pip remmina-plugin-nx remmina-plugin-rdp xdg-user-dirs
sudo pip install selenium
if [ "$(uname -m)" == 'x86_64' ]; then
sudo cp remminapasswd64 /usr/local/bin/remminapasswd
else
sudo cp remminapasswd32 /usr/local/bin/remminapasswd
fi
sudo chmod +x /usr/local/bin/remminapasswd
sudo cp cloud2 /usr/local/bin/
sudo chmod +x /usr/local/bin/cloud2
sudo cp cloud.py /usr/local/bin/
......
#include <Python.h>
#include <glib/gprintf.h>
#include "remmina_pref.h"
#include "remmina_crypt.h"
int main(int argc, char **argv)
{
if (argc == 2) {
char* remmina_password_generate(const char* password) {
remmina_pref_init();
return remmina_crypt_encrypt(password);
}
int main(int argc, char **argv) {
if (argc == 2) {
remmina_pref_init();
g_printf("%s", remmina_crypt_encrypt(argv[1]));
return 0;
......@@ -14,3 +19,20 @@ int main(int argc, char **argv)
}
}
static PyObject* remminapasswd(PyObject* self, PyObject* args) {
const char* password;
if (!PyArg_ParseTuple(args, "s", &password)) {
return NULL;
}
return Py_BuildValue("s", remmina_password_generate(password));
}
static PyMethodDef RemminaPasswdMethods[] = {
{"remminapasswd", remminapasswd, METH_VARARGS, "Genereates a remmina accepted password from a plain text password"},
{NULL, NULL, 0, NULL}
};
PyMODINIT_FUNC initremminapasswd(void) {
(void) Py_InitModule("remminapasswd", RemminaPasswdMethods);
}
\ No newline at end of file
#!/usr/bin/env python
from distutils.core import setup, Extension
import subprocess
# patch distutils if it can't cope with the "classifiers" or
# "download_url" keywords
from sys import version
if version < '2.2.3':
from distutils.dist import DistributionMetadata
DistributionMetadata.classifiers = None
DistributionMetadata.download_url = None
compile_args = ['-DHAVE_LIBGCRYPT']
linker_args = []
def decide_options(arguments, compile_arguments, linker_arguments):
for argument in arguments:
if argument[:2] == '-l':
linker_arguments.append(argument)
else:
compile_arguments.append(argument)
def list_output(cmd):
p = subprocess.Popen(
cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
stdin=subprocess.PIPE)
return p.communicate()[0].split()
cmd = ['pkg-config', '--libs', '--cflags', 'gtk+-2.0', 'glib-2.0']
decide_options(list_output(cmd), compile_args, linker_args)
cmd = ['libgcrypt-config', '--libs', '--cflags']
decide_options(list_output(cmd), compile_args, linker_args)
remminapasswd = Extension('remminapasswd',
sources = ['remminapasswdmodule.c',
'remmina_crypt.c',
'remmina_pref.c',
'remmina_string_array.c'],
extra_compile_args = compile_args,
extra_link_args = linker_args)
setup(name='CIRCLE Client',
version='0.1',
description='Connectivity helper for CIRCLE cloud system',
long_description=('Tool to enhance ease of use of the CIRCLE by '
+'the use of third party connetcion handler programs. These programs '
+'are auto launched and configured by the Client.'),
author='Csok Tamas',
author_email='csok.tamas@cloud.bme.hu',
maintainer='BME IK',
maintainer_email='cloud@ik.bme.hu',
url='http://circlecloud.org/',
scripts=['cloud.py', 'cloud2', 'cloud_connect_from_linux.py'],
classifiers=[
'Development Status :: 4 - Beta',
'Environment :: Web Environment',
'Intended Audience :: End Users/Desktop',
'Intended Audience :: System Administrators',
'Programming Language :: Python/C',
'Topic :: Office/Business',
],
ext_modules=[remminapasswd],
)
\ No newline at end of file
A telepítéshez szükséges összes fájlt valamint a dokumentációt egy tömörített állomány tartalmazza.
1. Csomagoljuk ki az állományt egy tetszőleges helyre.
2. A következő lépésben nyissunk egy terminált és menjünk el (cd parancs) arra a mappára ahova az előbb kitömörí-tettünk.
3. Végül írjuk be: ./install.sh a konzolba.
A telepítés sikeres lefuttatásához szükség lesz majd megadni a jelszavunkat (vagy a rendszergazda jelszavát, helyi beállítástól függő-en).
A többit a szkript automatikusan végzi, amint végzett bezárhatjuk a konzolt és az asztalon megjelent ikonnal használhatjuk is a programot.
A program törlése hasonlóképpen zajlik, a kitömörített mappában adjuk ki a: ./uninstall.sh parancsot terminál segítségével (lsd. telepítés).
A szkript telepítéshez hasonló-an szintén kérni fog jelszót a törlés sikeres elvégzéséhez.
\ No newline at end of file
# fordításhoz szükséges: libglib2.0-dev, libgtk2.0-dev, libgcrypt11-dev
gcc -DHAVE_LIBGCRYPT -o remminapasswd remmina_passwd.c remmina_crypt.c remmina_pref.c remmina_string_array.c -Wall `pkg-config --libs --cflags gtk+-2.0` `libgcrypt-config --cflags --libs`
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment