Последние сообщения

Страницы: [1] 2 3 ... 10
1
Nexenta / Re: Установка Apache mod_rewrite на Nexenta CP 3.0
« Последний ответ от SamantaPa Сегодня в 08:52:15 pm »
GHkyudFFFg!
2
Nexenta / Установка Apache mod_rewrite на Nexenta CP 3 0
« Последний ответ от SamantaPa Август 29, 2018, 06:53:28 pm »
не проще ли использовать real ip ?

в nginx
<IfModule mod_realip.c>
RealIP on xfwd
</IfModule>

в апаче
LoadModule php4_module        etc/apache/libexec/libphp4.so
LoadModule realip_module      etc/apache/libexec/mod_realip.so
# ### Clear Modules List
ClearModuleList
# ### Added Modules
..............
AddModule mod_realip.c
3
Разработки Kirov OSUG / Re: Добавка к терминалу
« Последний ответ от keremet Август 28, 2018, 04:47:26 pm »
#include <gtk/gtk.h>
#include <stdlib.h>
#include <string>
#include <vector>
#include <iostream>
using namespace std;

GtkWidget* vbox;
vector<string> getCommandParts(GtkWidget* hpaned1){
vector<string> vs;
GList* hpaned1List = gtk_container_get_children(GTK_CONTAINER( hpaned1 ));
for(int i=0;i<g_list_length(hpaned1List);i++){
GtkWidget* w1 = (GtkWidget* )g_list_nth_data(hpaned1List, i);
if(GTK_IS_ENTRY(w1)){
string s=gtk_entry_get_text(GTK_ENTRY(w1));
vs.push_back(s);
}else if(GTK_IS_HPANED(w1)){
GList* hpaned2List = gtk_container_get_children(GTK_CONTAINER( w1 ));
for(int i=0;i<g_list_length(hpaned2List);i++){
GtkWidget* w2 = (GtkWidget* )g_list_nth_data(hpaned2List, i);
if(GTK_IS_ENTRY(w2)){
string s=gtk_entry_get_text(GTK_ENTRY(w2));
vs.push_back(s);
}
}
}
}
return vs;
}

void buttonRunClicked(GtkWidget *widget, GtkWidget* hpaned1) {
vector<string> vs=getCommandParts( hpaned1 );
string s;
for(int i=0;i<vs.size();i++)
s+=vs[i];

   cout << s << endl;
   system(s.c_str());
}

void buttonDelClicked(GtkWidget *widget, GtkWidget* hbox) {
gtk_widget_destroy(hbox);
}

void buttonCopyClicked(GtkWidget *widget, GtkWidget* hpaned1);

void createCommand(const char* txtB, const char* txt, const char* txtE) {
GtkWidget* hbox     = gtk_hbox_new(false, 0);
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
gtk_box_reorder_child(GTK_BOX(vbox),hbox, 1);
GtkWidget *hpaned = gtk_hpaned_new ();
gtk_box_pack_start (GTK_BOX (hbox), hpaned, TRUE, TRUE, 0);

GtkWidget *entryRunB = gtk_entry_new ();
gtk_paned_add1 (GTK_PANED (hpaned), entryRunB);

GtkWidget *hpaned2 = gtk_hpaned_new ();
gtk_paned_add2 (GTK_PANED (hpaned), hpaned2);
GtkWidget *entryRun = gtk_entry_new ();
gtk_paned_add1 (GTK_PANED (hpaned2), entryRun);

GtkWidget *entryRunE = gtk_entry_new ();
gtk_paned_add2 (GTK_PANED (hpaned2), entryRunE);


gtk_entry_set_text(GTK_ENTRY(entryRunB), txtB);
gtk_entry_set_text(GTK_ENTRY(entryRun), txt);
gtk_entry_set_text(GTK_ENTRY(entryRunE), txtE);

GtkWidget* buttonRun = gtk_button_new_with_label("Run");
gtk_box_pack_start (GTK_BOX (hbox), buttonRun, FALSE, FALSE, 0);
g_signal_connect( G_OBJECT(buttonRun), "clicked", G_CALLBACK(buttonRunClicked), hpaned);

GtkWidget* buttonCopy = gtk_button_new_with_label("+");
gtk_box_pack_start (GTK_BOX (hbox), buttonCopy, FALSE, FALSE, 0);
g_signal_connect( G_OBJECT(buttonCopy), "clicked", G_CALLBACK(buttonCopyClicked), hpaned);

GtkWidget* buttonDel = gtk_button_new_with_label("-");
gtk_box_pack_start (GTK_BOX (hbox), buttonDel, FALSE, FALSE, 0);
g_signal_connect( G_OBJECT(buttonDel), "clicked", G_CALLBACK(buttonDelClicked), hbox);

gtk_widget_show_all(hbox);
}

void buttonCopyClicked(GtkWidget *widget, GtkWidget* hpaned1) {
vector<string> vs=getCommandParts( hpaned1 );
createCommand(vs[0].c_str(), vs[1].c_str(), vs[2].c_str());
}

int main(int argc, char** argv) {
gtk_init(&argc, &argv);
GtkWidget* window    = gtk_window_new(GTK_WINDOW_TOPLEVEL);
vbox     = gtk_vbox_new(false, 0);
gtk_container_add(GTK_CONTAINER(window), vbox);

createCommand("ls", "", "");
createCommand("ls|wc -l", "", "");
g_signal_connect( G_OBJECT(window),  "delete_event", G_CALLBACK(gtk_main_quit), 0);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
4
Разработки Kirov OSUG / Re: Обращение к ядру на ассемблере
« Последний ответ от keremet Январь 11, 2018, 11:10:10 am »
//gcc write2.c -nostdlib -lc
Значение переменных окружения
$ LD_LIBRARY_PATH=/lib time ./a.out
qwe

real        0.0
user        0.0
sys         0.0

sundev@sunhost:~/dwm$ time ./a.out
qwe

real   0m0.002s
user   0m0.000s
sys   0m0.002s


#define ECHO(S) write(1, S"\n", sizeof(S))

void _start(){
   ECHO("qwe");
   exit(0);
}
5
OpenIndiana / Как работает вход через консоль
« Последний ответ от keremet Январь 10, 2018, 12:03:01 pm »
 svcs -l svc:/system/console-login:default
logfile      /var/svc/log/system-console-login:default.log
contract_id  142

по логу видно, что запускается /lib/svc/method/console-login

pgrep -c 142

sudo pargs 955
955:   /usr/sbin/ttymon -g -d /dev/console -l console -m ldterm,ttcompat -h -p sunhost
argv[0]: /usr/sbin/ttymon
argv[1]: -g
argv[2]: -d
argv[3]: /dev/console
argv[4]: -l
argv[5]: console
argv[6]: -m
argv[7]: ldterm,ttcompat
argv[8]: -h
argv[9]: -p
argv[10]: sunhost console login:



А потом запускается login
https://github.com/illumos/illumos-gate/blob/bccbd30bb6d0c20635d3f23e8d63f3f8170d3c46/usr/src/cmd/login/login.c
7
Разработки Kirov OSUG / Разделяемая память
« Последний ответ от keremet Декабрь 03, 2017, 04:20:20 pm »
/* Программа 2 (06-1b.с) для иллюстрации работы с
разделяемой памятью */
/* Мы организуем разделяемую память для массива из
трех целых чисел. Первый элемент массива является
счетчиком числа запусков программы 1, т. е. данной
программы, второй элемент массива – счетчиком числа
запусков программы 2, третий элемент массива –
счетчиком числа запусков обеих программ */
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <stdio.h>
#include <errno.h>
int main()
{
    int *array;   /* Указатель на разделяемую память */
    int shmid;    /* IPC дескриптор для области разделяемой памяти */
    int new = 1;  /* Флаг необходимости инициализации элементов массива */
    char pathname[] = "1.c"; /* Имя файла,
        используемое для генерации ключа. Файл с таким
        именем должен существовать в текущей директории */
    key_t key;    /* IPC ключ */
    /* Генерируем IPC ключ из имени файла 06-1a.c в
    текущей директории и номера экземпляра области
    разделяемой памяти 0 */
    if((key = ftok(pathname,0)) < 0){
        printf("Can\'t generate key\n");
        exit(-1);
    }
    /* Пытаемся эксклюзивно создать разделяемую память
    для сгенерированного ключа, т.е. если для этого
    ключа она уже существует, системный вызов вернет
    отрицательное значение. Размер памяти определяем
    как размер массива из трех целых переменных, права
    доступа 0666 – чтение и запись разрешены для всех */
    if((shmid = shmget(key, 100*1024*1024,
        0666|IPC_CREAT|IPC_EXCL)) < 0){
    /* В случае возникновения ошибки пытаемся определить:
    возникла ли она из-за того, что сегмент разделяемой
    памяти уже существует или по другой причине */
        if(errno != EEXIST){
            /* Если по другой причине – прекращаем работу */
            printf("Can\'t create shared memory\n");
            exit(-1);
        } else {
            /* Если из-за того, что разделяемая память уже
            существует, то пытаемся получить ее IPC дескриптор
            и, в случае удачи, сбрасываем флаг необходимости
            инициализации элементов массива */
            if((shmid = shmget(key, 100*1024*1024, 0)) < 0){
                printf("Can\'t find shared memory\n");
                exit(-1);
            }
            new = 0;
        }
    }
    /* Пытаемся отобразить разделяемую память в адресное
    пространство текущего процесса. Обратите внимание на то,
    что для правильного сравнения мы явно преобразовываем
    значение -1 к указателю на целое.*/
    if((array = (int *)shmat(shmid, NULL, 0)) ==
        (int *)(-1)){
        printf("Can't attach shared memory\n");
        exit(-1);
    }
    /* В зависимости от значения флага new либо
    инициализируем массив, либо увеличиваем
    соответствующие счетчики */
    if(new){
        array[0] = 0;
        array[1] = 1;
        array[2] = 1;
    } else {
        array[1] += 1;
        array[2] += 1;
    }
    /* Печатаем новые значения счетчиков, удаляем разделяемую
    память из адресного пространства текущего процесса и
    завершаем работу */
    printf("Program 1 was spawn %d times, program 2 - %d times, total - %d times\n",
    array[0], array[1], array[2]);
    getchar();
    if(shmdt((char*)array) < 0){
        printf("Can't detach shared memory\n");
        exit(-1);
    }
    printf("shmdt executed\n");
    getchar();
    return 0;
}
8
Разработки Kirov OSUG / Re: Обращение к ядру на ассемблере
« Последний ответ от keremet Июнь 30, 2017, 12:09:57 pm »
gcc -O3 -fno-ident -I. -DLOCALE=\"ru_RU.UTF-8\" -c  set_lng.c
ld -s set_lng.o

Размер исполняемого файла около 500байт, но программа работает не на всех машинах. Может выдать ошибку Illegal Instruction (core dumped)
9
OpenIndiana / Ошибка pkg
« Последний ответ от keremet Декабрь 08, 2016, 05:28:34 pm »
$ sudo pkg install  pkg:/developer/gnu-binutils@2.25.1-2016.0.1.2
Linked image publisher check
Traceback (most recent call last):
  File "/usr/bin/pkg", line 5444, in handle_errors
    __ret = func(*args, **kwargs)
  File "/usr/bin/pkg", line 5430, in main_func
    pargs=pargs, **opts)
  File "/usr/bin/pkg", line 2100, in install
    display_plan_cb=display_plan_cb, logger=logger)
  File "/usr/lib/python2.7/vendor-packages/pkg/client/client_api.py", line 1554, in _install
    logger=logger)
  File "/usr/lib/python2.7/vendor-packages/pkg/client/client_api.py", line 1442, in __api_op
    logger=logger, **kwargs)
  File "/usr/lib/python2.7/vendor-packages/pkg/client/client_api.py", line 1313, in __api_plan
    display_plan_cb=display_plan_cb)
  File "/usr/lib/python2.7/vendor-packages/pkg/client/client_api.py", line 1285, in __api_plan
    for pd in api_plan_func(**kwargs):
  File "/usr/lib/python2.7/vendor-packages/pkg/client/api.py", line 1517, in __plan_op
    log_op_end_all=True)
  File "/usr/lib/python2.7/vendor-packages/pkg/client/api.py", line 1427, in __plan_op
    self.__linked_pubcheck(_op)
  File "/usr/lib/python2.7/vendor-packages/pkg/client/api.py", line 1610, in __linked_pubcheck
    self._img.linked.api_recurse_pubcheck(self.__progresstracker)
  File "/usr/lib/python2.7/vendor-packages/pkg/client/linkedimage/common.py", line 2367, in api_recurse_pubcheck
    _failfast=False))
  File "/usr/lib/python2.7/vendor-packages/pkg/client/linkedimage/common.py", line 2057, in __children_op
    stage=pkgdefs.API_STAGE_DEFAULT
  File "/usr/lib/python2.7/vendor-packages/pkg/client/linkedimage/common.py", line 2159, in __children_op_vec
    _syncmd_tmp, **kwargs)
  File "/usr/lib/python2.7/vendor-packages/pkg/client/linkedimage/common.py", line 3229, in child_op_setup
    self.__child_setup_pubcheck(_pmd, **kwargs)
  File "/usr/lib/python2.7/vendor-packages/pkg/client/linkedimage/common.py", line 3187, in __child_setup_pubcheck
    pkgdefs.PKG_OP_PUBCHECK)
  File "/usr/lib/python2.7/vendor-packages/pkg/client/pkgremote.py", line 408, in setup
    self.__rpc_server_setup(img_path)
  File "/usr/lib/python2.7/vendor-packages/pkg/client/pkgremote.py", line 163, in __rpc_server_setup
    rpc_client = pkg.pipeutils.PipedServerProxy(client_cmd_pipe)
  File "/usr/lib/python2.7/vendor-packages/pkg/pipeutils.py", line 628, in __init__
    http_enc=http_enc)
  File "/usr/lib/python2.7/vendor-packages/pkg/pipeutils.py", line 412, in __init__
    rpc.Transport.__init__(self)
TypeError: __init__() takes exactly 2 arguments (1 given)


pkg: This is an internal error in pkg(5) version b2f36a5.  Please log a
Service Request about this issue including the information above and this
message.



Решение:
vi /usr/lib/python2.7/vendor-packages/pkg/pipeutils.py.

Добавить в секцию импорта:
import jsonrpclib.config as rpcconfig

Изменить строку 412 (теперь 413) на:
rpc.Transport.__init__(self,config=rpcconfig.DEFAULT)
10
Сеть, сетевые сервисы, сетевой софт / Ekiga 4.0.1
« Последний ответ от keremet Декабрь 08, 2016, 05:15:15 am »
Открывает порты на каждом сетевом интерфейсе. Хотелось бы, чтобы открывала только на заданном.

Посмотрим, где это происходит
Для начала поставим gc++filt, если его еще нет
sudo pkg install pkg:/developer/gnu-binutils@2.25.1-2016.0.1.2
Запустим скрипт, а  потом екигу
sudo dtrace -n 'syscall::so_socket:entry/execname=="ekiga"/{ if((arg0 == 2)&&(arg1 == 2)&&(arg2 == 0)){ustack(); printf("family = %d, type_w_flags = %d, protocol = %d\n", arg0, arg1, arg2);} }'|gc++filt
dtrace: description 'syscall::so_socket:entry' matched 5 probes
CPU     ID                    FUNCTION:NAME
  0  12832                  so_socket:entry
              libc.so.1`_so_socket+0x15
              libsocket.so.1`__xnet_socket+0x23
              libpt.so.2.10.11`PSocket::os_socket(int, int, int)+0x25
              libpt.so.2.10.11`PTCPSocket::OpenSocket(int)+0x29
              libpt.so.2.10.11`PIPSocket::Listen(PIPSocket::Address const&, unsigned int, unsigned short, PSocket::Reusability)+0x1fe
              libpt.so.2.10.11`PTCPSocket::Listen(PIPSocket::Address const&, unsigned int, unsigned short, PSocket::Reusability)+0x2b
              libopal.so.3.10.10`OpalListenerTCP::Open(PNotifierTemplate<int> const&, OpalListener::ThreadMode)+0x1e6
              libopal.so.3.10.10`OpalEndPoint::StartListener(OpalListener*)+0xaf
              libopal.so.3.10.10`OpalEndPoint::StartListener(OpalTransportAddress const&)+0x17b
              libopal.so.3.10.10`OpalEndPoint::StartListeners(PStringArray const&)+0x104
              libekiga.so`Opal::H323::EndPoint::set_listen_port(unsigned int)+0x11f
              libekiga.so`Opal::H323::EndPoint::EndPoint(Opal::CallManager&, Ekiga::ServiceCore&, unsigned int, unsigned int)+0x1e2
              libekiga.so`OPALSpark::try_initialize_more(Ekiga::ServiceCore&, int*, char***)+0x8da
              libekiga.so`Ekiga::KickStart::kick(Ekiga::ServiceCore&, int*, char***)+0x2c0
              libekiga.so`engine_init(boost::shared_ptr<Ekiga::ServiceCore>, int, char**)+0x838
              ekiga`main+0x30e
              ekiga`_start+0x83
family = 2, type_w_flags = 2, protocol = 0

COMPONENT_NAME=opal
COMPONENT_VERSION=3.10.10
COMPONENT_SRC=$(COMPONENT_NAME)-$(COMPONENT_VERSION)
COMPONENT_ARCHIVE= $(COMPONENT_SRC).tar.xz

wget http://ftp.gnome.org/pub/GNOME/sources/$COMPONENT_NAME/3.10/$COMPONENT_ARCHIVE

wget http://ftp.gnome.org/pub/GNOME/sources/ekiga/4.0/ekiga-4.0.1.tar.xz

Протокол UDP
sudo soconfig -l

sudo dtrace -n 'syscall::so_socket:entry/execname=="ekiga"/{ if(((arg0 == 2)||(arg0 == 26))&&(arg1 == 1)){ustack(); printf("family = %d, type_w_flags = %d, protocol = %d\n", arg0, arg1, arg2);} }'|gc++filt




  1   8082                  so_socket:entry
              libc.so.1`_so_socket+0x7
              libsocket.so.1`__xnet_socket+0x23
              libpt.so.2.10.11`PSocket::os_socket(int, int, int)+0x25
              libpt.so.2.10.11`PUDPSocket::OpenSocket(int)+0x29
              libpt.so.2.10.11`PUDPSocket::PUDPSocket(unsigned short, int)+0xfd
              libpt.so.2.10.11`PMonitoredSockets::CreateSocket(PMonitoredSockets::SocketInfo&, PIPSocket::Address const&)+0x91
              libpt.so.2.10.11`PMonitoredSocketBundle::OpenSocket(PString const&)+0x56
              libpt.so.2.10.11`PMonitoredSocketBundle::Open(unsigned short)+0xc5
              libopal.so.3.10.10`OpalListenerUDP::Open(PNotifierTemplate<int> const&, OpalListener::ThreadMode)+0x3c
              libopal.so.3.10.10`OpalEndPoint::StartListener(OpalListener*)+0xaf
              libopal.so.3.10.10`OpalEndPoint::StartListener(OpalTransportAddress const&)+0x17b
              libopal.so.3.10.10`OpalEndPoint::StartListeners(PStringArray const&)+0x104
              libekiga.so`Opal::Sip::EndPoint::set_listen_port(unsigned int)+0x13c
              libekiga.so`Opal::Sip::EndPoint::EndPoint(Opal::CallManager&, Ekiga::ServiceCore&, unsigned int)+0x550
              libekiga.so`OPALSpark::try_initialize_more(Ekiga::ServiceCore&, int*, char***)+0x811
              libekiga.so`Ekiga::KickStart::kick(Ekiga::ServiceCore&, int*, char***)+0x2c0
              libekiga.so`engine_init(boost::shared_ptr<Ekiga::ServiceCore>, int, char**)+0x838
              ekiga`main+0x30e
              ekiga`_start+0x83
family = 2, type_w_flags = 1, protocol = 0

Поменял тут: libekiga.so`Opal::Sip::EndPoint::set_listen_port(unsigned int)
ekiga-4.0.1/lib/engine/components/opal/sip-endpoint.cpp
Opal::Sip::EndPoint::set_listen_port (unsigned port)
{
  unsigned udp_min, udp_max;

  listen_iface.protocol = "udp";
  listen_iface.voip_protocol = "sip";
  listen_iface.id = "*";

  manager.get_udp_ports (udp_min, udp_max);

  if (port > 0) {

    std::stringstream str;
    RemoveListener (NULL);

    str << "udp$192.168.1.1:" << port; //!
    if (!StartListeners (PStringArray (str.str ()))) {

      port = udp_min;
      str << "udp$*:" << port;
      while (port <= udp_max) {

        if (StartListeners (PStringArray (str.str ()))) {

          listen_iface.port = port;
          return true;
        }

        port++;
      }
    }
    else {
      listen_iface.port = port;
      return true;
    }
  }

  return false;
}


Отключить STUN
#define NAT_KEY "/apps/" PACKAGE_NAME "/general/nat/"

  else if (key == NAT_KEY "stun_server") {

    gchar* stun_server = gm_conf_entry_get_string (entry);
    manager.set_stun_server (stun_server ? stun_server : "stun.ekiga.net");
    g_free (stun_server);
  }
  else if (key == NAT_KEY "enable_stun") {

    manager.set_stun_enabled (gm_conf_entry_get_bool (entry));
  }
Страницы: [1] 2 3 ... 10