Pular para o conteúdo principal

Postagens

Mostrando postagens de 2011

Retornando o Número de Série do HD em C - Linux

#include stdio.h
#include fcntl.h
#include string.h
#include linux/hdreg.h


char* retornaID(char *drive){
  struct hd_driveid hd;
  int ide;
  ide=open(drive,O_RDONLY);
  ioctl (ide,HDIO_GET_IDENTITY,&hd);
  char *did = (char *) malloc(strlen(hd.serial_no) + 1);
  strncpy(did,hd.serial_no, sizeof(hd.serial_no));
  return did;
}


int main()
{
  char *drive = "/dev/hda";
  printf("ID: %s\n", retornaID(drive));
}

Retornando o Número de Série do HD em C - Windows

#include iostream.h
#include stdio.h
#include windows.h


DWORD retornaID(char *drive){
      BOOL fResult;
      char *pszDriveName;

      char szVolName[MAX_PATH];
      char szFileSysName[80];
      DWORD dwSerialNumber;
      DWORD dwMaxComponentLen;
      DWORD dwFileSysFlags;

      pszDriveName = drive;

      fResult = GetVolumeInformation(pszDriveName, szVolName, MAX_PATH,
      &dwSerialNumber, &dwMaxComponentLen,
      &dwFileSysFlags, szFileSysName, 80);

      return dwSerialNumber;
}


int main (int argc, char **argv)
{
    char *drive = "c:\\";
    printf("ID: %#ld\n", retornaID(drive));
    system("PAUSE"); 
}

JavaMail vários destinatários

Boa madrugada,
Estou meio afastado do blog (mais uma vez) por motivos de trabalho. Estou muito envolvido no desenvolvimento de um sistema que está me roubando todo o tempo. Mas dei uma "passadinha" rápida aqui para mostrar a solução pra um problema que tive hoje: usar o javamail para enviar emails para mais de um destinatário.
Nem é tão difícil assim, mas acho que a falta de exemplos na Internet faz com que pareça ser.
Vamos lá então:
Quando vamos criar a mensagem a ser enviada, precisamos passar as seguintes informações básicas: AssuntoConteúdo da mensagemRemetenteDestinatário(s)
É algo mais ou menos assim:
MimeMessage message = new MimeMessage(mailSession); message.setSubject(email.getAssunto()); message.setContent(email.getMensagem(), "text/plain"); message.setFrom(new InternetAddress(email.getRemetente())); message.addRecipients(Message.RecipientType.TO, "DESTINATÁRIOS"));
Bem, nesta ultima linha é onde definimos o(s) destinatário(s). E é esta última linha que es…

IPF - Inserir regras via linha de comando

O IPF (IP Filter - Filtro de pacotes padrão do NetBSD) não tem um comando para adicionar regras numa lista existente. Para fazer isso, por padrão, nós precisamos usar o comando echo para enviar a nova regra para o comando ipf com a opção -f -. Isso ficaria mais ou menos assim:

alacerda# echo 'block in quick all' | ipf -f -
Para cada regra que quisermos adicionar, precisaremos fazer isso. Então fiz um script pra resolver essa situação:

alacerda# cat ipfaddecho $* | ipf -f - == Como funciona
Criei um arquivo chamado ipfadd e inseri APENAS uma linha nele. Esta linha pega os argumentos passados para o script e envia para o ipf -f - (como precisaríamos fazer na mão grande).

== Importante
Não esquecer de dar permissão de execução para o script:

alacerda# chmod +x ipfaddalacerda# ls -l ipfadd-rwxr-xr-x 1 root wheel 19 Mar 3 01:11 ipfadd
Para usar ele sem incômodos copiamos para a pasta /sbin:

alacerda# cp ipfadd /sbin
Pronto. Agora adicionar regras à lista do IPF ficou mais fácil. P…

C String endswith

Essa função recebe duas strings e as compara. Caso sejam iguais ela retorna 1, caso contrário ela retorna 0.
== Cabeçalho (strext.h)

/*$NetBSD: strext.h, v1.0 2011/02/21 06:36 alacerda Exp $ */

#include

int endswith(char *str, char  *fil){
  int tamstr = strlen(str);
  int tamfil = strlen(fil);
  int retorno = 0;

  for (; tamfil > 0; tamfil--, tamstr--){
    if (str[tamstr-1] == fil[tamfil-1]){
      retorno = 1;
    } else {
      retorno = 0;
      return retorno;
    }
  }
  return retorno;
}



== Exemplo (código)
/* Estou incluindo o caminho completo para o cabeçalho stdio.h por que o blog não aceita
que eu coloque os simbolos de "maior que" e "menor que".
*/
#include "/usr/include/stdio.h"
#include "strext.h" //AQUI ESTOU CHAMANDO O CABEÇALHO

int main(int argc, char *argv[]){
char *nome = argv[1];
char *ext = "argv[2];

if(endswith(nome, ext) == 1){
printf("Sao iguais.\n");
} else {
printf("Sao diferentes.\n");
}
}

== E…

HUNTER - Varrendo e Organizando arquivos

-------------- Hunter.bat --------------
@echo off
SET PASTA="%temp%\hunter"

IF /I "%~2"=="h" (
GOTO AJUDA
) ELSE IF /I "%~1"=="h" (
GOTO AJUDA
) ELSE IF "%~1"=="" (
GOTO AJUDA
)

IF EXIST %PASTA% (
rd %PASTA%
)

mkdir %PASTA%

type NUL > saida.txt

for /R %1 %%i in (%~2) DO (
echo %%i >> saida.txt
)

for /F "usebackq delims==" %%i IN (saida.txt) DO (
IF EXIST %"PASTA%\%%~ni%%~xi" (
move "%%i" "%PASTA%\b%%~ni%%~xi"
) ELSE (
move "%%i" "%PASTA%\" )
)

move %PASTA% .
GOTO FIM

:AJUDA
Echo ----------------------------------------------------
Echo USO: %0 [LOCAL] ["*.txt *.pdf *.zip"]
Echo Faz-se necessario o uso das aspas ("")
Echo ----------------------------------------------------
GOTO FIM

:FIM
Echo --------------------------------------------
Echo Hunter - Por ALan MeC Lacerda
Echo 19/02/2011 Toda diversao reserva…

OpenVPN no CentOS

Oba oba!!! \0/
Estou de volta para guardar mais uma informação útil! A instalação do OpenVPN no CentOS. Vou mostrar aqui de maneira bem direta a instalação e configuração que já realizei em diversos ambientes.

STARTING...


1. Instale o repositório RPMForge:
wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.1-1.el5.rf.i386.rpm rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt rpm -K rpmforge-release-0.5.1-1.el5.rf.*.rpm rpm -i rpmforge-release-0.5.1-1.el5.rf.*.rpm

2. Verifique se o RPMForge aparece na lista de repositórios:
yum check-update
3. Instale o OpenVPN yum install openvpn -y
4. Iniciando a configuração: cp -pra /usr/share/openvpn/2.0/easy-rsa /etc/openvpn cd /etc/openvpn/easy-rsa . ./vars ./clean-all ./build-ca

5. Criando a chave para o servidor:
./build-key-server server

6. Criando a chave para o cliente:
./build-key cliente

7. Gerando um Diff Hellman (DH) no servidor:
./build-dh
dentro do diretório /etc/openvpn/ encontra-se um arquivo chamado server.conf (se não exist…