OpenVAS Manager  7.0.3~git
lsc_user.c File Reference
#include <glib.h>
#include <glib/gstdio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <openvas/base/openvas_file.h>
Include dependency graph for lsc_user.c:

Go to the source code of this file.

Macros

#define G_LOG_DOMAIN   "md manage"
 GLib log domain. More...
 

Functions

int lsc_user_keys_create (const gchar *password, gchar **private_key)
 Create local security check (LSC) keys. More...
 
int lsc_user_rpm_recreate (const gchar *name, const char *public_key, void **rpm, gsize *rpm_size)
 Recreate RPM package. More...
 
gchar * lsc_user_deb_create (const gchar *user, const gchar *rpm_file)
 Create a Debian package from an LSC user RPM package. More...
 
int lsc_user_deb_recreate (const gchar *name, const char *rpm, gsize rpm_size, void **deb, gsize *deb_size)
 Recreate Debian package. More...
 
int lsc_user_exe_recreate (const gchar *name, const gchar *password, void **exe, gsize *exe_size)
 Recreate NSIS package. More...
 

Macro Definition Documentation

◆ G_LOG_DOMAIN

#define G_LOG_DOMAIN   "md manage"

GLib log domain.

Definition at line 44 of file lsc_user.c.

Function Documentation

◆ lsc_user_deb_create()

gchar* lsc_user_deb_create ( const gchar *  user,
const gchar *  rpm_file 
)

Create a Debian package from an LSC user RPM package.

Parameters
[in]userName of user.
[in]rpm_fileLocation of the RPM file.
Returns
Debian package file name on success, else NULL.

Definition at line 564 of file lsc_user.c.

565 {
566  gchar *dirname = g_path_get_dirname (rpm_file);
567  gchar *dir = g_strconcat (dirname, "/", NULL);
568  gchar *basename = g_path_get_basename (rpm_file);
569  gchar *down_user = g_ascii_strdown (user ? user : "user", -1);
570  gchar *deb_name = g_strdup_printf ("%s/openvas-lsc-target-%s_0.5-1_all.deb",
571  dirname, down_user);
572 
573  g_free (dirname);
574  g_free (down_user);
575 
576  if (execute_alien (dir, basename))
577  {
578  g_free (dir);
579  g_free (basename);
580  g_free (deb_name);
581  return NULL;
582  }
583 
584  g_free (dir);
585  g_free (basename);
586 
587  return deb_name;
588 }

◆ lsc_user_deb_recreate()

int lsc_user_deb_recreate ( const gchar *  name,
const char *  rpm,
gsize  rpm_size,
void **  deb,
gsize *  deb_size 
)

Recreate Debian package.

Parameters
[in]nameUser name.
[in]rpmRPM package.
[in]rpm_sizeSize of RPM package, in bytes.
[out]debDebian package.
[out]deb_sizeSize of Debian package, in bytes.
Returns
0 success, -1 error.

Definition at line 602 of file lsc_user.c.

Referenced by credential_iterator_deb().

604 {
605  GError *error;
606  char deb_dir[] = "/tmp/deb_XXXXXX";
607  char rpm_dir[] = "/tmp/rpm_XXXXXX";
608  gchar *deb_path, *rpm_path;
609  int ret = -1;
610 
611  if (alien_found () == FALSE)
612  {
613  g_warning ("%s: Need \"alien\" to make DEBs\n", __FUNCTION__);
614  return -1;
615  }
616 
617  /* Make a directory for the RPM. */
618 
619  if (mkdtemp (rpm_dir) == NULL)
620  return -1;
621 
622  /* Write RPM to disk. */
623 
624  error = NULL;
625  rpm_path = g_build_filename (rpm_dir, "p.rpm", NULL);
626  g_file_set_contents (rpm_path, rpm, rpm_size, &error);
627  if (error)
628  goto free_exit;
629 
630  /* Create Debian package. */
631 
632  if (mkdtemp (deb_dir) == NULL)
633  goto free_exit;
634  deb_path = lsc_user_deb_create (name, rpm_path);
635  if (deb_path == NULL)
636  goto rm_exit;
637 
638  /* Read the package into memory. */
639 
640  error = NULL;
641  g_file_get_contents (deb_path, (gchar **) deb, deb_size, &error);
642  g_free (deb_path);
643  if (error)
644  {
645  g_error_free (error);
646  goto rm_exit;
647  }
648 
649  /* Return. */
650 
651  ret = 0;
652 
653  rm_exit:
654 
655  openvas_file_remove_recurse (deb_dir);
656 
657  free_exit:
658 
659  g_free (rpm_path);
660 
661  openvas_file_remove_recurse (rpm_dir);
662 
663  return ret;
664 }
gchar * lsc_user_deb_create(const gchar *user, const gchar *rpm_file)
Create a Debian package from an LSC user RPM package.
Definition: lsc_user.c:564
char name[1]
Definition: lsc_crypt.c:78
Here is the caller graph for this function:

◆ lsc_user_exe_recreate()

int lsc_user_exe_recreate ( const gchar *  name,
const gchar *  password,
void **  exe,
gsize *  exe_size 
)

Recreate NSIS package.

Parameters
[in]nameUser name.
[in]passwordPassword.
[out]exeNSIS package.
[out]exe_sizeSize of NSIS package, in bytes.
Returns
0 success, -1 error.

Definition at line 883 of file lsc_user.c.

Referenced by credential_iterator_exe().

885 {
886  GError *error;
887  char exe_dir[] = "/tmp/exe_XXXXXX";
888  gchar *exe_path;
889  int ret = -1;
890 
891  if (alien_found () == FALSE)
892  {
893  g_warning ("%s: Need \"alien\" to make EXEs\n", __FUNCTION__);
894  return -1;
895  }
896 
897  /* Create NSIS package. */
898 
899  if (mkdtemp (exe_dir) == NULL)
900  return -1;
901  exe_path = g_build_filename (exe_dir, "p.nsis", NULL);
902  if (lsc_user_exe_create (name, password, exe_path))
903  goto rm_exit;
904 
905  /* Read the package into memory. */
906 
907  error = NULL;
908  g_file_get_contents (exe_path, (gchar **) exe, exe_size, &error);
909  if (error)
910  {
911  g_error_free (error);
912  goto rm_exit;
913  }
914 
915  /* Return. */
916 
917  ret = 0;
918 
919  rm_exit:
920 
921  openvas_file_remove_recurse (exe_dir);
922 
923  g_free (exe_path);
924 
925  return ret;
926 }
char name[1]
Definition: lsc_crypt.c:78
Here is the caller graph for this function:

◆ lsc_user_keys_create()

int lsc_user_keys_create ( const gchar *  password,
gchar **  private_key 
)

Create local security check (LSC) keys.

Parameters
[in]passwordPassword.
[out]private_keyPrivate key.
Returns
0 success, -1 error.

Definition at line 177 of file lsc_user.c.

179 {
180  GError *error;
181  gsize length;
182  char key_dir[] = "/tmp/openvas_key_XXXXXX";
183  gchar *key_path = NULL;
184  int ret = -1;
185 
186  /* Make a directory for the keys. */
187 
188  if (mkdtemp (key_dir) == NULL)
189  return -1;
190 
191  /* Create private key. */
192  key_path = g_build_filename (key_dir, "key", NULL);
193  if (create_ssh_key ("Key generated by OpenVAS Manager", password, key_path))
194  goto free_exit;
195 
196  error = NULL;
197  g_file_get_contents (key_path, private_key, &length, &error);
198  if (error)
199  {
200  g_error_free (error);
201  goto free_exit;
202  }
203  ret = 0;
204  free_exit:
205 
206  g_free (key_path);
207  openvas_file_remove_recurse (key_dir);
208  return ret;
209 }

◆ lsc_user_rpm_recreate()

int lsc_user_rpm_recreate ( const gchar *  name,
const char *  public_key,
void **  rpm,
gsize *  rpm_size 
)

Recreate RPM package.

Parameters
[in]nameUser name.
[in]public_keyPublic key.
[out]rpmRPM package.
[out]rpm_sizeSize of RPM package, in bytes.
Returns
0 success, -1 error.

Definition at line 416 of file lsc_user.c.

Referenced by credential_iterator_deb(), and credential_iterator_rpm().

418 {
419  GError *error;
420  char rpm_dir[] = "/tmp/rpm_XXXXXX";
421  char key_dir[] = "/tmp/key_XXXXXX";
422  gchar *rpm_path, *public_key_path;
423  int ret = -1;
424 
425  if (alien_found () == FALSE)
426  {
427  g_warning ("%s: Need \"alien\" to make RPMs\n", __FUNCTION__);
428  return -1;
429  }
430 
431  /* Make a directory for the key. */
432 
433  if (mkdtemp (key_dir) == NULL)
434  return -1;
435 
436  /* Write public key to file. */
437 
438  error = NULL;
439  public_key_path = g_build_filename (key_dir, "key.pub", NULL);
440  g_file_set_contents (public_key_path, public_key, strlen (public_key),
441  &error);
442  if (error)
443  goto free_exit;
444 
445  /* Create RPM package. */
446 
447  if (mkdtemp (rpm_dir) == NULL)
448  goto free_exit;
449  rpm_path = g_build_filename (rpm_dir, "p.rpm", NULL);
450  g_debug ("%s: rpm_path: %s", __FUNCTION__, rpm_path);
451  if (lsc_user_rpm_create (name, public_key_path, rpm_path) == FALSE)
452  {
453  g_free (rpm_path);
454  goto rm_exit;
455  }
456 
457  /* Read the package into memory. */
458 
459  error = NULL;
460  g_file_get_contents (rpm_path, (gchar **) rpm, rpm_size, &error);
461  g_free (rpm_path);
462  if (error)
463  {
464  g_error_free (error);
465  goto rm_exit;
466  }
467 
468  /* Return. */
469 
470  ret = 0;
471 
472  rm_exit:
473 
474  openvas_file_remove_recurse (rpm_dir);
475 
476  free_exit:
477 
478  g_free (public_key_path);
479 
480  openvas_file_remove_recurse (key_dir);
481 
482  return ret;
483 }
char name[1]
Definition: lsc_crypt.c:78
Here is the caller graph for this function: